06 Feb, 2009

1 commit


05 Feb, 2009

1 commit

  • Now that x86-64 has directly accessible percpu variables, it can also
    implement the direct versions of these operations, which operate on a
    vcpu_info structure directly embedded in the percpu area.

    In fact, the 64-bit versions are more or less identical, and so can be
    shared. The only two differences are:
    1. xen_restore_fl_direct takes its argument in eax on 32-bit, and rdi on 64-bit.
    Unfortunately it isn't possible to directly refer to the 2nd lsb of rdi directly
    (as you can with %ah), so the code isn't quite as dense.
    2. check_events needs to variants to save different registers.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: H. Peter Anvin

    Jeremy Fitzhardinge
     

16 Jul, 2008

1 commit


25 Apr, 2008

4 commits


17 Apr, 2008

1 commit


27 Mar, 2008

1 commit

  • xen_irq_enable_direct and xen_sysexit were using "andw $0x00ff,
    XEN_vcpu_info_pending(vcpu)" to unmask events and test for pending ones
    in one instuction.

    Unfortunately, the pending flag must be modified with a locked operation
    since it can be set by another CPU, and the unlocked form of this
    operation was causing the pending flag to get lost, allowing the processor
    to return to usermode with pending events and ultimately deadlock.

    The simple fix would be to make it a locked operation, but that's rather
    costly and unnecessary. The fix here is to split the mask-clearing and
    pending-testing into two instructions; the interrupt window between
    them is of no concern because either way pending or new events will
    be processed.

    This should fix lingering bugs in using direct vcpu structure access too.

    [ Stable: needed in 2.6.24.x ]

    Signed-off-by: Jeremy Fitzhardinge
    Cc: Stable
    Signed-off-by: Ingo Molnar

    Jeremy Fitzhardinge
     

11 Oct, 2007

1 commit