From: "Suzuki K. Poulose" <suzuki@in.ibm.com>
To: Simon Horman <horms@verge.net.au>
Cc: kexec@lists.infradead.org
Subject: Re: [PATCH] [ppc] Do not reserve cpu spin-table for crash kernel
Date: Thu, 05 Jul 2012 13:26:56 +0530 [thread overview]
Message-ID: <4FF548C8.8000302@in.ibm.com> (raw)
In-Reply-To: <4FE848B9.5000001@in.ibm.com>
On 06/25/2012 04:47 PM, Suzuki K. Poulose wrote:
> Simon,
>
Ping.
Suzuki
> Please let me know your response.
>
> Thanks
> Suzuki
>
> On 06/18/2012 11:57 AM, Suzuki K. Poulose wrote:
>> On 05/24/2012 11:39 AM, Suzuki K. Poulose wrote:
>>> As of now, the kexec reserves the spin-table for all the CPUs
>>> on an SMP machine. The spin-table is pointed to by the
>>> cpu-release-addr property in the device-tree. Reserving the
>>> spin-table in the crash kernel will cause a BUG(), if the table
>>> lies outside the memory reserved for the crashkernel.
>>>
>>> Disable reserving the spin-table regions and use maxcpus=1 to
>>> use only the crashing CPU to boot the crash kernel.
>>>
>>> Signed-off-by: Suzuki K. Poulose<suzuki@in.ibm.com>
>>
>> Simon,
>>
>> Any response on this one ?
>>
>> I have tested this on a Currituck board (476, SMP) with a UP kernel.
>> Without this patch, the secondary kernel hits 'PANIC' in boot while
>> trying to reserve a memory(the spin table), outside the memory
>> range(crash reserve).
>>
>>
>> Thanks
>> Suzuki
>>
>>> ---
>>>
>>> kexec/arch/ppc/crashdump-powerpc.c | 19 +++++++++++++------
>>> kexec/arch/ppc/fixup_dtb.c | 4 ++++
>>> 2 files changed, 17 insertions(+), 6 deletions(-)
>>>
>>> diff --git a/kexec/arch/ppc/crashdump-powerpc.c
>>> b/kexec/arch/ppc/crashdump-powerpc.c
>>> index 1bef69b..4c8c75d 100644
>>> --- a/kexec/arch/ppc/crashdump-powerpc.c
>>> +++ b/kexec/arch/ppc/crashdump-powerpc.c
>>> @@ -262,10 +262,19 @@ static void ulltoa(unsigned long long i, char
>>> *str)
>>> }
>>> }
>>>
>>> +/* Append str to cmdline */
>>> +static void add_cmdline(char *cmdline, char *str)
>>> +{
>>> + int cmdlen = strlen(cmdline) + strlen(str);
>>> + if (cmdlen> (COMMAND_LINE_SIZE - 1))
>>> + die("Command line overflow\n");
>>> + strcat(cmdline, str);
>>> +}
>>> +
>>> static int add_cmdline_param(char *cmdline, unsigned long long addr,
>>> char *cmdstr, char *byte)
>>> {
>>> - int cmdlen, len, align = 1024;
>>> + int align = 1024;
>>> char str[COMMAND_LINE_SIZE], *ptr;
>>>
>>> /* Passing in =xxxK / =xxxM format. Saves space required in cmdline.*/
>>> @@ -284,11 +293,8 @@ static int add_cmdline_param(char *cmdline,
>>> unsigned long long addr,
>>> ptr += strlen(str);
>>> ulltoa(addr, ptr);
>>> strcat(str, byte);
>>> - len = strlen(str);
>>> - cmdlen = strlen(cmdline) + len;
>>> - if (cmdlen> (COMMAND_LINE_SIZE - 1))
>>> - die("Command line overflow\n");
>>> - strcat(cmdline, str);
>>> +
>>> + add_cmdline(cmdline, str);
>>>
>>> dbgprintf("Command line after adding elfcorehdr: %s\n", cmdline);
>>>
>>> @@ -365,6 +371,7 @@ int load_crashdump_segments(struct kexec_info
>>> *info, char *mod_cmdline,
>>> */
>>> add_cmdline_param(mod_cmdline, elfcorehdr, " elfcorehdr=", "K");
>>> add_cmdline_param(mod_cmdline, saved_max_mem, " savemaxmem=", "M");
>>> + add_cmdline(mod_cmdline, " maxcpus=1");
>>> return 0;
>>> }
>>>
>>> diff --git a/kexec/arch/ppc/fixup_dtb.c b/kexec/arch/ppc/fixup_dtb.c
>>> index e9890a4..f832026 100644
>>> --- a/kexec/arch/ppc/fixup_dtb.c
>>> +++ b/kexec/arch/ppc/fixup_dtb.c
>>> @@ -172,6 +172,9 @@ static void fixup_reserve_regions(struct
>>> kexec_info *info, char *blob_buf)
>>> }
>>> }
>>>
>>> +#if 0
>>> + /* XXX: Do not reserve spin-table for CPUs. */
>>> +
>>> /* Add reserve regions for cpu-release-addr */
>>> nodeoffset = fdt_node_offset_by_prop_value(blob_buf, -1,
>>> "device_type", "cpu", 4);
>>> while (nodeoffset != -FDT_ERR_NOTFOUND) {
>>> @@ -201,6 +204,7 @@ static void fixup_reserve_regions(struct
>>> kexec_info *info, char *blob_buf)
>>> nodeoffset = fdt_node_offset_by_prop_value(blob_buf, nodeoffset,
>>> "device_type", "cpu", 4);
>>> }
>>> +#endif
>>>
>>> out:
>>> print_fdt_reserve_regions(blob_buf);
>>>
>>>
>>> _______________________________________________
>>> kexec mailing list
>>> kexec@lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/kexec
>>>
>>
>>
>> _______________________________________________
>> kexec mailing list
>> kexec@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/kexec
>>
>
>
> _______________________________________________
> kexec mailing list
> kexec@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
>
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2012-07-05 7:58 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-05-22 12:42 Handling spin table in kdump Suzuki K. Poulose
2012-05-22 12:42 ` Suzuki K. Poulose
2012-05-22 15:34 ` McClintock Matthew-B29882
2012-05-22 15:34 ` McClintock Matthew-B29882
2012-05-24 6:09 ` [PATCH] [ppc] Do not reserve cpu spin-table for crash kernel Suzuki K. Poulose
2012-05-24 6:09 ` Suzuki K. Poulose
2012-06-18 6:27 ` Suzuki K. Poulose
2012-06-18 6:27 ` Suzuki K. Poulose
2012-06-25 11:17 ` Suzuki K. Poulose
2012-07-05 7:56 ` Suzuki K. Poulose [this message]
2012-07-13 6:31 ` Simon Horman
2012-07-13 6:33 ` Simon Horman
2012-07-13 6:33 ` Simon Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4FF548C8.8000302@in.ibm.com \
--to=suzuki@in.ibm.com \
--cc=horms@verge.net.au \
--cc=kexec@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.