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/system.h =================================================================== --- head-2006-05-26.orig/include/asm-i386/mach-xen/asm/system.h 2006-04-24 11:43:43.000000000 +0200 +++ head-2006-05-26/include/asm-i386/mach-xen/asm/system.h 2006-05-26 12:26:22.000000000 +0200 @@ -625,8 +625,8 @@ do { \ preempt_enable_no_resched(); \ } while (0) -#define safe_halt() ((void)0) -#define halt() ((void)0) +#define safe_halt() ({ __sti(); halt(); }) +#define halt() ((void)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-04-24 11:43:43.000000000 +0200 +++ head-2006-05-26/include/asm-x86_64/mach-xen/asm/system.h 2006-05-26 12:26:08.000000000 +0200 @@ -424,8 +424,8 @@ do { \ preempt_enable_no_resched(); \ ___x; }) -#define safe_halt() ((void)0) -#define halt() ((void)0) +#define safe_halt() ({ __sti(); halt(); }) +#define halt() ((void)HYPERVISOR_block()) void cpu_idle_wait(void);