Re: PCI memory allocation bug with CONFIG_HIGHMEM

From: David Hinds
Date: Mon Jan 05 2004 - 18:58:55 EST


On Mon, Jan 05, 2004 at 11:00:16PM +0000, Russell King wrote:
> On Mon, Jan 05, 2004 at 12:07:07PM -0800, David Hinds wrote:
> >
> > In arch/i386/kernel/setup.c we have:
> >
> > /* Tell the PCI layer not to allocate too close to the RAM area.. */
> > low_mem_size = ((max_low_pfn << PAGE_SHIFT) + 0xfffff) & ~0xfffff;
> > if (low_mem_size > pci_mem_start)
> > pci_mem_start = low_mem_size;
> >
> > which is meant to round up pci_mem_start to the nearest 1 MB boundary
> > past the top of physical RAM. However this does not consider highmem.
> > Should this just be using max_pfn rather than max_low_pfn?
> >
> > (I have a report of this failing on a laptop with a highmem kernel,
> > causing a PCI memory resource to be allocated on top of a RAM area)
>
> Beware - people sometimes use mem= to tell the kernel how much RAM is
> available for its use. Unfortunately, this overrides the E820 map,
> and causes the kernel to believe that all memory above the end of RAM
> is available for use.
>
> This is not the case, especially on ACPI systems.

Yes and that was the original reason for this snippet of code. It is
just a quick fix and shouldn't be needed if the E820 map is correct or
if the user has specified a correct mem= parameter.

-- Dave

-
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/