diff --git a/xen/arch/x86/domain.c b/xen/arch/x86/domain.c index 996b50af7a..6ebe6c5052 100644 --- a/xen/arch/x86/domain.c +++ b/xen/arch/x86/domain.c @@ -813,8 +813,8 @@ static bool emulation_flags_ok(const struct domain *d, uint32_t emflags) void __init arch_init_idle_domain(struct domain *d) { static const struct arch_csw idle_csw = { - .from = paravirt_ctxt_switch_from, - .to = paravirt_ctxt_switch_to, + .from = FUNCTION_POISON, + .to = FUNCTION_POISON, .tail = idle_loop, }; diff --git a/xen/arch/x86/include/asm/config.h b/xen/arch/x86/include/asm/config.h index 1b28349a42..bf82cd082a 100644 --- a/xen/arch/x86/include/asm/config.h +++ b/xen/arch/x86/include/asm/config.h @@ -56,6 +56,9 @@ #define LIST_POISON1 ((void *)0x0100100100100100UL) #define LIST_POISON2 ((void *)0x0200200200200200UL) +/* Poison unreachable function hooks with a non-canonical value. */ +#define FUNCTION_POISON ((void *)0xDEAD0000DEAD0000UL) + #include #define PML4_ENTRY_BITS 39