[PATCH v4 RFT 1/2] powerpc/fadump: reduce memory consumption for capture kernel
Hari Bathini
hbathini at linux.vnet.ibm.com
Wed May 3 18:49:19 AEST 2017
On Wednesday 03 May 2017 12:43 PM, Hari Bathini wrote:
>
>
> On Tuesday 02 May 2017 09:26 PM, Michal Suchanek wrote:
>> With fadump (dump capture) kernel booting like a regular kernel, it
>> almost
>> needs the same amount of memory to boot as the production kernel,
>> which is
>> unwarranted for a dump capture kernel. But with no option to disable
>> some
>> of the unnecessary subsystems in fadump kernel, that much memory is
>> wasted
>> on fadump, depriving the production kernel of that memory.
>>
>> Introduce kernel parameter 'fadump_append=' that would take regular
>> kernel
>> parameters to be appended when fadump is active.
>> This 'fadump_append=' parameter can be leveraged to pass parameters like
>> nr_cpus=1, cgroup_disable=memory and numa=off, to disable unwarranted
>> resources/subsystems.
>>
>> Also, ensure the log "Firmware-assisted dump is active" is printed early
>> in the boot process to put the subsequent fadump messages in context.
>>
>> Suggested-by: Michael Ellerman <mpe at ellerman.id.au>
>> Signed-off-by: Hari Bathini <hbathini at linux.vnet.ibm.com>
>> Signed-off-by: Michal Suchanek <msuchanek at suse.de>
>> ---
>> v4:
>> - use space separated arguments instead of comma separated
>> - do not append parameters when fadummp is disabled
>> ---
>> arch/powerpc/kernel/fadump.c | 27 ++++++++++++++++++++++++---
>> 1 file changed, 24 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c
>> index ebf2e9c..e0c728a 100644
>> --- a/arch/powerpc/kernel/fadump.c
>> +++ b/arch/powerpc/kernel/fadump.c
>> @@ -79,8 +79,10 @@ int __init early_init_dt_scan_fw_dump(unsigned
>> long node,
>> * dump data waiting for us.
>> */
>> fdm_active = of_get_flat_dt_prop(node, "ibm,kernel-dump", NULL);
>> - if (fdm_active)
>> + if (fdm_active) {
>> + pr_info("Firmware-assisted dump is active.\n");
>> fw_dump.dump_active = 1;
>> + }
>>
>> /* Get the sizes required to store dump data for the firmware
>> provided
>> * dump sections.
>> @@ -263,8 +265,12 @@ int __init fadump_reserve_mem(void)
>> {
>> unsigned long base, size, memory_boundary;
>>
>> - if (!fw_dump.fadump_enabled)
>> + if (!fw_dump.fadump_enabled) {
>> + if (fw_dump.dump_active)
>> + pr_warn("Firmware-assisted dump was active but kernel"
>> + " booted with fadump disabled!\n");
>> return 0;
>> + }
>>
>> if (!fw_dump.fadump_supported) {
>> printk(KERN_INFO "Firmware-assisted dump is not supported on"
>> @@ -304,7 +310,6 @@ int __init fadump_reserve_mem(void)
>> memory_boundary = memblock_end_of_DRAM();
>>
>> if (fw_dump.dump_active) {
>> - printk(KERN_INFO "Firmware-assisted dump is active.\n");
>> /*
>> * If last boot has crashed then reserve all the memory
>> * above boot_memory_size so that we don't touch it until
>> @@ -363,6 +368,22 @@ unsigned long __init
>> arch_reserved_kernel_pages(void)
>> return memblock_reserved_size() / PAGE_SIZE;
>> }
>>
>> +/* Look for fadump_append= cmdline option. */
>> +static int __init early_fadump_append_param(char *p)
>> +{
>> + if (!p)
>> + return 1;
>> +
>> + if (fw_dump.fadump_enabled && fw_dump.dump_active) {
>> + pr_info("enforcing additional parameters (%s) passed through "
>> + "'fadump_append=' parameter\n", p);
>> + parse_early_options(p);
>
> While testing this on a system with yaboot bootloader, it seems that
> parsing
> a parameter with syntax like fadump_append="nr_cpus numa=off" is not
fadump_append="nr_cpus numa=off" should have read
fadump_append="nr_cpus=1 numa=off".
Nonetheless, considering different environments this is supposed to
work, I was trying to convey
comma-separated append list maybe better over space-separated one..
Thanks
Hari
More information about the Linuxppc-dev
mailing list