David Vrabel
2011-Jul-14 11:50 UTC
[Xen-devel] [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
# HG changeset patch # User David Vrabel <david.vrabel@citrix.com> # Date 1310643124 -3600 # Branch cpuid # Node ID b3705aae543b95fd7f6bb38c21b5f1edd2b70609 # Parent 98701b1276c034b2bbbc8c7a975cf4c361caaa63 libxc: set CPUID topology leaf as unsupported for PV guests The result of a CPUID Extended Topology Enumeration leaf for PV guests is invalid as the level in ECX is ignored. This can cause some guests to loop endlessly when trying to enumerate the topology. Since the physical topology isn''t useful to PV guests set the topology leaf as unsupported. Guests affected include Linux kernels prior 2.6.32 where a workaround was applied ("xen: mask extended topology info in cpu", 82d6469916c6fcfa345636a49004c9d1753905d1). Signed-off-by: David Vrabel <david.vrabel@citrix.com> diff -r 98701b1276c0 -r b3705aae543b tools/libxc/xc_cpuid_x86.c --- a/tools/libxc/xc_cpuid_x86.c Thu Jul 14 09:43:37 2011 +0100 +++ b/tools/libxc/xc_cpuid_x86.c Thu Jul 14 12:32:04 2011 +0100 @@ -487,6 +487,11 @@ static void xc_cpuid_pv_policy( regs[0] = regs[2] = regs[3] = 0; break; + case 0x0000000b: + /* Extended Topology Enumeration leaf is unsupported. */ + regs[0] = regs[1] = regs[2] = regs[3] = 0; + break; + case 0x0000000d: xc_cpuid_config_xsave(xch, domid, xfeature_mask, input, regs); break; _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Keir Fraser
2011-Jul-14 13:30 UTC
Re: [Xen-devel] [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
On 14/07/2011 12:50, "David Vrabel" <david.vrabel@citrix.com> wrote:> # HG changeset patch > # User David Vrabel <david.vrabel@citrix.com> > # Date 1310643124 -3600 > # Branch cpuid > # Node ID b3705aae543b95fd7f6bb38c21b5f1edd2b70609 > # Parent 98701b1276c034b2bbbc8c7a975cf4c361caaa63 > libxc: set CPUID topology leaf as unsupported for PV guests > > The result of a CPUID Extended Topology Enumeration leaf for PV guests > is invalid as the level in ECX is ignored. This can cause some guests > to loop endlessly when trying to enumerate the topology. > > Since the physical topology isn''t useful to PV guests set the topology > leaf as unsupported.For future reference, you also need to modify xen/arch/x86/traps.c:pv_cpuid(), for dom0. -- Keir> Guests affected include Linux kernels prior 2.6.32 where a workaround > was applied ("xen: mask extended topology info in cpu", > 82d6469916c6fcfa345636a49004c9d1753905d1). > > Signed-off-by: David Vrabel <david.vrabel@citrix.com> > > diff -r 98701b1276c0 -r b3705aae543b tools/libxc/xc_cpuid_x86.c > --- a/tools/libxc/xc_cpuid_x86.c Thu Jul 14 09:43:37 2011 +0100 > +++ b/tools/libxc/xc_cpuid_x86.c Thu Jul 14 12:32:04 2011 +0100 > @@ -487,6 +487,11 @@ static void xc_cpuid_pv_policy( > regs[0] = regs[2] = regs[3] = 0; > break; > > + case 0x0000000b: > + /* Extended Topology Enumeration leaf is unsupported. */ > + regs[0] = regs[1] = regs[2] = regs[3] = 0; > + break; > + > case 0x0000000d: > xc_cpuid_config_xsave(xch, domid, xfeature_mask, input, regs); > break; > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Ian Campbell
2011-Jul-14 13:56 UTC
Re: [Xen-devel] [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
On Thu, 2011-07-14 at 14:30 +0100, Keir Fraser wrote:> On 14/07/2011 12:50, "David Vrabel" <david.vrabel@citrix.com> wrote: > > > # HG changeset patch > > # User David Vrabel <david.vrabel@citrix.com> > > # Date 1310643124 -3600 > > # Branch cpuid > > # Node ID b3705aae543b95fd7f6bb38c21b5f1edd2b70609 > > # Parent 98701b1276c034b2bbbc8c7a975cf4c361caaa63 > > libxc: set CPUID topology leaf as unsupported for PV guests > > > > The result of a CPUID Extended Topology Enumeration leaf for PV guests > > is invalid as the level in ECX is ignored. This can cause some guests > > to loop endlessly when trying to enumerate the topology. > > > > Since the physical topology isn''t useful to PV guests set the topology > > leaf as unsupported. > > For future reference, you also need to modify > xen/arch/x86/traps.c:pv_cpuid(), for dom0.Aside: the cases of that switch are taking inconsistency to a new level: $ grep -A 121 pv_cpuid\(struct xen/arch/x86/traps.c | grep case case 1: case 7: case 0x80000001: case 0xd: /* XSAVE */ case 5: /* MONITOR/MWAIT */ case 0xa: /* Architectural Performance Monitor Features */ case 0x8000000a: /* SVM revision and features */ case 0x8000001b: /* Instruction Based Sampling */ case 0x8000001c: /* Light Weight Profiling */ case 0x8000001e: /* Extended topology reporting */ Yeah! Ian.> > -- Keir > > > Guests affected include Linux kernels prior 2.6.32 where a workaround > > was applied ("xen: mask extended topology info in cpu", > > 82d6469916c6fcfa345636a49004c9d1753905d1). > > > > Signed-off-by: David Vrabel <david.vrabel@citrix.com> > > > > diff -r 98701b1276c0 -r b3705aae543b tools/libxc/xc_cpuid_x86.c > > --- a/tools/libxc/xc_cpuid_x86.c Thu Jul 14 09:43:37 2011 +0100 > > +++ b/tools/libxc/xc_cpuid_x86.c Thu Jul 14 12:32:04 2011 +0100 > > @@ -487,6 +487,11 @@ static void xc_cpuid_pv_policy( > > regs[0] = regs[2] = regs[3] = 0; > > break; > > > > + case 0x0000000b: > > + /* Extended Topology Enumeration leaf is unsupported. */ > > + regs[0] = regs[1] = regs[2] = regs[3] = 0; > > + break; > > + > > case 0x0000000d: > > xc_cpuid_config_xsave(xch, domid, xfeature_mask, input, regs); > > break; > > > > _______________________________________________ > > Xen-devel mailing list > > Xen-devel@lists.xensource.com > > http://lists.xensource.com/xen-devel > > > > _______________________________________________ > Xen-devel mailing list > Xen-devel@lists.xensource.com > http://lists.xensource.com/xen-devel_______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
David Vrabel
2011-Jul-14 14:25 UTC
Re: [Xen-devel] [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
On 14/07/11 14:30, Keir Fraser wrote:> On 14/07/2011 12:50, "David Vrabel" <david.vrabel@citrix.com> wrote: > >> libxc: set CPUID topology leaf as unsupported for PV guests >> >> The result of a CPUID Extended Topology Enumeration leaf for PV guests >> is invalid as the level in ECX is ignored. This can cause some guests >> to loop endlessly when trying to enumerate the topology. >> >> Since the physical topology isn''t useful to PV guests set the topology >> leaf as unsupported. > > For future reference, you also need to modify > xen/arch/x86/traps.c:pv_cpuid(), for dom0.Looking at the code it looks like dom0 would at least see valid data for the the topology leaf. But I guess the info makes no sense to dom0 as well as domU guests. Patch sent if you''ve not already fixed it up. David _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel
Jan Beulich
2011-Jul-15 08:41 UTC
Re: [Xen-devel] [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
>>> On 14.07.11 at 16:25, David Vrabel <david.vrabel@citrix.com> wrote: > On 14/07/11 14:30, Keir Fraser wrote: >> On 14/07/2011 12:50, "David Vrabel" <david.vrabel@citrix.com> wrote: >> >>> libxc: set CPUID topology leaf as unsupported for PV guests >>> >>> The result of a CPUID Extended Topology Enumeration leaf for PV guests >>> is invalid as the level in ECX is ignored. This can cause some guests >>> to loop endlessly when trying to enumerate the topology. >>> >>> Since the physical topology isn''t useful to PV guests set the topology >>> leaf as unsupported. >> >> For future reference, you also need to modify >> xen/arch/x86/traps.c:pv_cpuid(), for dom0. > > Looking at the code it looks like dom0 would at least see valid data for > the the topology leaf. But I guess the info makes no sense to dom0 as > well as domU guests. Patch sent if you''ve not already fixed it up.It may make limited sense to Dom0 if "dom0_vcpus_pin" is in effect. Jan _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel