diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index 530b9eb39a..8c8bf1a806 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -490,6 +490,13 @@ static void generic_identify(struct cpuinfo_x86 *c) c->apicid = phys_pkg_id((ebx >> 24) & 0xFF, 0); c->phys_proc_id = c->apicid; + /* + * Early init of Self Snoop support requires 0x1.edx, while there also + * set 0x1.ecx as the value is in context. + */ + c->x86_capability[FEATURESET_1c] = ecx; + c->x86_capability[FEATURESET_1d] = edx; + eax = cpuid_eax(0x80000000); if ((eax >> 16) == 0x8000) c->extended_cpuid_level = eax;