Hi All,
On 07.11.24 11:42, Grygorii Strashko wrote:
On 06.11.24 17:16, Luca Fancellu wrote:
Hi Michal,
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.
Shawn patch fixes the first issue. AFAICT the second issue can be fixed by
below simple patch:
diff --git a/xen/common/device-tree/bootfdt.c b/xen/common/device-tree/bootfdt.c
index 927f59c64b0d..d8bd8c44bd35 100644
--- a/xen/common/device-tree/bootfdt.c
+++ b/xen/common/device-tree/bootfdt.c
@@ -586,6 +586,10 @@ size_t __init boot_fdt_info(const void *fdt, paddr_t paddr)
add_boot_module(BOOTMOD_FDT, paddr, fdt_totalsize(fdt), false);
+ ret = device_tree_for_each_node(fdt, 0, early_scan_node, NULL);
+ if ( ret )
+ panic("Early FDT parsing failed (%d)\n", ret);
+
nr_rsvd = fdt_num_mem_rsv(fdt);
if ( nr_rsvd < 0 )
panic("Parsing FDT memory reserve map failed (%d)\n", nr_rsvd);
@@ -594,10 +598,14 @@ size_t __init boot_fdt_info(const void *fdt, paddr_t
paddr)
{
struct membank *bank;
paddr_t s, sz;
+ const struct bootmodule *mod =
boot_module_find_by_kind(BOOTMOD_RAMDISK);
if ( fdt_get_mem_rsv_paddr(device_tree_flattened, i, &s, &sz) < 0 )
continue;
+ if ( mod && (mod->start == s) && (mod->size == sz) )
+ continue;
Ok I see, we skip the /memreserve/ entry if it matches the ramdisk, fair
enough, I don’t have
a strong opinion on how we do that, the important thing is just to unblock the
users experiencing
this issue.
Don't know if my opinion would matter here, but Luca's patch looks more generic
and logically solid for me.
While handling only "ramdisk" somewhere in the middle - looks more like a hack.
Any way, it's up to you.
Sorry, that I'm disturbing you, but is there going to be any conclusion
regarding this patch?
Best regards,
-Grygorii