[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH] xen/device-tree: Allow exact match for overlapping regions
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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |