Re: 64bit PCI IORESOURCE_MEM bugs

From: Andi Kleen
Date: Thu Jul 07 2005 - 07:34:02 EST


"Thomas Crowley" <tbcrowley@xxxxxxxxxxx> writes:
>
> 1) in arch/x86_64/kernel/e820.c the e820_reserve_resources function
> the line if (e820.map[i].addr + e820.map[i].size > 0x100000000ULL)
> makes it so any region that
> starts below the 4Gig mark but ends above 4Gig mark is ignored.

That is already gone in 2.6.13rc1.

> 2) I am unable to get all of my PCI devices to move there addressing
> from the default values to the hole I have given it. I am getting
> several errors of the form: "PCI: Cannot allocate resource region 8 of
> bridge 0000:00:07.0". Some of my devices are moving to the proper
> location.
> Neither the code in drivers/pci/probe.c pci_read_bases which gets the
> default addresses for the resources or /arch/i386/pci/i386.c
> pcibios_allocate_bus_resources check to see if the address that are
> being used are reserved. They just attempt to allocate the memory and
> fail. It seams like a check should be made in one of these functions
> and if the resources are reserved then the addresses should be
> changed. (Note: 64 bit uses the i386 pci code that is why I am
> pointing out potential errors in the i386 code)

Yes, that code is quite bad and in need of an overhaul. There
are other problems in there too. Also the default hole selection
algorithm is not very reliable and some BIOS tend to put
hidden mappings in there. Most likely it needs more support from ACPI.

> I also noticed the reserve kernel param can only take ints so large
> addresses can not be reserved


What reserve kernel param? mem= certainly supports more than 4GB.

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