From: Luca Fancellu <luca.fancellu@arm.com>
To: xen-devel@lists.xenproject.org
Cc: Stefano Stabellini <sstabellini@kernel.org>,
Julien Grall <julien@xen.org>,
Bertrand Marquis <bertrand.marquis@arm.com>,
Michal Orzel <michal.orzel@amd.com>,
Volodymyr Babchuk <Volodymyr_Babchuk@epam.com>
Subject: [PATCH 04/11] xen/arm: Conditional compilation of kernel_info.shm_mem member
Date: Tue, 12 Mar 2024 13:03:24 +0000 [thread overview]
Message-ID: <20240312130331.78418-5-luca.fancellu@arm.com> (raw)
In-Reply-To: <20240312130331.78418-1-luca.fancellu@arm.com>
The user of shm_mem member of the 'struct kernel_info' is only
the code managing the static shared memory feature, which can be
compiled out using CONFIG_STATIC_SHM, so in case the feature is
not requested, that member won't be used and will waste memory
space.
To address this issue, protect the member with the Kconfig parameter
and modify the signature of the only function using it to remove
any reference to the member from outside the static-shmem module.
Signed-off-by: Luca Fancellu <luca.fancellu@arm.com>
---
xen/arch/arm/dom0less-build.c | 3 +--
xen/arch/arm/domain_build.c | 3 +--
xen/arch/arm/include/asm/kernel.h | 10 +++++++++-
xen/arch/arm/include/asm/static-shmem.h | 11 ++++++-----
xen/arch/arm/static-shmem.c | 8 +++++---
5 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/xen/arch/arm/dom0less-build.c b/xen/arch/arm/dom0less-build.c
index 0165da6f2986..fe2a771d4984 100644
--- a/xen/arch/arm/dom0less-build.c
+++ b/xen/arch/arm/dom0less-build.c
@@ -647,8 +647,7 @@ static int __init prepare_dtb_domU(struct domain *d, struct kernel_info *kinfo)
if ( ret )
goto err;
- ret = make_resv_memory_node(d, kinfo->fdt, addrcells, sizecells,
- &kinfo->shm_mem.common);
+ ret = make_resv_memory_node(d, kinfo, addrcells, sizecells);
if ( ret )
goto err;
diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
index 62fcdfbdaff2..b254f252e7cb 100644
--- a/xen/arch/arm/domain_build.c
+++ b/xen/arch/arm/domain_build.c
@@ -1780,8 +1780,7 @@ static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
return res;
}
- res = make_resv_memory_node(d, kinfo->fdt, addrcells, sizecells,
- &kinfo->shm_mem.common);
+ res = make_resv_memory_node(d, kinfo, addrcells, sizecells);
if ( res )
return res;
}
diff --git a/xen/arch/arm/include/asm/kernel.h b/xen/arch/arm/include/asm/kernel.h
index d28b843c01a9..5785da985ccf 100644
--- a/xen/arch/arm/include/asm/kernel.h
+++ b/xen/arch/arm/include/asm/kernel.h
@@ -39,7 +39,9 @@ struct kernel_info {
void *fdt; /* flat device tree */
paddr_t unassigned_mem; /* RAM not (yet) assigned to a bank */
struct meminfo mem;
+#ifdef CONFIG_STATIC_SHM
struct meminfo shm_mem;
+#endif
/* kernel entry point */
paddr_t entry;
@@ -81,10 +83,16 @@ struct kernel_info {
#define kernel_info_get_mem(kinfo) \
(&(kinfo)->mem.common)
+#ifdef CONFIG_STATIC_SHM
+#define KERNEL_INFO_SHM_MEM_INIT .shm_mem.common.max_banks = NR_MEM_BANKS,
+#else
+#define KERNEL_INFO_SHM_MEM_INIT
+#endif
+
#define KERNEL_INFO_INIT \
{ \
.mem.common.max_banks = NR_MEM_BANKS, \
- .shm_mem.common.max_banks = NR_MEM_BANKS, \
+ KERNEL_INFO_SHM_MEM_INIT \
}
/*
diff --git a/xen/arch/arm/include/asm/static-shmem.h b/xen/arch/arm/include/asm/static-shmem.h
index cc6b414ed79b..108cedb55a9f 100644
--- a/xen/arch/arm/include/asm/static-shmem.h
+++ b/xen/arch/arm/include/asm/static-shmem.h
@@ -7,8 +7,9 @@
#ifdef CONFIG_STATIC_SHM
-int make_resv_memory_node(const struct domain *d, void *fdt, int addrcells,
- int sizecells, const struct membanks *mem);
+int make_resv_memory_node(const struct domain *d,
+ const struct kernel_info *kinfo, int addrcells,
+ int sizecells);
int process_shm(struct domain *d, struct kernel_info *kinfo,
const struct dt_device_node *node);
@@ -26,9 +27,9 @@ int process_shm_node(const void *fdt, int node, uint32_t address_cells,
#else /* !CONFIG_STATIC_SHM */
-static inline int make_resv_memory_node(const struct domain *d, void *fdt,
- int addrcells, int sizecells,
- const struct membanks *mem)
+static inline int make_resv_memory_node(const struct domain *d,
+ const struct kernel_info *kinfo,
+ int addrcells, int sizecells)
{
return 0;
}
diff --git a/xen/arch/arm/static-shmem.c b/xen/arch/arm/static-shmem.c
index fdc3bccde402..8b7da952be6e 100644
--- a/xen/arch/arm/static-shmem.c
+++ b/xen/arch/arm/static-shmem.c
@@ -490,13 +490,15 @@ int __init process_shm_node(const void *fdt, int node, uint32_t address_cells,
return 0;
}
-int __init make_resv_memory_node(const struct domain *d, void *fdt,
- int addrcells, int sizecells,
- const struct membanks *mem)
+int __init make_resv_memory_node(const struct domain *d,
+ const struct kernel_info *kinfo,
+ int addrcells, int sizecells)
{
int res = 0;
/* Placeholder for reserved-memory\0 */
const char resvbuf[16] = "reserved-memory";
+ const struct membanks *mem = &kinfo->shm_mem.common;
+ void *fdt = kinfo->fdt;
if ( mem->nr_banks == 0 )
/* No shared memory provided. */
--
2.34.1
next prev parent reply other threads:[~2024-03-12 13:04 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-12 13:03 [PATCH 00/11] Static shared memory followup v2 - pt1 Luca Fancellu
2024-03-12 13:03 ` [PATCH 01/11] xen/arm: remove stale addr_cells/size_cells in assign_shared_memory Luca Fancellu
2024-03-12 13:03 ` [PATCH 02/11] xen/arm: avoid repetitive checking in process_shm_node Luca Fancellu
2024-03-19 10:57 ` Michal Orzel
2024-03-12 13:03 ` [PATCH 03/11] xen/arm: Introduce a generic way to access memory bank structures Luca Fancellu
2024-03-19 13:10 ` Michal Orzel
2024-03-19 13:30 ` Luca Fancellu
2024-03-20 9:30 ` Julien Grall
2024-03-12 13:03 ` Luca Fancellu [this message]
2024-03-19 14:58 ` [PATCH 04/11] xen/arm: Conditional compilation of kernel_info.shm_mem member Michal Orzel
2024-04-04 9:27 ` Luca Fancellu
2024-04-04 9:33 ` Michal Orzel
2024-03-12 13:03 ` [PATCH 05/11] xen/arm: Introduce helper for static memory pages Luca Fancellu
2024-03-20 10:41 ` Michal Orzel
2024-03-12 13:03 ` [PATCH 06/11] xen/arm: Avoid code duplication in find_unallocated_memory Luca Fancellu
2024-03-20 10:57 ` Michal Orzel
2024-03-20 14:53 ` Luca Fancellu
2024-03-21 9:02 ` Michal Orzel
2024-03-12 13:03 ` [PATCH 07/11] xen/arm: Avoid code duplication in check_reserved_regions_overlap Luca Fancellu
2024-03-12 13:03 ` [PATCH 08/11] xen/arm: Reduce struct membank size on static shared memory Luca Fancellu
2024-03-22 10:30 ` Michal Orzel
2024-04-04 9:33 ` Luca Fancellu
2024-04-04 11:19 ` Michal Orzel
2024-03-12 13:03 ` [PATCH 09/11] xen/arm: remove shm holes for extended regions Luca Fancellu
2024-03-22 15:09 ` Michal Orzel
2024-03-22 20:11 ` Luca Fancellu
2024-03-12 13:03 ` [PATCH 10/11] xen/arm: fix duplicate /reserved-memory node in Dom0 Luca Fancellu
2024-03-25 8:09 ` Michal Orzel
2024-03-12 13:03 ` [PATCH 11/11] xen/arm: List static shared memory regions as /memory nodes Luca Fancellu
2024-03-25 8:58 ` Michal Orzel
2024-03-26 14:19 ` Luca Fancellu
2024-03-27 8:27 ` Michal Orzel
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=20240312130331.78418-5-luca.fancellu@arm.com \
--to=luca.fancellu@arm.com \
--cc=Volodymyr_Babchuk@epam.com \
--cc=bertrand.marquis@arm.com \
--cc=julien@xen.org \
--cc=michal.orzel@amd.com \
--cc=sstabellini@kernel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.