From: Andrew Cooper Date: Wed, 18 Jan 2017 08:52:19 +0000 (+0100) Subject: x86/cpu: Don't update this_cpu for get_cpu_vendor(, gcv_guest) X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=daf491dc1e87fe32b35f2ae75b4add0fa96c0d7f;p=people%2Fiwj%2Fxen.git x86/cpu: Don't update this_cpu for get_cpu_vendor(, gcv_guest) Otherwise booting a cross-vendor guest would cause PCPU hotplug to malfunction, because of trying to use the wrong CPU driver. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich master commit: 291dcb4dd0140fac0e439760b4d51b2892ff9264 master date: 2017-01-03 13:33:16 +0000 --- diff --git a/xen/arch/x86/cpu/common.c b/xen/arch/x86/cpu/common.c index 1d78ab4d84..b5da94a3e5 100644 --- a/xen/arch/x86/cpu/common.c +++ b/xen/arch/x86/cpu/common.c @@ -166,7 +166,8 @@ int get_cpu_vendor(const char v[], enum get_cpu_vendor mode) if (!strcmp(v,cpu_devs[i]->c_ident[0]) || (cpu_devs[i]->c_ident[1] && !strcmp(v,cpu_devs[i]->c_ident[1]))) { - this_cpu = cpu_devs[i]; + if (mode == gcv_host) + this_cpu = cpu_devs[i]; return i; } }