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

Re: [PATCH] xen/device-tree: Allow exact match for overlapping regions


  • To: Julien Grall <julien@xxxxxxx>, Luca Fancellu <luca.fancellu@xxxxxxx>, <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Michal Orzel <michal.orzel@xxxxxxx>
  • Date: Wed, 13 Nov 2024 16:40:16 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=xen.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0)
  • 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=F/FDKCnQOZF5yrtWxNQrp1Ut7BCPbxzOL104qhAtDwM=; b=iV9zx/xk30m2ESA22SGh+VDyUMNrkuni7sROdBI/ZhlRzD1rzQGV5z3UoxMz1xqesk6LE8L0ltmpTCL0sTHT9Tsa+dWv71h93I/UISI87oo2wv0+aIBezkIr/g31Ldu/XLxiaU0TvdNqBFs5XSUhPDe+v/lweS8ZuD5GoQuAzzkZbXyMmJLEGCcCWH8Pf8zEVVD6U/ky4m5Qh7DgseeQn+JYViEetcAn+zJa0/521ZANS9YOy3IhzobR0y6LiLWa5H1czNKbNvct6uKyxURHR3gbxD57/xHsAzOjeojPbaRd/W2fIMSMiBFJeMqLPFpFBgW/q7my6NKhMgmROaT6bQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=P3UWN4v8ZKkMFlAELIeLmVjSfLExmOjjVSCSft0L1zfKOdoK5jqF5Zwc4hyb62jzFF2dJVdJ/L1rry1O32AsdWRYPBFQTNu6gZCUE02OvdeglGOmw3nyE2LfFuPBQWP96GRzBuUR6SwVMioX+UV+1Z8Yp3iyxZWy9/lQZR2RdIi2vQFRwuKN6q/WG/KjEz9FFHC2jW6TYe7v2ibTnEa17h0xaAwdXu5bFfN0amO14+adq48i93iGUnFYq/WkkB6Yyv0aCJ+YJRVaj1y0x5HgY/4otFY+b56DsuhjhB5HEZpyPfFfhUM5T5DwfKrM/9NjAr+pCjL3HQA6yE2yB26EVw==
  • Cc: Stefano Stabellini <sstabellini@xxxxxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>, Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx>, Grygorii Strashko <grygorii_strashko@xxxxxxxx>
  • Delivery-date: Wed, 13 Nov 2024 15:40:43 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>


On 13/11/2024 15:40, Julien Grall wrote:
> 
> 
> Hi,
> 
> On 13/11/2024 14:19, Michal Orzel wrote:
>>
>>
>> On 13/11/2024 14:50, Julien Grall wrote:
>>>
>>>
>>> Hi Michal,
>>>
>>> On 06/11/2024 15:07, Michal Orzel wrote:
>>>>
>>>>
>>>> On 06/11/2024 14:41, Luca Fancellu wrote:
>>>>>
>>>>>
>>>>> There are some cases where the device tree exposes a memory range
>>>>> in both /memreserve/ and reserved-memory node, in this case the
>>>>> current code will stop Xen to boot since it will find that the
>>>>> latter range is clashing with the already recorded /memreserve/
>>>>> ranges.
>>>>>
>>>>> Furthermore, u-boot lists boot modules ranges, such as ramdisk,
>>>>> in the /memreserve/ part and even in this case this will prevent
>>>>> Xen to boot since it will see that the module memory range that
>>>>> it is going to add in 'add_boot_module' clashes with a /memreserve/
>>>>> range.
>>>>>
>>>>> When Xen populate the data structure that tracks the memory ranges,
>>>>> it also adds a memory type described in 'enum membank_type', so
>>>>> in order to fix this behavior, allow the 'check_reserved_regions_overlap'
>>>>> function to check for exact memory range match given a specific memory
>>>>> type; allowing reserved-memory node ranges and boot modules to have an
>>>>> exact match with ranges from /memreserve/.
>>>>>
>>>>> While there, set a type for the memory recorded during ACPI boot.
>>>>>
>>>>> Fixes: 53dc37829c31 ("xen/arm: Add DT reserve map regions to 
>>>>> bootinfo.reserved_mem")
>>>>> Reported-by: Shawn Anastasio <sanastasio@xxxxxxxxxxxxxxxxxxxxx>
>>>>> Reported-by: Grygorii Strashko <grygorii_strashko@xxxxxxxx>
>>>>> Signed-off-by: Luca Fancellu <luca.fancellu@xxxxxxx>
>>>>> ---
>>>>> I tested this patch adding the same range in a /memreserve/ entry and
>>>>> /reserved-memory node, and by letting u-boot pass a ramdisk.
>>>>> I've also tested that a configuration running static shared memory still 
>>>>> works
>>>>> fine.
>>>>> ---
>>>> So we have 2 separate issues. I don't particularly like the concept of 
>>>> introducing MEMBANK_NONE
>>>> and the changes below look a bit too much for me, given that for boot 
>>>> modules we can only have
>>>> /memreserve/ matching initrd.
>>>
>>> How so? Is this an observation or part of a specification?
>> Not sure what specification you would want to see.
> 
> Anything that you bake your observation. My concern with observation is ...
> 
>   It's all part of U-Boot and Linux behavior that is not documented
> (except for code comments).
>> My statement is based on the U-Boot and Linux behavior. U-Boot part only 
>> present for initrd:
>> https://github.com/u-boot/u-boot/blob/master/boot/fdt_support.c#L249
> 
> ... a user is not forced to use U-boot. So this is not a good reason to
I thought that this behavior is solely down to u-boot playing tricks with 
memreserve.

> rely on it. If Linux starts to rely on it, then it is probably a better
> argument, but first I would need to see the code. Can you paste a link?
Not sure how I would do that given that it is all scattered. But if it means 
sth, here is kexec code
to create fdt. It is clear they do the same trick as u-boot.
https://github.com/torvalds/linux/blob/master/drivers/of/kexec.c#L355

> 
>>
>> For things that Xen can be interested in, only region for ramdisk for dom0 
>> can match the /memreserve/ region.
>> Providing a generic solution (like Luca did) would want providing an example 
>> of sth else that can match which I'm not aware of.
> 
> I would argue this is the other way around. If we are not certain that
> /memreserve/ will not be used for any other boot module, then we should
> have a generic solution. Otherwise, we will end up with similar weird
> issue in the future.
We have 3 possible modules for bootloader->kernel workflow: kernel, dtb and 
ramdisk. The first 2 are not described in DT so I'm not sure
what are your examples of bootmodules for which you want kernel know about 
memory reservation other than ramdisk.

~Michal



 


Rackspace

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