Re: [PATCH 10/10] cpu_x86: Use signature in CPU detection code

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

 



On Thu, Jun 09, 2016 at 09:17:30 +0200, Peter Krempa wrote:
> On Wed, Jun 08, 2016 at 14:41:38 +0200, Jiri Denemark wrote:
> > Our current detection code uses just the number of CPU features which
> > need to be added/removed from the CPU model to fully describe the CPUID
> > data. The smallest number wins. But this may sometimes generate wrong
> > results as one can see from the fixed test cases. This patch modifies
> > the algorithm to prefer the CPU model with matching signature even if
> > this model results in a longer list of additional features.
...
> > +/* Mask out irrelevant bits (R and Step) from processor signature. */
> > +#define SIGNATURE_MASK  0x0fff3ff0
> 
> This mask is not removing bits 12 and 13 corresponding to the processor
> type, but we don't take them into account in our code. If that's
> intentional please note it in the comment

Yes, it's intentional.

> > +
> > +static uint32_t
> > +x86DataToSignature(const virCPUx86Data *data)
> > +{
> > +    virCPUx86CPUID leaf1 = { .eax_in = 0x1 };
> > +    virCPUx86CPUID *cpuid;
> > +
> > +    if (!(cpuid = x86DataCpuid(data, &leaf1)))
> > +        return 0;
> > +
> > +    return cpuid->eax & SIGNATURE_MASK;
> > +}
> > +
> > +
> 
> > @@ -1093,6 +1164,34 @@ x86ModelParse(xmlXPathContextPtr ctxt,
> >              goto error;
> >      }
> >  
> > +    if (virXPathBoolean("boolean(./signature)", ctxt)) {
> > +        unsigned int sigFamily = 0;
> > +        unsigned int sigModel = 0;
> > +        int rc;
> > +
> > +        rc = virXPathUInt("string(./signature/@family)", ctxt, &sigFamily);
> > +        if (rc < 0) {
> > +            if (rc == -2 || (rc == 0 && !sigFamily)) {
> 
> Second part of the condition is a contradiction. Could you please
> clarify your intent here?

Heh, I guess I should be more careful when reusing patches I hacked up a
year ago :-)

See v2.

Jirka

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]