From 1d3668664df7d584b28460b42a83d193c470c03e Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Fri, 26 May 2023 09:16:44 +0200 Subject: [PATCH] x86/shadow: restrict OOS allocation to when it's really needed MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit PV domains won't use it, and even HVM ones won't when OOS is turned off for them. There's therefore no point in putting extra pressure on the (limited) pool of memory. While there also zap the sh_type_to_size[] entry when OOS is disabled altogether. Signed-off-by: Jan Beulich Acked-by: Roger Pau Monné --- xen/arch/x86/mm/shadow/common.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/common.c index e522267325..a0ae6adb4f 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -61,7 +61,9 @@ const uint8_t sh_type_to_size[] = { [SH_type_l4_64_shadow] = 1, [SH_type_p2m_table] = 1, [SH_type_monitor_table] = 1, +#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC) [SH_type_oos_snapshot] = 1, +#endif }; #endif /* CONFIG_HVM */ @@ -2341,7 +2343,8 @@ static void sh_update_paging_modes(struct vcpu *v) #endif /* (SHADOW_OPTIMIZATIONS & SHOPT_VIRTUAL_TLB) */ #if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC) - if ( mfn_eq(v->arch.paging.shadow.oos_snapshot[0], INVALID_MFN) ) + if ( !(d->options & XEN_DOMCTL_CDF_oos_off) && + mfn_eq(v->arch.paging.shadow.oos_snapshot[0], INVALID_MFN) ) { int i; -- 2.39.5