|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH for-4.22] x86/hvm: Introduce force_x2apic flag
Le 29/10/2025 à 19:26, Teddy Astie a écrit : > Introduce a new flag to force the x2APIC enabled and preventing a > guest from switching back LAPIC to xAPIC mode. > > The semantics of this mode are based IA32_XAPIC_DISABLE_STATUS > architectural MSR of Intel specification. > > Signed-off-by: Teddy Astie <teddy.astie@xxxxxxxxxx> > --- > This feature can be useful for various reasons, starting with SEV as > it is complicated (especially with SEV-ES) to handle MMIO, and legacy > xAPIC is one thing that needs MMIO intercepts (and Linux uses it during > boot unless x2APIC is initially enabled, even if it switches to > x2apic afterward). It could also be interesting to reduce the attack > surface of the hypervisor (by only exposing x2apic to the guest). > > As it can allow to have MMIO-less guest (using PVH), perhaps it can > be enough for avoiding the problematic cases of virtualized INVLPGB > (when we have it). > > In my testing, Linux, FreeBSD and PV-shim works fine with it; OVMF > freezes for some reason, NetBSD doesn't support it (no x2apic support > as Xen guest). HVM BIOS gets stuck at SeaBIOS as it expects booting > with xAPIC. > > On Intel platforms, it would be better to expose the > IA32_XAPIC_DISABLE_STATUS architectural MSR to advertise this to > guest, but it's non-trivial as it needs to be properly exposed > through IA32_ARCH_CAPABILITIES which is currently passed-through. > > docs/man/xl.cfg.5.pod.in | 7 +++++++ > tools/libs/light/libxl_types.idl | 1 + > tools/libs/light/libxl_x86.c | 4 ++++ > tools/xl/xl_parse.c | 1 + > xen/arch/x86/domain.c | 2 +- > xen/arch/x86/hvm/hvm.c | 2 ++ > xen/arch/x86/hvm/vlapic.c | 23 ++++++++++++++++++++++- > xen/arch/x86/include/asm/domain.h | 2 ++ > xen/arch/x86/include/asm/hvm/domain.h | 3 +++ > xen/include/public/arch-x86/xen.h | 12 +++++++++++- > 10 files changed, 54 insertions(+), 3 deletions(-) > I guess for now, it would be preferable overall to : - just add a way to enable it by default, not lock in it in x2apic mode - the ability to lock it down (i.e disable xAPIC at compile time) could be introduced separately I'm not completely decided on the naming of the option, maybe something like : x2apic_mode = <default> | <pre_enable> (or just enable ?) `default` will keep the current behavior, or force x2apic if xAPIC is disabled at compile time; `pre_enable` will enable it by default, but OS may be able to go back to xAPIC mode if supported. Teddy -- Teddy Astie | Vates XCP-ng Developer XCP-ng & Xen Orchestra - Vates solutions web: https://vates.tech
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |