From: Andrew Cooper <andrew.cooper3@citrix.com>
To: Xen-devel <xen-devel@lists.xenproject.org>
Cc: "Andrew Cooper" <andrew.cooper3@citrix.com>,
"Tim Deegan" <tim@xen.org>, "Wei Liu" <wl@xen.org>,
"Jan Beulich" <JBeulich@suse.com>,
"Roger Pau Monné" <roger.pau@citrix.com>
Subject: [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p()
Date: Thu, 21 May 2020 10:04:28 +0100 [thread overview]
Message-ID: <20200521090428.11425-1-andrew.cooper3@citrix.com> (raw)
When compiling with SHOPT_OUT_OF_SYNC disabled, the build fails with:
common.c:41:12: error: ‘sh_remove_write_access_from_sl1p’ declared ‘static’ but never defined [-Werror=unused-function]
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 <andrew.cooper3@citrix.com>
---
CC: Jan Beulich <JBeulich@suse.com>
CC: Wei Liu <wl@xen.org>
CC: Roger Pau Monné <roger.pau@citrix.com>
CC: Tim Deegan <tim@xen.org>
---
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/common.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 <xen/numa.h>
#include "private.h"
-static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
- mfn_t smfn, unsigned long offset);
-
DEFINE_PER_CPU(uint32_t,trace_shadow_path_flags);
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);
}
+static int sh_remove_write_access_from_sl1p(struct domain *d, mfn_t gmfn,
+ mfn_t smfn, unsigned long off)
+{
+ struct page_info *sp = mfn_to_page(smfn);
+
+ ASSERT(mfn_valid(smfn));
+ ASSERT(mfn_valid(gmfn));
+
+ if ( sp->u.sh.type == SH_type_l1_32_shadow ||
+ sp->u.sh.type == 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 == SH_type_l1_pae_shadow ||
+ sp->u.sh.type == 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 == SH_type_l1_64_shadow ||
+ sp->u.sh.type == SH_type_fl1_64_shadow )
+ return SHADOW_INTERNAL_NAME(sh_rm_write_access_from_sl1p, 4)
+ (d, gmfn, smfn, off);
+
+ return 0;
+}
/*
* 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 gmfn,
}
#endif /* CONFIG_HVM */
-#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 = mfn_to_page(smfn);
-
- ASSERT(mfn_valid(smfn));
- ASSERT(mfn_valid(gmfn));
-
- if ( sp->u.sh.type == SH_type_l1_32_shadow
- || sp->u.sh.type == 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 == SH_type_l1_pae_shadow
- || sp->u.sh.type == 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 == SH_type_l1_64_shadow
- || sp->u.sh.type == 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. */
--
2.11.0
next reply other threads:[~2020-05-21 9:05 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-21 9:04 Andrew Cooper [this message]
2020-05-21 10:12 ` [PATCH] x86/shadow: Reposition sh_remove_write_access_from_sl1p() Paul Durrant
2020-05-21 10:26 ` Andrew Cooper
2020-05-21 10:26 ` Roger Pau Monné
2020-05-21 10:32 ` Andrew Cooper
2020-05-21 12:22 ` Roger Pau Monné
2020-05-24 11:52 ` Tim Deegan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200521090428.11425-1-andrew.cooper3@citrix.com \
--to=andrew.cooper3@citrix.com \
--cc=JBeulich@suse.com \
--cc=roger.pau@citrix.com \
--cc=tim@xen.org \
--cc=wl@xen.org \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).