From nobody Fri Mar 29 09:48:25 2024 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; 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=fail(p=none dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1590051920; cv=none; d=zohomail.com; s=zohoarc; b=BHgVjVinFgWvrk3hUaCkH28tOGEm2fCiGAUT43csAqWZ85XPyln+2hPOmVzHiXqFMXsYahtnE1MEhp2S7vu720t2hsjvaODX1mzejFDaDA5B9fhW3hhCeCuYL9VsAUEK8NkJLu6vQrnTPRX+uMoHH40imo0/XSku1rpjikejeKA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1590051920; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=scV9dlsmtu6h9fzCouLvi/7o9fE4woHLRQiC3nTmThE=; b=fKFiqVb+iFmXsG9juCvXq+gc8p81pu1mvr57y2Kvg1t3Kz7NnE0+CfzCiYXxRNjg8N3ZO1huf0nAripwSNMU40AvqRHOySyrJg3c2DbrkQe8yFMYeS1C3bwzJDnG7L2UXsQMWcEUBzcwIocdpy0WklIRTx37gnfI0C/Tsp8YxLY= ARC-Authentication-Results: i=1; mx.zohomail.com; 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=fail header.from= (p=none 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 1590051920761155.40741461445486; Thu, 21 May 2020 02:05:20 -0700 (PDT) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jbh8O-0002J7-M8; Thu, 21 May 2020 09:05:00 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1jbh8N-0002J2-Uq for xen-devel@lists.xenproject.org; Thu, 21 May 2020 09:04:59 +0000 Received: from esa4.hc3370-68.iphmx.com (unknown [216.71.155.144]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 25005354-9b42-11ea-9887-bc764e2007e4; Thu, 21 May 2020 09:04:58 +0000 (UTC) X-Inumbo-ID: 25005354-9b42-11ea-9887-bc764e2007e4 Authentication-Results: esa4.hc3370-68.iphmx.com; dkim=none (message not signed) header.i=none IronPort-SDR: ZxisDAJGiEEQi+wn7XLXo4t7iJDISE4CYylorTX8S37foyF5JiulHCVRVgMB4ZmwIqM+w2vYsl 0jM6loOkmIbvYZFK/CpsQzUhCCAElw9TojHcuBLAcGhAUi50y08+zvCPzu4eF2WFlagt2DaUdv fjuTgBXnAUN+romk8ZsHS8vf/7sP7a5q9KHeWvN0Przo+0Cfe6yEc3hDo4+DFlKR33WkalJ7mL thw31QDtDcQuorTBVUHycblNk3FIxsB3WlpzlsZTWiVQc7UGtHA3JToHuL/VZTViGGbfSrx3Oa TBA= X-SBRS: 2.7 X-MesageID: 18780728 X-Ironport-Server: esa4.hc3370-68.iphmx.com X-Remote-IP: 162.221.158.21 X-Policy: $RELAYED X-IronPort-AV: E=Sophos;i="5.73,417,1583211600"; d="scan'208";a="18780728" From: Andrew Cooper To: Xen-devel Subject: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p() Date: Thu, 21 May 2020 10:04:28 +0100 Message-ID: <20200521090428.11425-1-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.11.0 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Andrew Cooper , Tim Deegan , Wei Liu , Jan Beulich , =?UTF-8?q?Roger=20Pau=20Monn=C3=A9?= Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with: common.c:41:12: error: =E2=80=98sh_remove_write_access_from_sl1p=E2=80=99= declared =E2=80=98static=E2=80=99 but never defined [-Werror=3Dunused-func= tion] static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ due to an unguarded forward declaration. It turns out there is no need to forward declare sh_remove_write_access_from_sl1p() to begin with, so move it to just ahead = of its first users, which is within a larger #ifdef'd SHOPT_OUT_OF_SYNC block. Fix up for style while moving it. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Roger Pau Monn=C3=A9 Reviewed-by: Tim Deegan --- CC: Jan Beulich CC: Wei Liu CC: Roger Pau Monn=C3=A9 CC: Tim Deegan --- xen/arch/x86/mm/shadow/common.c | 56 ++++++++++++++++++-------------------= ---- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/xen/arch/x86/mm/shadow/common.c b/xen/arch/x86/mm/shadow/commo= n.c index 0ac3f880e1..6dff240e97 100644 --- a/xen/arch/x86/mm/shadow/common.c +++ b/xen/arch/x86/mm/shadow/common.c @@ -38,9 +38,6 @@ #include #include "private.h" =20 -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, - mfn_t smfn, unsigned long offs= et); - DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags); =20 static int sh_enable_log_dirty(struct domain *, bool log_global); @@ -252,6 +249,31 @@ static inline void _sh_resync_l1(struct vcpu *v, mfn_t= gmfn, mfn_t snpmfn) SHADOW_INTERNAL_NAME(sh_resync_l1, 4)(v, gmfn, snpmfn); } =20 +static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, + mfn_t smfn, unsigned long off) +{ + struct page_info *sp =3D mfn_to_page(smfn); + + ASSERT(mfn_valid(smfn)); + ASSERT(mfn_valid(gmfn)); + + if ( sp->u.sh.type =3D=3D SH_type_l1_32_shadow || + sp->u.sh.type =3D=3D SH_type_fl1_32_shadow ) + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 2) + (d, gmfn, smfn, off); + + if ( sp->u.sh.type =3D=3D SH_type_l1_pae_shadow || + sp->u.sh.type =3D=3D SH_type_fl1_pae_shadow ) + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 3) + (d, gmfn, smfn, off); + + if ( sp->u.sh.type =3D=3D SH_type_l1_64_shadow || + sp->u.sh.type =3D=3D SH_type_fl1_64_shadow ) + return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 4) + (d, gmfn, smfn, off); + + return 0; +} =20 /* * Fixup arrays: We limit the maximum number of writable mappings to @@ -2001,34 +2023,6 @@ int sh_remove_write_access(struct domain *d, mfn_t g= mfn, } #endif /* CONFIG_HVM */ =20 -#if (SHADOW_OPTIMIZATIONS & SHOPT_OUT_OF_SYNC) -static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn, - mfn_t smfn, unsigned long off) -{ - struct page_info *sp =3D mfn_to_page(smfn); - - ASSERT(mfn_valid(smfn)); - ASSERT(mfn_valid(gmfn)); - - if ( sp->u.sh.type =3D=3D SH_type_l1_32_shadow - || sp->u.sh.type =3D=3D SH_type_fl1_32_shadow ) - { - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,2) - (d, gmfn, smfn, off); - } - else if ( sp->u.sh.type =3D=3D SH_type_l1_pae_shadow - || sp->u.sh.type =3D=3D SH_type_fl1_pae_shadow ) - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,3) - (d, gmfn, smfn, off); - else if ( sp->u.sh.type =3D=3D SH_type_l1_64_shadow - || sp->u.sh.type =3D=3D SH_type_fl1_64_shadow ) - return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p,4) - (d, gmfn, smfn, off); - - return 0; -} -#endif - /*************************************************************************= */ /* Remove all mappings of a guest frame from the shadow tables. * Returns non-zero if we need to flush TLBs. */ --=20 2.11.0