From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932544AbcHYSwg (ORCPT ); Thu, 25 Aug 2016 14:52:36 -0400 Received: from mx0a-001b2d01.pphosted.com ([148.163.156.1]:36464 "EHLO mx0a-001b2d01.pphosted.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932388AbcHYSwe (ORCPT ); Thu, 25 Aug 2016 14:52:34 -0400 X-IBM-Helo: d23dlp02.au.ibm.com X-IBM-MailFrom: hbathini@linux.vnet.ibm.com X-IBM-RcptTo: linux-kernel@vger.kernel.org Subject: Re: [PATCH v3 2/2] powerpc/fadump: parse fadump reserve memory size based on memory range To: Dave Young References: <147082324660.4631.6557186560310369015.stgit@hbathini.in.ibm.com> <147082352471.4631.16292252236310652183.stgit@hbathini.in.ibm.com> <20160825070152.GA15879@dhcp-128-65.nay.redhat.com> Cc: Ananth N Mavinakayanahalli , kexec@lists.infradead.org, lkml , linuxppc-dev , ebiederm@xmission.com, Michael Ellerman , vgoyal@redhat.com From: Hari Bathini Date: Thu, 25 Aug 2016 23:00:06 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20160825070152.GA15879@dhcp-128-65.nay.redhat.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-TM-AS-MML: disable X-Content-Scanned: Fidelis XPS MAILER x-cbid: 16082517-0044-0000-0000-000001D2A4FB X-IBM-AV-DETECTION: SAVI=unused REMOTE=unused XFE=unused x-cbparentid: 16082517-0045-0000-0000-0000056489E2 Message-Id: <05642bf1-6e46-bab0-f871-9391996ff264@linux.vnet.ibm.com> X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:,, definitions=2016-08-25_10:,, signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1604210000 definitions=main-1608250202 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thursday 25 August 2016 12:31 PM, Dave Young wrote: > On 08/10/16 at 03:35pm, Hari Bathini wrote: >> When fadump is enabled, by default 5% of system RAM is reserved for >> fadump kernel. While that works for most cases, it is not good enough >> for every case. >> >> Currently, to override the default value, fadump supports specifying >> memory to reserve with fadump_reserve_mem=size, where only a fixed size >> can be specified. This patch adds support to specify memory size to >> reserve for different memory ranges as below: >> >> fadump_reserve_mem=:[,:,...] > Hi, Hari Hi Dave, > I do not understand why you need introduce the new cmdline param, what's > the difference between the "fadump reserved" memory and the memory I am not introducing a new parameter but adding a new syntax for an existing parameter. > reserved by "crashkernel="? Can fadump just use crashkernel= to reserve > memory? Not all syntaxes supported by crashkernel apply for fadump_reserve_mem. Nonetheless, it is worth considering reuse of crashkernel parameter instead of fadump_reserve_mem. Let me see what I can do about this.. Thanks Hari > Thanks > Dave > >> Supporting range based input for "fadump_reserve_mem" parameter helps >> using the same commandline parameter for different system memory sizes. >> >> Signed-off-by: Hari Bathini >> Reviewed-by: Mahesh J Salgaonkar >> --- >> >> Changes from v2: >> 1. Updated changelog >> >> >> arch/powerpc/kernel/fadump.c | 63 ++++++++++++++++++++++++++++++++++++------ >> 1 file changed, 54 insertions(+), 9 deletions(-) >> >> diff --git a/arch/powerpc/kernel/fadump.c b/arch/powerpc/kernel/fadump.c >> index b3a6633..7c01b5b 100644 >> --- a/arch/powerpc/kernel/fadump.c >> +++ b/arch/powerpc/kernel/fadump.c >> @@ -193,6 +193,55 @@ static unsigned long init_fadump_mem_struct(struct fadump_mem_struct *fdm, >> return addr; >> } >> >> +/* >> + * This function parses command line for fadump_reserve_mem= >> + * >> + * Supports the below two syntaxes: >> + * 1. fadump_reserve_mem=size >> + * 2. fadump_reserve_mem=ramsize-range:size[,...] >> + * >> + * Sets fw_dump.reserve_bootvar with the memory size >> + * provided, 0 otherwise >> + * >> + * The function returns -EINVAL on failure, 0 otherwise. >> + */ >> +static int __init parse_fadump_reserve_mem(void) >> +{ >> + char *name = "fadump_reserve_mem="; >> + char *fadump_cmdline = NULL, *cur; >> + >> + fw_dump.reserve_bootvar = 0; >> + >> + /* find fadump_reserve_mem and use the last one if there are many */ >> + cur = strstr(boot_command_line, name); >> + while (cur) { >> + fadump_cmdline = cur; >> + cur = strstr(cur+1, name); >> + } >> + >> + /* when no fadump_reserve_mem= cmdline option is provided */ >> + if (!fadump_cmdline) >> + return 0; >> + >> + fadump_cmdline += strlen(name); >> + >> + /* for fadump_reserve_mem=size cmdline syntax */ >> + if (!is_colon_in_param(fadump_cmdline)) { >> + fw_dump.reserve_bootvar = memparse(fadump_cmdline, NULL); >> + return 0; >> + } >> + >> + /* for fadump_reserve_mem=ramsize-range:size[,...] cmdline syntax */ >> + cur = fadump_cmdline; >> + fw_dump.reserve_bootvar = parse_mem_range_size("fadump_reserve_mem", >> + &cur, memblock_phys_mem_size()); >> + if (cur == fadump_cmdline) { >> + return -EINVAL; >> + } >> + >> + return 0; >> +} >> + >> /** >> * fadump_calculate_reserve_size(): reserve variable boot area 5% of System RAM >> * >> @@ -212,12 +261,17 @@ static inline unsigned long fadump_calculate_reserve_size(void) >> { >> unsigned long size; >> >> + /* sets fw_dump.reserve_bootvar */ >> + parse_fadump_reserve_mem(); >> + >> /* >> * Check if the size is specified through fadump_reserve_mem= cmdline >> * option. If yes, then use that. >> */ >> if (fw_dump.reserve_bootvar) >> return fw_dump.reserve_bootvar; >> + else >> + printk(KERN_INFO "fadump: calculating default boot size\n"); >> >> /* divide by 20 to get 5% of value */ >> size = memblock_end_of_DRAM() / 20; >> @@ -348,15 +402,6 @@ static int __init early_fadump_param(char *p) >> } >> early_param("fadump", early_fadump_param); >> >> -/* Look for fadump_reserve_mem= cmdline option */ >> -static int __init early_fadump_reserve_mem(char *p) >> -{ >> - if (p) >> - fw_dump.reserve_bootvar = memparse(p, &p); >> - return 0; >> -} >> -early_param("fadump_reserve_mem", early_fadump_reserve_mem); >> - >> static void register_fw_dump(struct fadump_mem_struct *fdm) >> { >> int rc; >> > _______________________________________________ > kexec mailing list > kexec@lists.infradead.org > http://lists.infradead.org/mailman/listinfo/kexec >