* [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
@ 2011-07-14 11:50 David Vrabel
2011-07-14 13:30 ` Keir Fraser
0 siblings, 1 reply; 5+ messages in thread
From: David Vrabel @ 2011-07-14 11:50 UTC (permalink / raw)
To: xen-devel; +Cc: David Vrabel
# 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;
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
2011-07-14 11:50 [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests David Vrabel
@ 2011-07-14 13:30 ` Keir Fraser
2011-07-14 13:56 ` Ian Campbell
2011-07-14 14:25 ` David Vrabel
0 siblings, 2 replies; 5+ messages in thread
From: Keir Fraser @ 2011-07-14 13:30 UTC (permalink / raw)
To: David Vrabel, xen-devel
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
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
2011-07-14 13:30 ` Keir Fraser
@ 2011-07-14 13:56 ` Ian Campbell
2011-07-14 14:25 ` David Vrabel
1 sibling, 0 replies; 5+ messages in thread
From: Ian Campbell @ 2011-07-14 13:56 UTC (permalink / raw)
To: Keir Fraser; +Cc: xen-devel@lists.xensource.com, David Vrabel
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
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
2011-07-14 13:30 ` Keir Fraser
2011-07-14 13:56 ` Ian Campbell
@ 2011-07-14 14:25 ` David Vrabel
2011-07-15 8:41 ` Jan Beulich
1 sibling, 1 reply; 5+ messages in thread
From: David Vrabel @ 2011-07-14 14:25 UTC (permalink / raw)
To: Keir Fraser; +Cc: xen-devel@lists.xensource.com
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
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests
2011-07-14 14:25 ` David Vrabel
@ 2011-07-15 8:41 ` Jan Beulich
0 siblings, 0 replies; 5+ messages in thread
From: Jan Beulich @ 2011-07-15 8:41 UTC (permalink / raw)
To: David Vrabel; +Cc: Keir Fraser, xen-devel@lists.xensource.com
>>> 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
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-07-15 8:41 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-07-14 11:50 [PATCH] libxc: set CPUID topology leaf as unsupported for PV guests David Vrabel
2011-07-14 13:30 ` Keir Fraser
2011-07-14 13:56 ` Ian Campbell
2011-07-14 14:25 ` David Vrabel
2011-07-15 8:41 ` Jan Beulich
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.