Index: head-2006-05-26/include/asm-i386/bugs.h =================================================================== --- head-2006-05-26.orig/include/asm-i386/bugs.h 2006-03-20 06:53:29.000000000 +0100 +++ head-2006-05-26/include/asm-i386/bugs.h 2006-05-26 13:55:43.000000000 +0200 @@ -92,6 +92,7 @@ static void __init check_fpu(void) static void __init check_hlt(void) { +#ifndef CONFIG_XEN printk(KERN_INFO "Checking 'hlt' instruction... "); if (!boot_cpu_data.hlt_works_ok) { printk("disabled\n"); @@ -102,6 +103,7 @@ static void __init check_hlt(void) halt(); halt(); printk("OK.\n"); +#endif } /* Index: head-2006-05-26/include/asm-i386/mach-xen/asm/hypervisor.h =================================================================== --- head-2006-05-26.orig/include/asm-i386/mach-xen/asm/hypervisor.h 2006-04-24 11:43:43.000000000 +0200 +++ head-2006-05-26/include/asm-i386/mach-xen/asm/hypervisor.h 2006-05-29 17:37:01.000000000 +0200 @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include Index: head-2006-05-26/include/asm-i386/mach-xen/asm/system.h =================================================================== --- head-2006-05-26.orig/include/asm-i386/mach-xen/asm/system.h 2006-05-29 17:21:52.000000000 +0200 +++ head-2006-05-26/include/asm-i386/mach-xen/asm/system.h 2006-05-29 17:37:31.000000000 +0200 @@ -625,8 +625,11 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#define safe_halt() ((void)0) -#define halt() ((void)0) +#define safe_halt() ((void)HYPERVISOR_block()) +#define halt() ((void) \ + (HYPERVISOR_shared_info->vcpu_info[__vcpu_id].evtchn_upcall_mask \ + ? HYPERVISOR_vcpu_op(VCPUOP_down, __vcpu_id, NULL) \ + : HYPERVISOR_block())) #define __save_and_cli(x) \ do { \ Index: head-2006-05-26/include/asm-x86_64/mach-xen/asm/system.h =================================================================== --- head-2006-05-26.orig/include/asm-x86_64/mach-xen/asm/system.h 2006-05-29 17:21:52.000000000 +0200 +++ head-2006-05-26/include/asm-x86_64/mach-xen/asm/system.h 2006-05-29 17:37:46.000000000 +0200 @@ -424,8 +424,11 @@ do { \ preempt_enable_no_resched(); \ ___x; }) -#define safe_halt() ((void)0) -#define halt() ((void)0) +#define safe_halt() ((void)HYPERVISOR_block()) +#define halt() ((void) \ + (HYPERVISOR_shared_info->vcpu_info[__vcpu_id].evtchn_upcall_mask \ + ? HYPERVISOR_vcpu_op(VCPUOP_down, __vcpu_id, NULL) \ + : HYPERVISOR_block())) void cpu_idle_wait(void);