[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] xen/arm: Drop process_shm_chosen()
- To: Michal Orzel <michal.orzel@xxxxxxx>
- From: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
- Date: Tue, 1 Apr 2025 12:57:18 +0000
- Accept-language: en-GB, en-US
- Arc-authentication-results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=lists.xenproject.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=arm.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com])
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none
- Arc-message-signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=y5AATKNPluFdCwzXm5L3oQURTFzDKmb8VieU9s77kaI=; b=jDXCsvAOYhaWg2XdMjyH9bHTxa+zoPJgS1FcLRAUBI3ivhP5EVFkA+auDQSicj1AMoFuCxPikK0WqQpDXGjvA2xy0/H0x1MqjyYzWx2wUIP0VBjSz8MaZzsKYdU7c5EqDtn4JnGubYEiGzgLs6E2fEzdsOUoq9KuTZy7bUaGaMQQ5cxvYQZNNa2NHfdiK55Q08PExFbqHFigruBVniA4YoYBvLi0wkBTGeay6NdHpBRnjGMYWWrEp+YP10jGm8YRrSI5KL5eU44C5ahWdKutXdUZA54lsMZQ+ErDcmu1k3wCEQ/atinUZwnbFjYIyqz76WL3scZiIlahYm2JKqqVdA==
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=y5AATKNPluFdCwzXm5L3oQURTFzDKmb8VieU9s77kaI=; b=LQfeV+Ytd01KBawYKHSNlRFt0lOuu3FSc3tNl8gZwwy2D3tzzzhCogAAMKdoAaMUj3UdlI2dRNUoZJzp9AxSNs3thO5MBdqRoAqZeZcd6DEp4n7mS7VS6sdcfrq7NSpFBOhcEmg29kp7gQyBlMowcExSDtXsp05ZV7tq4u8aQjzEi5XT3ZsmdUdkHu6wB5fVhsu5PnWUCC2WW7A50ALdwLGQKzVVhP1CIYK8WGtp+tCXKAr2RIMDiXjCKSEtkY84Z9Zmr121ZLItPYi4uFcohkHc4ACBsMXFmgBQTBNiuXCk5HmHXy3qSF1/qOQkm7wmeiybl+aYs//0zw4sfYDJ6w==
- Arc-seal: i=2; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=pass; b=B35vR+jSGAjA3+pe1LdziuaTfys+lz96DAkFkkHQ14jLfM5O6SsE+J4tRr4X0gN9EMY2jnwyuHKjDQePiEquJODqHml3B+vVGHbk5GgAs8HJpsrRgPLSwgRtbKhKScITei6kHaXJL5DfVqmW5r+2YgvsKwrtPYLtApcZCSUG0WdHFgDlGarlLJVst4x/0zwm5GsZbgEQrZXyTjPqGdxuDR2Qe8iBM+MC+2H+fS+B4RT3L946O6vevFx7bxk4PyMWrsg3id0Vsygi+8xRbhUHDjfoHS9vdLrpcjqEAnjfo2dgsSWEWYG0AeWgz9x5d3kJsj0PQSfIYnwCYdQnSlyYpg==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=pXyBHVfhhpDgyzEAC83mAmfgm4hct4Ltd8dZufjkZiXBZAKM/e1TS153b1JQwoISrBOH/xpa3DVgbXE+JuFtbtwoRZaTeGh/jNDwfUKhnCfaj34YGh0Cv/b5Hk1NSZD/VeoJIifPwVPPO1VCiOmEQLIrcc9SnChUgxc2L7ZFMn2CBVqTMFIPPvTnWDGrgF7aqedt7NkpqBsTDuxNOu9+UHp+Hb/OlmYEZ5lglLVL002AN6DuZ5s0G65RDbAG+iALm9DJAzG4BYhyBrZYmcAV9b1uIK2yHMTVFtbdmIVmLi3mbkx2PWMfS5hLtGUZKFGXxIbYgu+zfiIZEsdIhJvQ+Q==
- Authentication-results-original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
- Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
- Delivery-date: Tue, 01 Apr 2025 12:57:34 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
- Nodisclaimer: true
- Original-authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com;
- Thread-index: AQHbouXQNh7nKprt5k2iUHPtnXy/N7OOxVgA
- Thread-topic: [PATCH] xen/arm: Drop process_shm_chosen()
Hi Michal,
> On 1 Apr 2025, at 11:09, Michal Orzel <michal.orzel@xxxxxxx> wrote:
>
> There's no benefit in having process_shm_chosen() next to process_shm().
> The former is just a helper to pass "/chosen" node to the latter for
> hwdom case. Drop process_shm_chosen() and instead use process_shm()
> passing NULL as node parameter, which will result in searching for and
> using /chosen to find shm node (the DT full path search is done in
> process_shm() to avoid expensive lookup if !CONFIG_STATIC_SHM). This
> will simplify future handling of hw/control domain separation.
>
> Signed-off-by: Michal Orzel <michal.orzel@xxxxxxx>
> ---
> xen/arch/arm/domain_build.c | 2 +-
> xen/arch/arm/include/asm/static-shmem.h | 14 --------------
> xen/arch/arm/static-shmem.c | 4 ++++
> 3 files changed, 5 insertions(+), 15 deletions(-)
>
> diff --git a/xen/arch/arm/domain_build.c b/xen/arch/arm/domain_build.c
> index 2b5b4331834f..7f9e17e1de4d 100644
> --- a/xen/arch/arm/domain_build.c
> +++ b/xen/arch/arm/domain_build.c
> @@ -2325,7 +2325,7 @@ int __init construct_hwdom(struct kernel_info *kinfo)
> else
> allocate_memory(d, kinfo);
>
> - rc = process_shm_chosen(d, kinfo);
> + rc = process_shm(d, kinfo, NULL);
> if ( rc < 0 )
> return rc;
>
> diff --git a/xen/arch/arm/include/asm/static-shmem.h
> b/xen/arch/arm/include/asm/static-shmem.h
> index fd0867c4f26b..94eaa9d500f9 100644
> --- a/xen/arch/arm/include/asm/static-shmem.h
> +++ b/xen/arch/arm/include/asm/static-shmem.h
> @@ -18,14 +18,6 @@ int make_resv_memory_node(const struct kernel_info *kinfo,
> int addrcells,
> int process_shm(struct domain *d, struct kernel_info *kinfo,
> const struct dt_device_node *node);
>
> -static inline int process_shm_chosen(struct domain *d,
> - struct kernel_info *kinfo)
> -{
> - const struct dt_device_node *node = dt_find_node_by_path("/chosen");
> -
> - return process_shm(d, kinfo, node);
> -}
> -
> int process_shm_node(const void *fdt, int node, uint32_t address_cells,
> uint32_t size_cells);
>
> @@ -74,12 +66,6 @@ static inline int process_shm(struct domain *d, struct
> kernel_info *kinfo,
> return 0;
> }
>
> -static inline int process_shm_chosen(struct domain *d,
> - struct kernel_info *kinfo)
> -{
> - return 0;
> -}
> -
> static inline void init_sharedmem_pages(void) {};
>
> static inline int remove_shm_from_rangeset(const struct kernel_info *kinfo,
> diff --git a/xen/arch/arm/static-shmem.c b/xen/arch/arm/static-shmem.c
> index c74fa13d4847..cda90105923d 100644
> --- a/xen/arch/arm/static-shmem.c
> +++ b/xen/arch/arm/static-shmem.c
> @@ -297,6 +297,10 @@ int __init process_shm(struct domain *d, struct
> kernel_info *kinfo,
> {
> struct dt_device_node *shm_node;
>
> + /* Hwdom case - shm node under /chosen */
> + if ( !node )
> + node = dt_find_node_by_path("/chosen");
> +
I would have 2 questions here:
- what if a NULL pointer is passed, wouldn't you wrongly look in the main
device tree ?
- isn't there a NULL case to be handled if dt_find_node_by_path does not find a
result ?
Couldn't the condition also check for the domain to be the hwdom ?
Cheers
Bertrand
> dt_for_each_child_node(node, shm_node)
> {
> const struct membank *boot_shm_bank;
> --
> 2.25.1
>
|