From: Roger Pau Monne Date: Fri, 3 Jan 2020 17:29:35 +0000 (+0100) Subject: tools/libxc: disable x2APIC when using nested virtualization X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~942 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=7b3c5b70a32303b46d0d051e695f18d72cce5ed0;p=xen.git tools/libxc: disable x2APIC when using nested virtualization There are issues as reported by osstest when Xen is running nested on itself and the L1 Xen is using x2APIC. While those are being investigated, disable announcing the x2APIC feature in CPUID when nested HVM mode is enabled. Signed-off-by: Roger Pau Monné Acked-by: Andrew Cooper Acked-by: Wei Liu --- diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c index 2540aa1e1c..ac38c1406e 100644 --- a/tools/libxc/xc_cpuid_x86.c +++ b/tools/libxc/xc_cpuid_x86.c @@ -653,6 +653,17 @@ int xc_cpuid_apply_policy(xc_interface *xch, uint32_t domid, p->extd.itsc = true; p->basic.vmx = true; p->extd.svm = true; + + /* + * BODGE: don't announce x2APIC mode when using nested virtualization, + * as it doesn't work properly. This should be removed once the + * underlying bug(s) are fixed. + */ + rc = xc_hvm_param_get(xch, domid, HVM_PARAM_NESTEDHVM, &val); + if ( rc ) + goto out; + if ( val ) + p->basic.x2apic = false; } rc = x86_cpuid_copy_to_buffer(p, leaves, &nr_leaves);