From: kfraser@localhost.localdomain Date: Wed, 16 Aug 2006 10:55:26 +0000 (+0100) Subject: [HVM] Fix the HVM hypercall issue when paging is not enabled yet on 64bit host. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15710^2~89 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=0becb32e43840e7d5639d64b0cb720a1df7a4166;p=xen.git [HVM] Fix the HVM hypercall issue when paging is not enabled yet on 64bit host. Signed-off-by: Xin Li --- diff --git a/xen/arch/x86/shadow_public.c b/xen/arch/x86/shadow_public.c index e64f29d1ca..c282698870 100644 --- a/xen/arch/x86/shadow_public.c +++ b/xen/arch/x86/shadow_public.c @@ -1104,6 +1104,9 @@ int __shadow_mode_enable(struct domain *d, unsigned int mode) { struct vcpu *v; int new_modes = (mode & ~d->arch.shadow_mode); +#if defined(CONFIG_PAGING_LEVELS) + int initial_paging_levels = 3; +#endif // Gotta be adding something to call this function. ASSERT(new_modes); @@ -1112,8 +1115,10 @@ int __shadow_mode_enable(struct domain *d, unsigned int mode) ASSERT(!(d->arch.shadow_mode & ~mode)); #if defined(CONFIG_PAGING_LEVELS) - if(!shadow_set_guest_paging_levels(d, - CONFIG_PAGING_LEVELS)) { + if ( CONFIG_PAGING_LEVELS == 2 ) + initial_paging_levels = CONFIG_PAGING_LEVELS; + if ( !shadow_set_guest_paging_levels(d, + initial_paging_levels) ) { printk("Unsupported guest paging levels\n"); domain_crash_synchronous(); /* need to take a clean path */ }