On 2025-11-19 14:30, Grygorii Strashko wrote:
From: Grygorii Strashko <[email protected]>
For x86 Xen safety certification only PVH Gusts are selected to be allowed
s/Gusts/Guests/
which are started by using direct Direct Kernel Boot only. There is also an
s/direct Direct/direct/
assumption that x86 Guest's (OS) early boot code (which is running not in
64-bit mode) does not access Xen interfaces (hypercalls, shared_info, ..).
In this case the Xen HVM 32-bit COMPAT interface become unused and leaves
gaps in terms of coverage.
Hence now all prerequisite changes are in place, introduce a
CONFIG_HVM_COMPAT option through which HVM(PVH) 32-bit interface support on
64-bit Xen can be disabled.
By default, CONFIG_HVM_COMPAT is ("y") enabled and accessible only in
EXPERT mode.
Signed-off-by: Grygorii Strashko <[email protected]>
---
changes in v2:
- fix format and move above HVM_FEP
xen/arch/x86/hvm/Kconfig | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/xen/arch/x86/hvm/Kconfig b/xen/arch/x86/hvm/Kconfig
index c323d767e77c..88090f5b3965 100644
--- a/xen/arch/x86/hvm/Kconfig
+++ b/xen/arch/x86/hvm/Kconfig
@@ -2,7 +2,6 @@ menuconfig HVM
bool "HVM support"
depends on !PV_SHIM_EXCLUSIVE
default !PV_SHIM
- select COMPAT
select IOREQ_SERVER
select MEM_ACCESS_ALWAYS_ON
help
@@ -35,6 +34,24 @@ config INTEL_VMX
If your system includes a processor with Intel VT-x support, say Y.
If in doubt, say Y.
+config HVM_COMPAT
+ bool "HVM 32-bit hypercalls interface support" if EXPERT
Maybe "HVM 32-bit compat hypercall support" to get "compat" in the
user-visible text?
+ select COMPAT
+ default y
+ help
+ The HVM 32-bit interface must be enabled for HVM domains to be able to
+ make hypercalls in 32bit mode. Non-PVH domains unconditionally need
this
+ option so that hvmloader may issue hypercalls in 32bit mode.
+
+ The HVM 32-bit interface can be disabled if:
+ - Only PVH domains are used
+ - Guests (OS) are started by using direct Direct Kernel Boot
+ - Guests (OS) are 64-bit and Guest early boot code, which is running
not
+ in 64-bit mode, does not access Xen interfaces
+ (hypercalls, shared_info, ..)
+
+ If unsure, say Y.
+
Maybe something like:
"""
Support HVM hypercalls from 32-bit code. Hypercalls from 64-bit code
are always supported.
Disabling 32-bit compat hypercalls reduces the hypervisor binary size.
HVM guests require the 32-bit hvmloader, so they cannot run with this
disabled. i.e. Xen will only run 64-bit PVH guests with this disabled.
If unsure, say Y.
"""
While what you wrote is correct, I tried to rephrase to highlight the
the implications.
Regards,
Jason
config HVM_FEP
bool "HVM Forced Emulation Prefix support (UNSUPPORTED)" if UNSUPPORTED
default DEBUG