diff options
| -rw-r--r-- | arch/x86/xen/enlighten.c | 2 | ||||
| -rw-r--r-- | arch/x86/xen/xen-asm.S | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c index 8b9ee27805fd..1a20318c8cff 100644 --- a/arch/x86/xen/enlighten.c +++ b/arch/x86/xen/enlighten.c | |||
| @@ -95,7 +95,7 @@ struct shared_info *HYPERVISOR_shared_info = (void *)&dummy_shared_info; | |||
| 95 | * | 95 | * |
| 96 | * 0: not available, 1: available | 96 | * 0: not available, 1: available |
| 97 | */ | 97 | */ |
| 98 | static int have_vcpu_info_placement = 0; | 98 | static int have_vcpu_info_placement = 1; |
| 99 | 99 | ||
| 100 | static void __init xen_vcpu_setup(int cpu) | 100 | static void __init xen_vcpu_setup(int cpu) |
| 101 | { | 101 | { |
diff --git a/arch/x86/xen/xen-asm.S b/arch/x86/xen/xen-asm.S index 1a43b60c0c62..6b7190449d07 100644 --- a/arch/x86/xen/xen-asm.S +++ b/arch/x86/xen/xen-asm.S | |||
| @@ -33,12 +33,17 @@ | |||
| 33 | events, then enter the hypervisor to get them handled. | 33 | events, then enter the hypervisor to get them handled. |
| 34 | */ | 34 | */ |
| 35 | ENTRY(xen_irq_enable_direct) | 35 | ENTRY(xen_irq_enable_direct) |
| 36 | /* Clear mask and test pending */ | 36 | /* Unmask events */ |
| 37 | andw $0x00ff, PER_CPU_VAR(xen_vcpu_info)+XEN_vcpu_info_pending | 37 | movb $0, PER_CPU_VAR(xen_vcpu_info)+XEN_vcpu_info_mask |
| 38 | |||
| 38 | /* Preempt here doesn't matter because that will deal with | 39 | /* Preempt here doesn't matter because that will deal with |
| 39 | any pending interrupts. The pending check may end up being | 40 | any pending interrupts. The pending check may end up being |
| 40 | run on the wrong CPU, but that doesn't hurt. */ | 41 | run on the wrong CPU, but that doesn't hurt. */ |
| 42 | |||
| 43 | /* Test for pending */ | ||
| 44 | testb $0xff, PER_CPU_VAR(xen_vcpu_info)+XEN_vcpu_info_pending | ||
| 41 | jz 1f | 45 | jz 1f |
| 46 | |||
| 42 | 2: call check_events | 47 | 2: call check_events |
| 43 | 1: | 48 | 1: |
| 44 | ENDPATCH(xen_irq_enable_direct) | 49 | ENDPATCH(xen_irq_enable_direct) |
