From: Jan Beulich Subject: x86: SHADOW_PAGING is deprecated Addressing certain issues, in particular related to operations which may take excessively long and therefore would need preemption, has turned out overly costly. Since alternatives (HVM/PVH: HAP, PV: shim) are commonly available, the decision was to deprecate the functionality, while still retaining it for people to use at their own (security) risk. Memory-wise small enough guests may still be okay to run. Some CI testing depends on SHADOW_PAGING. Explicitly enable it when needed. This is CVE-2026-42493 / XSA-495. Signed-off-by: Jan Beulich Reviewed-by: Juergen Gross diff --git a/SUPPORT.md b/SUPPORT.md index 021264908cbc..55f2b0d102a7 100644 --- a/SUPPORT.md +++ b/SUPPORT.md @@ -366,6 +366,16 @@ This is typically done by a guest kernel agent known as a "balloon driver". Status: Supported +### Shadow paging + +Allows fully virtualized guests (HVM / PVH) to be run without (host side) page +translation support by hardware (AMD: NPT, Intel: EPT). + +It is also required to migrate PV guests, and to allow L1TF-vulnerable guests +to continue to run without compromising host security. + + Status: Supported, not security supported + ### Populate-on-demand memory This is a mechanism that allows normal operating systems with only a balloon driver @@ -498,7 +508,7 @@ This feature is independent of the ARM "page granularity" feature (see below). Status, x86 HVM/PVH, HAP: Supported - Status, x86 HVM/PVH, Shadow, 2MiB: Supported + Status, x86 HVM/PVH, Shadow, 2MiB: Supported, not security supported Status, ARM: Supported On x86 in shadow mode, only 2MiB (L2) superpages are available; diff --git a/automation/gitlab-ci/analyze.yaml b/automation/gitlab-ci/analyze.yaml index 3f7532ee1d25..c650ed61c4d1 100644 --- a/automation/gitlab-ci/analyze.yaml +++ b/automation/gitlab-ci/analyze.yaml @@ -59,6 +59,7 @@ eclair-x86_64-allcode: CONFIG_PERF_ARRAYS=y CONFIG_PERF_COUNTERS=y CONFIG_PV32=y + CONFIG_SHADOW_PAGING=y CONFIG_UNSUPPORTED=y CONFIG_XEN_GUEST=y CONFIG_XHCI=y @@ -91,7 +92,6 @@ eclair-x86_64-amd: CONFIG_PV=n CONFIG_XEN_IBT=n CONFIG_XEN_SHSTK=n - CONFIG_SHADOW_PAGING=n CONFIG_HVM_FEP=n CONFIG_TBOOT=n CONFIG_HYPFS=n diff --git a/automation/gitlab-ci/build.yaml b/automation/gitlab-ci/build.yaml index d5929e34ecaa..27eefec5f9a5 100644 --- a/automation/gitlab-ci/build.yaml +++ b/automation/gitlab-ci/build.yaml @@ -296,12 +296,16 @@ debian-13-x86_64-gcc-debug: <<: *build-test variables: CONTAINER: debian:13-x86_64 + EXTRA_XEN_CONFIG: | + CONFIG_SHADOW_PAGING=y debian-13-x86_64-clang-debug: extends: .clang-x86_64-build-debug <<: *build-test variables: CONTAINER: debian:13-x86_64 + EXTRA_XEN_CONFIG: | + CONFIG_SHADOW_PAGING=y debian-13-ppc64le-gcc-debug: extends: .gcc-ppc64le-cross-build-debug diff --git a/xen/arch/x86/Kconfig b/xen/arch/x86/Kconfig index 2ce4747f6ea7..3ce0774b8d76 100644 --- a/xen/arch/x86/Kconfig +++ b/xen/arch/x86/Kconfig @@ -145,7 +145,6 @@ config XEN_IBT config SHADOW_PAGING bool "Shadow Paging" - default !PV_SHIM_EXCLUSIVE depends on PV || HVM help Shadow paging is a software alternative to hardware paging support @@ -160,6 +159,9 @@ config SHADOW_PAGING Under a small number of specific workloads, shadow paging may be deliberately used as a performance optimisation. + NOTE: This feature is now deprecated. It is in particular no longer + security supported. + config PAGING def_bool HVM || SHADOW_PAGING