From: Boris Ostrovsky Date: Thu, 10 Nov 2016 14:50:24 +0000 (-0500) Subject: libxc/x86: Report consistent initial APIC value for PV guests X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~100 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1a5245528ee3d3287f940a44b6cf91fea3dbae32;p=xen.git libxc/x86: Report consistent initial APIC value for PV guests Currently hypervisor provides PV guest's CPUID(1).EBX[31:24] (initial APIC ID) with contents of that field on the processor that launched the guest. This results in the guest reporting different initial APIC IDs across runs. We should be consistent in how this value is reported, let's set it to 0 (which is also what Linux guests expect). Signed-off-by: Boris Ostrovsky Reviewed-by: Andrew Cooper Acked-by: Wei Liu [ wei: remove trailing whitespace in comment ] Signed-off-by: Wei Liu Release-acked-by: Wei Liu --- diff --git a/tools/libxc/xc_cpuid_x86.c b/tools/libxc/xc_cpuid_x86.c index d761805da0..2ad9aebfce 100644 --- a/tools/libxc/xc_cpuid_x86.c +++ b/tools/libxc/xc_cpuid_x86.c @@ -618,6 +618,12 @@ static void xc_cpuid_pv_policy(xc_interface *xch, /* Host topology exposed to PV guest. Provide host value. */ bool host_htt = regs[3] & bitmaskof(X86_FEATURE_HTT); + /* + * Don't pick host's Initial APIC ID which can change from run + * to run. + */ + regs[1] &= 0x00ffffffu; + regs[2] = info->featureset[featureword_of(X86_FEATURE_SSE3)]; regs[3] = (info->featureset[featureword_of(X86_FEATURE_FPU)] & ~bitmaskof(X86_FEATURE_HTT));