Re: [Fastboot] [RFC] [PATCH 2.6.19-rc4] kdump panics early in bootwhen reserving MP Tables located in high memory

From: Amul Shah
Date: Fri Nov 03 2006 - 09:32:13 EST


On Thu, 2006-11-02 at 18:36 -0500, Vivek Goyal wrote:
> On Thu, Nov 02, 2006 at 05:24:32PM -0500, Amul Shah wrote:
> > The kdump crash kernel panics when it tries to reserve the MP Config
> > tables on an ES7000.
> >
> > The MP Config table is located above 1MB of physical memory in a
> > reserved memory area. It is located outside the first 1MB area because
> > the tables are too large, 240k.
> >
>
> Hi Amul,
>
> Can you tell where it is placed in your system? At the end of physical
> RAM?

The MP tables are located at 896MB of RAM. I believe that we ended up
there because i386 Linux would choke if the tables were located higher
than 896MB (the low memory boundary).

> > The crash kernel is given a user defined memory map with E820 reserved
> > and ACPI areas passed in by kexec tools and a usable area from 16MB
> > physical to 80MB physical. This user defined map causes the top of
> > memory to be set as 80MB.
> >
> > The ACPI tables and MP Tables reside higher in memory. When reserving
> > memory with reserve_bootmem_generic, the function has a BUG panic if the
> > memory location to reserve is above the top of memory. The MP table is
> > above the top of memory in a user defined memory map.
> >
> > This patch will ignore reserving the MP tables if the MP table resides
> > in an area already reserved in the E820.
> >
> > I have two alternate patches that accomplish the same effect if this
> > patch is not acceptable.
> > 1. avoid reserving the MP tables if a user defined memory map or if a
> > user defined memory limit ("mem=") is used.
> > 2. avoid reserving the MP tables if a kernel parameter is passed in to
> > ignore MP table reservation.
> >
> >
>
> I think both the methods are not the right way to solve the problem. It
> will just fix the symtom you are facing. Currently this solution works
> for you as you are using MADT tables from ACPI. But it will fail if you try
> to boot second kernel on your system with acpi=off as MP tables are not
> accessible.

You are correct, this patch most certainly only fixes the Unisys problem
(does that make me a corporate shill? ;). Since we can't boot the
ES7000 without ACPI, the crash kernel must have access to the ACPI Data
area.

> I think the right way to fix this problem would be to let kexec-tools know
> where the MP table is in RAM and kexec-tools can create another memmap=
> entry for that area so that MP tables are accessible in second kernel.

The MP Tables already reside in a reserved area which the kexec-tools
handles. Unfortunately because end of ram in the user defined map is
physical 80MB, trying to reserve memory above that point breaks the
ES7000.

> I think you need to export the MP table location and size to user space,
> say through /sys/kernel/. And also modify kexec-tools to parse it.
>
> Thanks
> Vivek

Andi's suggestion will work with a modification. I'll post it once I've
tested it.

thanks,
Amul

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/