From: ebiederm@xmission.com (Eric W. Biederman)
To: Dave Young <dyoung@redhat.com>
Cc: horms@verge.net.au, kexec@lists.infradead.org, vgoyal@redhat.com,
khalid@gonehiking.org
Subject: Re: [PATCH v2] kdump: pass acpi_rsdp= to 2nd kernel for efi booting
Date: Thu, 18 Oct 2012 14:20:46 -0700 [thread overview]
Message-ID: <878vb332a9.fsf@xmission.com> (raw)
In-Reply-To: <20121018031608.GA3925@localhost.localdomain> (Dave Young's message of "Thu, 18 Oct 2012 11:16:08 +0800")
Dave Young <dyoung@redhat.com> writes:
> In case efi booting, kdump need kernel parameter acpi_rsdp= to retrieve
> the acpi root table physical address.
>
> Add a function cmdline_add_efi to get the address from /sys/firmware/efi/systab
> If there's no such file or read fail the function will just do nothing.
>
> Tested efi boot Fedora 17 on thinkpad T420.
>
> Some background info for this issue:
> http://lists.infradead.org/pipermail/kexec/2010-March/003889.html
>
> [v1 -> v2]:
> Address comments from Khalid and Simon
> use fgets instead of read(2) to iterate the file
> do not add 'noefi' because kexec does not construct EFI signature
> in bootloader signature in boot_params, so kexec'd kernel will
> disable EFI automatically even without noefi.
I don't have any problems with this patch.
I have a question. In the case where this fails are we successfully
passing the ACPI sections in the e820 map?
If we are passing the acpi sections is that not enough for the kernel
to find the rdsp area? I'm just a bit surprised we need this patch
is all.
Somehow it seems a bit ugly to pass information that could be conveyed
in the memory map on the command line.
But I am all in favor of doing what works.
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
> Signed-off-by: Dave Young <dyoung@redhat.com>
> ---
> kexec/arch/i386/crashdump-x86.c | 35 +++++++++++++++++++++++++++++++++++
> 1 file changed, 35 insertions(+)
>
> --- kexec-tools.orig/kexec/arch/i386/crashdump-x86.c
> +++ kexec-tools/kexec/arch/i386/crashdump-x86.c
> @@ -835,6 +835,40 @@ static int cmdline_add_memmap_acpi(char
> return 0;
> }
>
> +/* Appends 'acpi_rsdp=' commandline for efi boot crash dump */
> +static void cmdline_add_efi(char *cmdline)
> +{
> + FILE *fp;
> + int cmdlen, len;
> + char line[MAX_LINE], *s;
> + const char *acpis = " acpi_rsdp=";
> +
> + fp = fopen("/sys/firmware/efi/systab", "r");
> + if (!fp)
> + return;
> +
> + while(fgets(line, sizeof(line), fp) != 0) {
> + /* ACPI20= always goes before ACPI= */
> + if ((strstr(line, "ACPI20=")) || (strstr(line, "ACPI="))) {
> + line[strlen(line) - 1] = '\0';
> + s = strchr(line, '=');
> + s += 1;
> + len = strlen(s) + strlen(acpis);
> + cmdlen = strlen(cmdline) + len;
> + if (cmdlen > (COMMAND_LINE_SIZE - 1))
> + die("Command line overflow\n");
> + strcat(cmdline, acpis);
> + strcat(cmdline, s);
> + dbgprintf("Command line after adding efi\n");
> + dbgprintf("%s\n", cmdline);
> +
> + break;
> + }
> + }
> +
> + fclose(fp);
> +}
> +
> static void get_backup_area(struct kexec_info *info,
> struct memory_range *range, int ranges)
> {
> @@ -998,6 +1032,7 @@ int load_crashdump_segments(struct kexec
> if (delete_memmap(memmap_p, elfcorehdr, memsz) < 0)
> return -1;
> cmdline_add_memmap(mod_cmdline, memmap_p);
> + cmdline_add_efi(mod_cmdline);
> cmdline_add_elfcorehdr(mod_cmdline, elfcorehdr);
>
> /* Inform second kernel about the presence of ACPI tables. */
>
> _______________________________________________
> 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-10-18 21:21 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-18 3:16 [PATCH v2] kdump: pass acpi_rsdp= to 2nd kernel for efi booting Dave Young
2012-10-18 21:20 ` Eric W. Biederman [this message]
2012-10-19 0:26 ` Simon Horman
2012-10-19 14:53 ` Vivek Goyal
2012-10-19 20:09 ` Khalid Aziz
2012-10-21 3:06 ` Eric W. Biederman
2012-10-22 15:43 ` Vivek Goyal
2012-10-23 13:33 ` Khalid Aziz
-- strict thread matches above, loose matches on Subject: below --
2012-10-18 3:10 Dave Young
2012-10-18 14:56 ` Khalid Aziz
2012-10-18 19:11 ` Vivek Goyal
2012-10-18 19:22 ` Khalid Aziz
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=878vb332a9.fsf@xmission.com \
--to=ebiederm@xmission.com \
--cc=dyoung@redhat.com \
--cc=horms@verge.net.au \
--cc=kexec@lists.infradead.org \
--cc=khalid@gonehiking.org \
--cc=vgoyal@redhat.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox