|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [RFC PATCH 3/4] xen/arm: Move make_resv_memory_node()
On Sun, 22 Jun 2025, Koichiro Den wrote:
> The /reserved-memory node is inherently not specific to static-shmem. In
> the next commit, child nodes will be added under /reserved-memory for
> the stolen time shared memory regions.
>
> No functional changes intended.
>
> Signed-off-by: Koichiro Den <den@xxxxxxxxxxxxx>
This causes a build failure when CONFIG_STATIC_SHM is missing.
arch/arm/domain_build.c: In function ‘make_resv_memory_node’:
arch/arm/domain_build.c:1567:34: error: implicit declaration of function
‘kernel_info_get_shm_mem_const’; did you mean ‘kernel_info_get_mem_const’?
[-Werror=implicit-function-declaration]
1567 | const struct membanks *mem = kernel_info_get_shm_mem_const(kinfo);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| kernel_info_get_mem_const
arch/arm/domain_build.c:1567:34: error: nested extern declaration of
‘kernel_info_get_shm_mem_const’ [-Werror=nested-externs]
arch/arm/domain_build.c:1567:34: error: initialization of ‘const struct
membanks *’ from ‘int’ makes pointer from integer without a cast
[-Werror=int-conversion]
> ---
> xen/arch/arm/domain_build.c | 40 +++++++++++++++++++++++++++
> xen/common/device-tree/static-shmem.c | 40 ---------------------------
> xen/include/xen/fdt-domain-build.h | 2 ++
> xen/include/xen/static-shmem.h | 9 ------
> 4 files changed, 42 insertions(+), 49 deletions(-)
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 967ca6f375ca..85b6909e2b0e 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -1561,6 +1561,46 @@ int __init make_chosen_node(const struct kernel_info
> *kinfo)
> return res;
> }
>
> +int __init make_resv_memory_node(const struct kernel_info *kinfo, int
> addrcells,
> + int sizecells)
> +{
> + const struct membanks *mem = kernel_info_get_shm_mem_const(kinfo);
> + void *fdt = kinfo->fdt;
> + int res = 0;
> + /* Placeholder for reserved-memory\0 */
> + const char resvbuf[16] = "reserved-memory";
> +
> + if ( mem->nr_banks == 0 )
> + /* No shared memory provided. */
> + return 0;
> +
> + dt_dprintk("Create reserved-memory node\n");
> +
> + res = fdt_begin_node(fdt, resvbuf);
> + if ( res )
> + return res;
> +
> + res = fdt_property(fdt, "ranges", NULL, 0);
> + if ( res )
> + return res;
> +
> + res = fdt_property_cell(fdt, "#address-cells", addrcells);
> + if ( res )
> + return res;
> +
> + res = fdt_property_cell(fdt, "#size-cells", sizecells);
> + if ( res )
> + return res;
> +
> + res = make_shm_resv_memory_node(kinfo, addrcells, sizecells);
> + if ( res )
> + return res;
> +
> + res = fdt_end_node(fdt);
> +
> + return res;
> +}
> +
> static int __init handle_node(struct domain *d, struct kernel_info *kinfo,
> struct dt_device_node *node,
> p2m_type_t p2mt)
> diff --git a/xen/common/device-tree/static-shmem.c
> b/xen/common/device-tree/static-shmem.c
> index 8023c0a484c1..7eede97fa25d 100644
> --- a/xen/common/device-tree/static-shmem.c
> +++ b/xen/common/device-tree/static-shmem.c
> @@ -730,46 +730,6 @@ int __init process_shm_node(const void *fdt, int node,
> uint32_t address_cells,
> return 0;
> }
>
> -int __init make_resv_memory_node(const struct kernel_info *kinfo, int
> addrcells,
> - int sizecells)
> -{
> - const struct membanks *mem = kernel_info_get_shm_mem_const(kinfo);
> - void *fdt = kinfo->fdt;
> - int res = 0;
> - /* Placeholder for reserved-memory\0 */
> - const char resvbuf[16] = "reserved-memory";
> -
> - if ( mem->nr_banks == 0 )
> - /* No shared memory provided. */
> - return 0;
> -
> - dt_dprintk("Create reserved-memory node\n");
> -
> - res = fdt_begin_node(fdt, resvbuf);
> - if ( res )
> - return res;
> -
> - res = fdt_property(fdt, "ranges", NULL, 0);
> - if ( res )
> - return res;
> -
> - res = fdt_property_cell(fdt, "#address-cells", addrcells);
> - if ( res )
> - return res;
> -
> - res = fdt_property_cell(fdt, "#size-cells", sizecells);
> - if ( res )
> - return res;
> -
> - res = make_shm_resv_memory_node(kinfo, addrcells, sizecells);
> - if ( res )
> - return res;
> -
> - res = fdt_end_node(fdt);
> -
> - return res;
> -}
> -
> void __init early_print_info_shmem(void)
> {
> const struct membanks *shmem = bootinfo_get_shmem();
> diff --git a/xen/include/xen/fdt-domain-build.h
> b/xen/include/xen/fdt-domain-build.h
> index 45981dbec0b8..e9418857e386 100644
> --- a/xen/include/xen/fdt-domain-build.h
> +++ b/xen/include/xen/fdt-domain-build.h
> @@ -25,6 +25,8 @@ int construct_domain(struct domain *d, struct kernel_info
> *kinfo);
> int construct_hwdom(struct kernel_info *kinfo,
> const struct dt_device_node *node);
> int make_chosen_node(const struct kernel_info *kinfo);
> +int make_resv_memory_node(const struct kernel_info *kinfo,
> + int addrcells, int sizecells);
> int make_cpus_node(const struct domain *d, void *fdt);
> int make_hypervisor_node(struct domain *d, const struct kernel_info *kinfo,
> int addrcells, int sizecells);
> diff --git a/xen/include/xen/static-shmem.h b/xen/include/xen/static-shmem.h
> index 76a49869126c..4afa9107de5d 100644
> --- a/xen/include/xen/static-shmem.h
> +++ b/xen/include/xen/static-shmem.h
> @@ -11,9 +11,6 @@
> /* Worst case /memory node reg element: (addrcells + sizecells) */
> #define DT_MEM_NODE_REG_RANGE_SIZE ((NR_MEM_BANKS + NR_SHMEM_BANKS) * 4)
>
> -int make_resv_memory_node(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);
>
> @@ -50,12 +47,6 @@ kernel_info_get_shm_mem_const(const struct kernel_info
> *kinfo)
> /* Worst case /memory node reg element: (addrcells + sizecells) */
> #define DT_MEM_NODE_REG_RANGE_SIZE (NR_MEM_BANKS * 4)
>
> -static inline int make_resv_memory_node(const struct kernel_info *kinfo,
> - int addrcells, int sizecells)
> -{
> - return 0;
> -}
> -
> static inline int process_shm(struct domain *d, struct kernel_info *kinfo,
> const struct dt_device_node *node)
> {
> --
> 2.48.1
>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |