|
[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 |