[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging-4.19] x86/cpu-policy: Fix handling of leaf 0x80000021
commit ab248a130e3625ac68a51d10fae15ae8d67e05fd Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Mon Jul 7 11:35:57 2025 +0200 Commit: Jan Beulich <jbeulich@xxxxxxxx> CommitDate: Mon Jul 7 11:35:57 2025 +0200 x86/cpu-policy: Fix handling of leaf 0x80000021 When support was originally introduced, ebx, ecx and edx were reserved and should have been zeroed in recalculate_misc() to avoid leaking into guests. Since then, fields have been added into ebx. Guests can't load microcode, so shouldn't see ucode_size, and while in principle we do want to support larger RAP sizes in guests, virtualising this for guests depends on AMD procuding any official documentation for ERAPS, which is long overdue and with no ETA. This patch will cause a difference in guests on Zen5 CPUs, but as the main ERAPS feature is hidden, guests should be ignoring the rap_size field too. Fixes: e9b4fe263649 ("x86/cpuid: support LFENCE always serialising CPUID bit") Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> master commit: 10dc35c516f7b9224590a7a4e2722bbfd70fa87a master date: 2025-07-02 18:25:03 +0100 --- xen/arch/x86/cpu-policy.c | 3 +++ xen/include/xen/lib/x86/cpu-policy.h | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/cpu-policy.c b/xen/arch/x86/cpu-policy.c index 52caad5162..787785c41a 100644 --- a/xen/arch/x86/cpu-policy.c +++ b/xen/arch/x86/cpu-policy.c @@ -326,6 +326,9 @@ static void recalculate_misc(struct cpu_policy *p) p->extd.raw[0x1e] = EMPTY_LEAF; /* TopoExt APIC ID/Core/Node */ p->extd.raw[0x1f] = EMPTY_LEAF; /* SEV */ p->extd.raw[0x20] = EMPTY_LEAF; /* Platform QoS */ + p->extd.raw[0x21].b = 0; + p->extd.raw[0x21].c = 0; + p->extd.raw[0x21].d = 0; break; } } diff --git a/xen/include/xen/lib/x86/cpu-policy.h b/xen/include/xen/lib/x86/cpu-policy.h index d26012c6da..753ac78114 100644 --- a/xen/include/xen/lib/x86/cpu-policy.h +++ b/xen/include/xen/lib/x86/cpu-policy.h @@ -325,7 +325,10 @@ struct cpu_policy uint32_t e21a; struct { DECL_BITFIELD(e21a); }; }; - uint32_t /* b */:32, /* c */:32, /* d */:32; + uint16_t ucode_size; /* Units of 16 bytes */ + uint8_t rap_size; /* Units of 8 entries */ + uint8_t :8; + uint32_t /* c */:32, /* d */:32; }; } extd; -- generated by git-patchbot for /home/xen/git/xen.git#staging-4.19
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |