Commit ea697648 authored by Helge Deller's avatar Helge Deller

parisc: Check if initrd was loaded into broken RAM

While scanning the PDT for reported broken memory modules, warn if the
initrd was coincidentally loaded into bad memory.
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 8d771b14
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include <linux/memblock.h> #include <linux/memblock.h>
#include <linux/seq_file.h> #include <linux/seq_file.h>
#include <linux/kthread.h> #include <linux/kthread.h>
#include <linux/initrd.h>
#include <asm/pdc.h> #include <asm/pdc.h>
#include <asm/pdcpat.h> #include <asm/pdcpat.h>
...@@ -216,8 +217,16 @@ void __init pdc_pdt_init(void) ...@@ -216,8 +217,16 @@ void __init pdc_pdt_init(void)
} }
for (i = 0; i < pdt_status.pdt_entries; i++) { for (i = 0; i < pdt_status.pdt_entries; i++) {
unsigned long addr;
report_mem_err(pdt_entry[i]); 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 */ /* mark memory page bad */
memblock_reserve(pdt_entry[i] & PAGE_MASK, PAGE_SIZE); memblock_reserve(pdt_entry[i] & PAGE_MASK, PAGE_SIZE);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment