From nobody Mon Feb 9 16:18:41 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=quarantine dis=none) header.from=suse.com ARC-Seal: i=1; a=rsa-sha256; t=1610637020; cv=none; d=zohomail.com; s=zohoarc; b=bjlbCRDQmrVD04K5wqq2Tps2JeioKsNv1P20ayCGoleQUbDaQjCC8gerdNqYXdRaSttNV0WIiicGWGSmxpxSFKlkHPhhNDTOfDqDbtsI8CBibqhgUZU0/NWzTW2Ij1SyGzg05mOvcHI61BHduzWymlHmcztem8UqCV1piLfFVyA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1610637020; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=466TJ9y3krZUXMaSrsJMQevJp2wKDieN7MPbPHgLxGA=; b=JKb+hnaGWG7kXaZJxQIG+nljuo1Qd0r4WKLHUJ180ww1w/WphsdFrouHz/203wWAculA4i4luFe0ybhOWje2jjNxP/R8aCF5OWU0k2Pktb3Go90pLW9xod1GyvRaLJ1gqUdYKNS6vjCOBioahzoKaKAXGxQFEQ1LWw5Zwc5QafQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=quarantine dis=none) header.from= Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1610637020351223.52269391006155; Thu, 14 Jan 2021 07:10:20 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.67128.119553 (Exim 4.92) (envelope-from ) id 1l04GC-0007Gg-TH; Thu, 14 Jan 2021 15:10:04 +0000 Received: by outflank-mailman (output) from mailman id 67128.119553; Thu, 14 Jan 2021 15:10:04 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1l04GC-0007GZ-Oh; Thu, 14 Jan 2021 15:10:04 +0000 Received: by outflank-mailman (input) for mailman id 67128; Thu, 14 Jan 2021 15:10:04 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1l04GC-00076f-0A for xen-devel@lists.xenproject.org; Thu, 14 Jan 2021 15:10:04 +0000 Received: from mx2.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 754297b1-04a5-4f9a-b418-e2be9910d5da; Thu, 14 Jan 2021 15:10:03 +0000 (UTC) Received: from relay2.suse.de (unknown [195.135.221.27]) by mx2.suse.de (Postfix) with ESMTP id 51B49B934; Thu, 14 Jan 2021 15:10:02 +0000 (UTC) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 754297b1-04a5-4f9a-b418-e2be9910d5da X-Virus-Scanned: by amavisd-new at test-mx.suse.de DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1610637002; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=466TJ9y3krZUXMaSrsJMQevJp2wKDieN7MPbPHgLxGA=; b=Z4+QZDEXDX/IyK6nG17YoZZbi9F6Ucqzl1+Ni/pCp1+DiExJA7EDDlgLhTBcYtL12oJfjM 3MihKYxABPEz/yLLH7F4Tlz/UFmXMhl62QEnlMymmtvY5PxjlGHx7CAerbEuUcnDv/o0Sl BmeGjx20uZwXMTWnShoih5MPyodX+WA= Subject: [PATCH 14/17] x86/shadow: SH_type_l2h_shadow is PV-only From: Jan Beulich To: "xen-devel@lists.xenproject.org" Cc: Andrew Cooper , Wei Liu , =?UTF-8?Q?Roger_Pau_Monn=c3=a9?= , Tim Deegan , George Dunlap References: <4f1975a9-bdd9-f556-9db5-eb6c428f258f@suse.com> Message-ID: <005651ab-4af5-edf4-3bc1-f68635cd97d8@suse.com> Date: Thu, 14 Jan 2021 16:10:02 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.6.0 MIME-Version: 1.0 In-Reply-To: <4f1975a9-bdd9-f556-9db5-eb6c428f258f@suse.com> Content-Language: en-US Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @suse.com) Content-Type: text/plain; charset="utf-8" ..., i.e. being used only with 4 guest paging levels. Drop its L2/PAE alias and adjust / drop conditionals. Use >=3D 4 where touching them anyway, in preparation for 5-level paging. Signed-off-by: Jan Beulich --- a/xen/arch/x86/mm/shadow/multi.c +++ b/xen/arch/x86/mm/shadow/multi.c @@ -334,7 +334,7 @@ static void sh_audit_gw(struct vcpu *v, if ( mfn_valid((smfn =3D get_shadow_status(d, gw->l2mfn, SH_type_l2_shadow))) ) (void) sh_audit_l2_table(v, smfn, INVALID_MFN); -#if GUEST_PAGING_LEVELS =3D=3D 3 +#if GUEST_PAGING_LEVELS >=3D 4 /* 32-bit PV only */ if ( mfn_valid((smfn =3D get_shadow_status(d, gw->l2mfn, SH_type_l2h_shadow))) ) (void) sh_audit_l2_table(v, smfn, INVALID_MFN); @@ -937,7 +937,8 @@ sh_make_shadow(struct vcpu *v, mfn_t gmf /* Lower-level shadow, not yet linked form a higher level */ mfn_to_page(smfn)->up =3D 0; =20 -#if GUEST_PAGING_LEVELS =3D=3D 4 +#if GUEST_PAGING_LEVELS >=3D 4 + #if (SHADOW_OPTIMIZATIONS & SHOPT_LINUX_L3_TOPLEVEL) if ( shadow_type =3D=3D SH_type_l4_64_shadow && unlikely(d->arch.paging.shadow.opt_flags & SHOPT_LINUX_L3_TOPLEVE= L) ) @@ -969,14 +970,12 @@ sh_make_shadow(struct vcpu *v, mfn_t gmf } } #endif -#endif =20 // Create the Xen mappings... if ( !shadow_mode_external(d) ) { switch (shadow_type) { -#if GUEST_PAGING_LEVELS =3D=3D 4 case SH_type_l4_shadow: { shadow_l4e_t *l4t =3D map_domain_page(smfn); @@ -988,8 +987,7 @@ sh_make_shadow(struct vcpu *v, mfn_t gmf unmap_domain_page(l4t); } break; -#endif -#if GUEST_PAGING_LEVELS >=3D 3 + case SH_type_l2h_shadow: BUILD_BUG_ON(sizeof(l2_pgentry_t) !=3D sizeof(shadow_l2e_t)); if ( is_pv_32bit_domain(d) ) @@ -1000,11 +998,12 @@ sh_make_shadow(struct vcpu *v, mfn_t gmf unmap_domain_page(l2t); } break; -#endif default: /* Do nothing */ break; } } =20 +#endif /* GUEST_PAGING_LEVELS >=3D 4 */ + shadow_promote(d, gmfn, shadow_type); set_shadow_status(d, gmfn, shadow_type, smfn); =20 @@ -1334,7 +1333,7 @@ void sh_destroy_l2_shadow(struct domain =20 SHADOW_DEBUG(DESTROY_SHADOW, "%"PRI_mfn"\n", mfn_x(smfn)); =20 -#if GUEST_PAGING_LEVELS >=3D 3 +#if GUEST_PAGING_LEVELS >=3D 4 ASSERT(t =3D=3D SH_type_l2_shadow || t =3D=3D SH_type_l2h_shadow); #else ASSERT(t =3D=3D SH_type_l2_shadow); @@ -1858,7 +1857,7 @@ int sh_map_and_validate_gl2he(struct vcpu *v, mfn_t gl2mfn, void *new_gl2p, u32 size) { -#if GUEST_PAGING_LEVELS >=3D 3 +#if GUEST_PAGING_LEVELS >=3D 4 return sh_map_and_validate(v, gl2mfn, new_gl2p, size, SH_type_l2h_shadow, shadow_l2_index, @@ -3359,9 +3358,7 @@ sh_update_cr3(struct vcpu *v, int do_loc gl2gfn =3D guest_l3e_get_gfn(gl3e[i]); gl2mfn =3D get_gfn_query_unlocked(d, gfn_x(gl2gfn), &p2mt); if ( p2m_is_ram(p2mt) ) - sh_set_toplevel_shadow(v, i, gl2mfn, (i =3D=3D 3) - ? SH_type_l2h_shadow - : SH_type_l2_shadow, + sh_set_toplevel_shadow(v, i, gl2mfn, SH_type_l2_shadow, sh_make_shadow); else sh_set_toplevel_shadow(v, i, INVALID_MFN, 0, @@ -3663,7 +3660,7 @@ void sh_clear_shadow_entry(struct domain (void) shadow_set_l1e(d, ep, shadow_l1e_empty(), p2m_invalid, smfn= ); break; case SH_type_l2_shadow: -#if GUEST_PAGING_LEVELS >=3D 3 +#if GUEST_PAGING_LEVELS >=3D 4 case SH_type_l2h_shadow: #endif (void) shadow_set_l2e(d, ep, shadow_l2e_empty(), smfn); @@ -4115,10 +4112,8 @@ int sh_audit_l3_table(struct vcpu *v, mf mfn =3D shadow_l3e_get_mfn(*sl3e); gmfn =3D get_shadow_status(d, get_gfn_query_unlocked( d, gfn_x(gfn), &p2mt), - ((GUEST_PAGING_LEVELS =3D=3D 3 || - is_pv_32bit_domain(d)) - && !shadow_mode_external(d) - && (guest_index(gl3e) % 4) =3D=3D 3) + (is_pv_32bit_domain(d) && + guest_index(gl3e) =3D=3D 3) ? SH_type_l2h_shadow : SH_type_l2_shadow); if ( !mfn_eq(gmfn, mfn) ) --- a/xen/arch/x86/mm/shadow/types.h +++ b/xen/arch/x86/mm/shadow/types.h @@ -195,7 +195,6 @@ static inline shadow_l4e_t shadow_l4e_fr #define SH_type_l1_shadow SH_type_l1_pae_shadow #define SH_type_fl1_shadow SH_type_fl1_pae_shadow #define SH_type_l2_shadow SH_type_l2_pae_shadow -#define SH_type_l2h_shadow SH_type_l2h_pae_shadow #elif GUEST_PAGING_LEVELS =3D=3D 4 #define SH_type_l1_shadow SH_type_l1_64_shadow #define SH_type_fl1_shadow SH_type_fl1_64_shadow