From: Jack Steiner <steiner@sgi.com>
To: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: mingo@elte.hu, kexec@lists.infradead.org, tglx@linutronix.de,
gleb@redhat.com, suresh.b.siddha@intel.com
Subject: Re: kdump/kexec on EFI-enabled x2apic platforms
Date: Tue, 30 Mar 2010 12:59:04 -0500 [thread overview]
Message-ID: <20100330175904.GA26220@sgi.com> (raw)
In-Reply-To: <m1zl1qydxq.fsf@fess.ebiederm.org>
On Mon, Mar 29, 2010 at 03:13:05PM -0700, Eric W. Biederman wrote:
> Jack Steiner <steiner@sgi.com> writes:
>
Thnaks for the quick reply. I am still digging thru the issues but am making
good progress.
See comments below.
> > All -
> >
> > I just started debugging kdump/kexec on our UV platform and
> > have run into some problems. I suspect others have encountered these
> > same or similar problems. Any help would be appreciated.
> >
> >
> >
> > Our platform uses EFI boot. It is Nehalem based & has a large number of cpus.
> > The BIOS enables x2apic mode and the kernel runs with interrupt remapping enabled.
> > Note that some apicids have more than 8 bits - x2apic mode is required.
> >
> >
> > I am able to successfully kexec the dump kernel but run into several problems.
> >
> > - because the initial kernel boots using EFI, BIOS does not build the legacy
> > tables that are required to locate the RSDP using the legacy method in
> > acpi_find_root_pointer(). (When booting with EFI, acpi_find_root_pointer() is
> > not used. The ACPI tables are found from pointers in EFI tables.)
>
> Ouch. EFI tables are a major pain to use because they are not 32/64 clean. Thus
> making them unreasonably difficult to work with.
>
> I believe the boot loader should be passing in the location of acpi tables instead
> of expecting the kernel to wade through EFI tables.
I made a temporary fix to the BIOS to build the legacy table used by
acpi_find_root_pointer() to locate the ACPI tables. I tested this on a system simulator &
it seems to work. ACPI tables are discovered and parsed correctly - at least for the
current BIOS & hardware configuration. I'll try this on real hardware later but
don't expect any problems.
>
> > - it appears that kdump/kexec intentionally boots the kdump kernel
> > in a mode does does enable efi mode. (Am I correct here???)
> > This avoids the issues with EFI virtual mode. However, the result
> > is that ACPI tables are not found. From the dump kernel:
> >
> > ACPI Error: A valid RSDP was not found (20090903/tbxfroot-222)
>
> My personal opinion is that EFI virtual mode is a mistake. We should not have
> any interactions with the EFI bios of sufficient frequency that we need an
> efficient virtual mapping.
Agree. The EFI virtual mode support was poorly architected as far as kdump/kexec is
concerned. We had a lot of problem on IA64, too.
>
>
> > - Because ACPI tables are not found, the dump kernel does not transition
> > into x2apic mode. The hardware, however, is still in x2apic mode from the
> > initial kernel.
>
> Hmm. That is a bug of many flavors. We should have transitions back into
> i8259 legacy mode, before calling kdump. Then regardless of what happen
> before we ran if the hardware is x2apic capable we should force the hardware
> into the mode we want it, not just assume x2apic mode is off by default.
It is not possible to transition back into non-x2apic mode. The initial transition
INTO x2apic mode is done by the BIOS - not the OS. X2apic mode is required because
apic ids are greater than 8 bits. Fortunately, now that we discover ACPI tables, the
OS is handling x2apic mode correctly.
With the above changes, I can now successfully boot to single user mode (simulator)
in the dump kernel. I may still have a few issues with lack-of EFI support but I think
I can work thru them. I did not see any problems on the simulator but might
hit them on hardware.
The only issue that still needs to be resolved (that I know of) is the memmap. The
E820 table in the boot_param block only supports 128 entries. Additional entries
are passed in the EFI memmap but this is missing w/o enabling EFI.
I suspect there are other problems waiting to be discovered but at least I'm making
progress.
Thanks for the help.
--- jack
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2010-03-30 17:59 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-03-29 20:01 kdump/kexec on EFI-enabled x2apic platforms Jack Steiner
2010-03-29 22:13 ` Eric W. Biederman
2010-03-30 17:59 ` Jack Steiner [this message]
2010-03-31 22:24 ` David N. Lombard
2010-04-01 0:47 ` Jack Steiner
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=20100330175904.GA26220@sgi.com \
--to=steiner@sgi.com \
--cc=ebiederm@xmission.com \
--cc=gleb@redhat.com \
--cc=kexec@lists.infradead.org \
--cc=mingo@elte.hu \
--cc=suresh.b.siddha@intel.com \
--cc=tglx@linutronix.de \
/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