[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[xen master] NUMA: limit first_valid_mfn exposure



commit 5e600b4fb9a0ff6a692dbd22d80b18a94da561be
Author:     Jan Beulich <jbeulich@xxxxxxxx>
AuthorDate: Mon Jan 15 12:15:56 2024 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Mon Jan 15 12:15:56 2024 +0100

    NUMA: limit first_valid_mfn exposure
    
    Address the TODO regarding first_valid_mfn by making the variable static
    when NUMA=y, thus also addressing a Misra C:2012 rule 8.4 concern (on
    x86). To carry this out, introduce two new IS_ENABLED()-like macros
    conditionally inserting "static". One less macro expansion layer is
    sufficient though (I might guess that some early form of IS_ENABLED()
    pasted CONFIG_ onto the incoming argument, at which point the extra
    layer would have been necessary), and part of the existing helper macros
    can be re-used.
    
    Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>
    Reviewed-by: Julien Grall <jgrall@xxxxxxxxxx>
---
 xen/common/page_alloc.c   |  8 +++-----
 xen/include/xen/kconfig.h | 13 +++++++++++++
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/xen/common/page_alloc.c b/xen/common/page_alloc.c
index d874525916..740b6f0ff7 100644
--- a/xen/common/page_alloc.c
+++ b/xen/common/page_alloc.c
@@ -255,12 +255,10 @@ static PAGE_LIST_HEAD(page_broken_list);
  */
 
 /*
- * first_valid_mfn is exported because it is used when !CONFIG_NUMA.
- *
- * TODO: Consider if we can conditionally export first_valid_mfn based
- * on whether NUMA is selected.
+ * When !CONFIG_NUMA first_valid_mfn is non-static, for use by respective
+ * stubs.
  */
-mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER;
+STATIC_IF(CONFIG_NUMA) mfn_t first_valid_mfn = INVALID_MFN_INITIALIZER;
 
 struct bootmem_region {
     unsigned long s, e; /* MFNs @s through @e-1 inclusive are free */
diff --git a/xen/include/xen/kconfig.h b/xen/include/xen/kconfig.h
index a717b0819c..c25dc0f6c2 100644
--- a/xen/include/xen/kconfig.h
+++ b/xen/include/xen/kconfig.h
@@ -11,6 +11,8 @@
 /* cppcheck is failing to parse the macro so use a dummy one */
 #ifdef CPPCHECK
 #define IS_ENABLED(option) option
+#define STATIC_IF(option) option
+#define STATIC_IF_NOT(option) option
 #else
 /*
  * Getting something that works in C and CPP for an arg that may or may
@@ -31,6 +33,17 @@
  * otherwise.
  */
 #define IS_ENABLED(option) config_enabled(option)
+
+/* Use similar trickery for conditionally inserting "static". */
+#define static_if(value) _static_if(__ARG_PLACEHOLDER_##value)
+#define _static_if(arg1_or_junk) ___config_enabled(arg1_or_junk static,)
+
+#define STATIC_IF(option) static_if(option)
+
+#define static_if_not(value) _static_if_not(__ARG_PLACEHOLDER_##value)
+#define _static_if_not(arg1_or_junk) ___config_enabled(arg1_or_junk, static)
+
+#define STATIC_IF_NOT(option) static_if_not(option)
 #endif
 
 #endif /* __XEN_KCONFIG_H */
--
generated by git-patchbot for /home/xen/git/xen.git#master



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.