|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xen/arm: add warning if memory modules overlap
It's possible for a misconfigured device tree to cause Xen to crash when
there are overlapping addresses in the memory modules. Add a warning
when printing the addresses to let the user know there's a possible
issue when DEBUG is enabled.
Signed-off-by: Brian Woods <brian.woods@xxxxxxxxxx>
---
sample output:
...
(XEN) MODULE[0]: 0000000001400000 - 000000000153b8f1 Xen
(XEN) MODULE[1]: 00000000076d2000 - 00000000076dc080 Device Tree
(XEN) MODULE[2]: 00000000076df000 - 0000000007fff364 Ramdisk
(XEN) MODULE[3]: 0000000000080000 - 0000000003180000 Kernel
(XEN) RESVD[0]: 00000000076d2000 - 00000000076dc000
(XEN) RESVD[1]: 00000000076df000 - 0000000007fff364
(XEN)
(XEN) WARNING: modules Xen and Kernel overlap
(XEN)
(XEN) Command line: console=dtuart dtuart=serial0 dom0_mem=1G bootscrub=0
maxcpus=1 timer_slop=0
...
xen/arch/arm/bootfdt.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/xen/arch/arm/bootfdt.c b/xen/arch/arm/bootfdt.c
index 08fb59f..3cb0c43 100644
--- a/xen/arch/arm/bootfdt.c
+++ b/xen/arch/arm/bootfdt.c
@@ -387,6 +387,23 @@ static void __init early_print_info(void)
mem_resv->bank[j].start + mem_resv->bank[j].size - 1);
}
printk("\n");
+
+#ifndef NDEBUG
+ /*
+ * Assuming all combinations are checked, only the starting address
+ * has to be checked if it's in another memory module's range.
+ */
+ for ( i = 0 ; i < mods->nr_mods; i++ )
+ for ( j = 0 ; j < mods->nr_mods; j++ )
+ if ( (i != j) &&
+ (mods->module[i].start >= mods->module[j].start) &&
+ (mods->module[i].start <
+ mods->module[j].start + mods->module[j].size) )
+ printk("WARNING: modules %-12s and %-12s overlap\n",
+ boot_module_kind_as_string(mods->module[i].kind),
+ boot_module_kind_as_string(mods->module[j].kind));
+#endif
+
for ( i = 0 ; i < cmds->nr_mods; i++ )
printk("CMDLINE[%"PRIpaddr"]:%s %s\n", cmds->cmdline[i].start,
cmds->cmdline[i].dt_name,
--
2.7.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |