forked from Minki/linux
powerpc/fadump: provide a helpful error message
fadump fails to register when there are holes in boot memory area. Provide a helpful error message to the user in such case. Signed-off-by: Hari Bathini <hbathini@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
eae0dfcc44
commit
a5a05b91c7
@ -130,6 +130,38 @@ int is_fadump_active(void)
|
|||||||
return fw_dump.dump_active;
|
return fw_dump.dump_active;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Returns 1, if there are no holes in boot memory area,
|
||||||
|
* 0 otherwise.
|
||||||
|
*/
|
||||||
|
static int is_boot_memory_area_contiguous(void)
|
||||||
|
{
|
||||||
|
struct memblock_region *reg;
|
||||||
|
unsigned long tstart, tend;
|
||||||
|
unsigned long start_pfn = PHYS_PFN(RMA_START);
|
||||||
|
unsigned long end_pfn = PHYS_PFN(RMA_START + fw_dump.boot_memory_size);
|
||||||
|
unsigned int ret = 0;
|
||||||
|
|
||||||
|
for_each_memblock(memory, reg) {
|
||||||
|
tstart = max(start_pfn, memblock_region_memory_base_pfn(reg));
|
||||||
|
tend = min(end_pfn, memblock_region_memory_end_pfn(reg));
|
||||||
|
if (tstart < tend) {
|
||||||
|
/* Memory hole from start_pfn to tstart */
|
||||||
|
if (tstart > start_pfn)
|
||||||
|
break;
|
||||||
|
|
||||||
|
if (tend == end_pfn) {
|
||||||
|
ret = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
start_pfn = tend + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Print firmware assisted dump configurations for debugging purpose. */
|
/* Print firmware assisted dump configurations for debugging purpose. */
|
||||||
static void fadump_show_config(void)
|
static void fadump_show_config(void)
|
||||||
{
|
{
|
||||||
@ -457,6 +489,10 @@ static int register_fw_dump(struct fadump_mem_struct *fdm)
|
|||||||
" dump. Hardware Error(%d).\n", rc);
|
" dump. Hardware Error(%d).\n", rc);
|
||||||
break;
|
break;
|
||||||
case -3:
|
case -3:
|
||||||
|
if (!is_boot_memory_area_contiguous())
|
||||||
|
pr_err("Can't have holes in boot memory area while "
|
||||||
|
"registering fadump\n");
|
||||||
|
|
||||||
printk(KERN_ERR "Failed to register firmware-assisted kernel"
|
printk(KERN_ERR "Failed to register firmware-assisted kernel"
|
||||||
" dump. Parameter Error(%d).\n", rc);
|
" dump. Parameter Error(%d).\n", rc);
|
||||||
err = -EINVAL;
|
err = -EINVAL;
|
||||||
|
Loading…
Reference in New Issue
Block a user