[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Ping: [PATCH v2 11/17] x86/CPUID: adjust extended leaves out of range clearing
On 23.11.2020 15:32, Jan Beulich wrote: > A maximum extended leaf input value with the high half different from > 0x8000 should not be considered valid - all leaves should be cleared in > this case. > > Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> > --- > v2: Integrate into series. While most other parts of this series are to be delayed until (at least) 4.16, I consider this one a bug fix. Jan > --- a/tools/tests/cpu-policy/test-cpu-policy.c > +++ b/tools/tests/cpu-policy/test-cpu-policy.c > @@ -516,11 +516,22 @@ static void test_cpuid_out_of_range_clea > }, > }, > { > + .name = "no extd", > + .nr_markers = 0, > + .p = { > + /* Clears all markers. */ > + .extd.max_leaf = 0, > + > + .extd.vendor_ebx = 0xc2, > + .extd.raw_fms = 0xc2, > + }, > + }, > + { > .name = "extd", > .nr_markers = 1, > .p = { > /* Retains marker in leaf 0. Clears others. */ > - .extd.max_leaf = 0, > + .extd.max_leaf = 0x80000000, > .extd.vendor_ebx = 0xc2, > > .extd.raw_fms = 0xc2, > --- a/xen/lib/x86/cpuid.c > +++ b/xen/lib/x86/cpuid.c > @@ -232,7 +232,9 @@ void x86_cpuid_policy_clear_out_of_range > ARRAY_SIZE(p->xstate.raw) - 1); > } > > - zero_leaves(p->extd.raw, (p->extd.max_leaf & 0xffff) + 1, > + zero_leaves(p->extd.raw, > + ((p->extd.max_leaf >> 16) == 0x8000 > + ? (p->extd.max_leaf & 0xffff) + 1 : 0), > ARRAY_SIZE(p->extd.raw) - 1); > } > >
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |