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

Re: [PATCH] xen/arm: Drop process_shm_chosen()


  • To: Bertrand Marquis <Bertrand.Marquis@xxxxxxx>
  • From: "Orzel, Michal" <michal.orzel@xxxxxxx>
  • Date: Tue, 1 Apr 2025 16:22:54 +0200
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none
  • 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=SjyrndyVo2+ZlN/22DnDdyVsBvHEPlDTRQGZAvj5WAM=; b=RqSYbMshHQy+7lhC3db1du7zRoaYIjEde/OEVYJD008xSWQL0m4rAa4ratUoZ4b/BKKGTgpXvA9ZKg2WkWHKKplSxeM5/1p8dmnjmEGiF7IbJ/NVx3JZBSMfKq3Af1ltVxKCbk59JujZi7/oTVC9SvsreYAqu9sRqCSNDueTPwvtD8OCrIT8/6IhNjKkLQZi/yxFJw2dZzeUHH9EDv3hWtFTgl8A1GUAedJAMvJm2/nWbsr7YVdlDE+amSFlF8wYMSNCw3s0d0dySIdaJGZ4SM9mB1uxW75/UlBzM6qZmxD+CF3G8XfSsGuCtkwO7LfdhGD3kBFftYj68AZS36ATSg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Wm0Cwi5bUBmeSViwy6rORGgQEKmHkdoVw8TcJSdlhWVvYWzh7xTtrqQQKT3vSD2u7XVqB5K5laxAhudVazFTNKQfclQtW6ddESHXqCuR3mhGFwO4gt8uIeCL0kqKKZWbxAGW2Ur8KRdcgccBfskMLJmHtXd0qhO9WlX/R/MedLlA9GvfCBFkC41f3tVh+kW6MC5y32daRgSfKlr6ITg+uBIAdlLky+xK626u/lQdRj4F6VIo2/8DDZcjayEW6h1tlattWSrn3xuHud9HqHAaV+Z/jkLo64+VvnCK1F0WgFERl31ys4NV6zESDoWLoW8q0k2o3rv9M2jlIPC3DugGSA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amd.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 14:23:12 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>


On 01/04/2025 14:57, Bertrand Marquis wrote:
> 
> 
> 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 ?
Do you mean from hwdom or domU path? In the former it is expected. In the latter
it would be a bug given that there are several dozens of things that operate on
this node being a /chosen/domU@X node before we pass node to process_shm().

> - isn't there a NULL case to be handled if dt_find_node_by_path does not find 
> a result ?
It wasn't validated before this change. It would be catched in early boot code
so no worries.

> 
> Couldn't the condition also check for the domain to be the hwdom ?
I could although we have so many /chosen and hwdom asserts in the tree in the
dom0 creation that I find it not necessary.

~Michal




 


Rackspace

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