|
@@ -15,6 +15,7 @@
|
|
|
#include <linux/memblock.h>
|
|
|
#include <linux/seq_file.h>
|
|
|
#include <linux/kthread.h>
|
|
|
+#include <linux/initrd.h>
|
|
|
|
|
|
#include <asm/pdc.h>
|
|
|
#include <asm/pdcpat.h>
|
|
@@ -216,8 +217,16 @@ void __init pdc_pdt_init(void)
|
|
|
}
|
|
|
|
|
|
for (i = 0; i < pdt_status.pdt_entries; i++) {
|
|
|
+ unsigned long addr;
|
|
|
+
|
|
|
report_mem_err(pdt_entry[i]);
|
|
|
|
|
|
+ addr = pdt_entry[i] & PDT_ADDR_PHYS_MASK;
|
|
|
+ if (IS_ENABLED(CONFIG_BLK_DEV_INITRD) &&
|
|
|
+ addr >= initrd_start && addr < initrd_end)
|
|
|
+ pr_crit("CRITICAL: initrd possibly broken "
|
|
|
+ "due to bad memory!\n");
|
|
|
+
|
|
|
/* mark memory page bad */
|
|
|
memblock_reserve(pdt_entry[i] & PAGE_MASK, PAGE_SIZE);
|
|
|
}
|