[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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@xxxxxxxxxx> wrote:
> 
> > # HG changeset patch
> > # User David Vrabel <david.vrabel@xxxxxxxxxx>
> > # 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@xxxxxxxxxx>
> > 
> > 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@xxxxxxxxxxxxxxxxxxx
> > http://lists.xensource.com/xen-devel
> 
> 
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.