--- head-2006-02-07.orig/arch/x86_64/kernel/entry-xen.S 2006-02-07 13:29:12.000000000 +0100 +++ head-2006-02-07/arch/x86_64/kernel/entry-xen.S 2006-02-08 12:25:12.000000000 +0100 @@ -826,9 +826,15 @@ ENTRY(hypervisor_callback) ENTRY(do_hypervisor_callback) # do_hyperviosr_callback(struct *pt_regs) # Since we don't modify %rdi, evtchn_do_upall(struct *pt_regs) will # see the correct pointer to the pt_regs - addq $8, %rsp # we don't return, adjust the stack frame -11: movb $0, EVENT_MASK(%rsp) + movq %rdi, %rsp # we don't return, adjust the stack frame +11: movb $0, EVENT_MASK(%rdi) + movq %gs:pda_irqstackptr,%rax + incl %gs:pda_irqcount + cmovzq %rax,%rsp + pushq %rdi call evtchn_do_upcall + popq %rsp + decl %gs:pda_irqcount jmp error_exit #ifdef CONFIG_X86_LOCAL_APIC