[patch] ia64: make PA() work for both physical identity-mapped virtual addresses

Bjorn Helgaas bjorn.helgaas at hp.com
Mon Oct 6 18:00:49 EDT 2008


On Monday 06 October 2008 3:32:10 pm Simon Horman wrote:
> On Mon, Oct 06, 2008 at 09:24:03AM -0600, Bjorn Helgaas wrote:
> > The EFI Runtime Services Table contains pointers to ia64 function
> > descriptors.  On existing, pre-Tiano, firmware, SetVirtualAddressMap()
> > converts *all* these pointers from physical to virtual.  On Tiano-based
> > firmware, the pointer to the SetVirtualAddressMap() function descriptor
> > is not converted, so it remains a physical pointer.
> >
> > The ia64 kexec purgatory patches the SetVirtualAddressMap() function
> > descriptor so that when the new kernel calls SetVirtualAddressMap(), it
> > never reaches firmware.  Instead, it calls a dummy function that just
> > returns success.
> >
> > Purgatory runs in physical mode, so it must convert the pointer from the
> > RuntimeServicesTable to a physical address.  This patch makes that
> > conversion work both for old firmware (where the pointer is an identity-
> > mapped virtual address) and new Tiano firmware (where the pointer is a
> > physical address).
> >
> > Without this patch, kexec on Tiano firmware causes an MCA because
> > ia64_env_setup() subtracts PAGE_OFFSET from a physical address and ends
> > up with an invalid physical address.  Referencing that address causes
> > the MCA.
> >
> > Signed-off-by: Bjorn Helgaas <bjorn.helgaas at hp.com>
>
> Thanks Bjorn, applied.

Thanks!

Any idea when you'll make another kexec-tools release?  I have a
Red Hat feature request in for RHEL6, and they'll need to know
what kexec-tools version to look for.  RH will get the latest
for RHEL6, but I really don't know when they'll start putting
that together.

https://bugzilla.redhat.com/show_bug.cgi?id=463477

Bjorn



More information about the kexec mailing list