Re: [patch] x86: pci_assign_unassigned_resources() update

From: Tero Roponen
Date: Tue Aug 30 2005 - 11:23:04 EST


On Tue, 30 Aug 2005, Ivan Kokshaysky wrote:

>
> Tero, can you confirm that 2.6.13 with this patch works for you?
>
> Ivan.

Confirmed. Vanilla 2.6.13 with this patch works for me.

-
Tero Roponen


>
> --- 2.6.13/arch/i386/pci/common.c 2005-08-29 03:41:01.000000000 +0400
> +++ linux/arch/i386/pci/common.c 2005-08-30 13:44:24.000000000 +0400
> @@ -165,7 +165,6 @@ static int __init pcibios_init(void)
> if ((pci_probe & PCI_BIOS_SORT) && !(pci_probe & PCI_NO_SORT))
> pcibios_sort();
> #endif
> - pci_assign_unassigned_resources();
> return 0;
> }
>
> --- 2.6.13/arch/i386/pci/i386.c 2005-08-29 03:41:01.000000000 +0400
> +++ linux/arch/i386/pci/i386.c 2005-08-30 17:35:03.000000000 +0400
> @@ -170,43 +170,26 @@ static void __init pcibios_allocate_reso
> static int __init pcibios_assign_resources(void)
> {
> struct pci_dev *dev = NULL;
> - int idx;
> - struct resource *r;
> + struct resource *r, *pr;
>
> - for_each_pci_dev(dev) {
> - int class = dev->class >> 8;
> -
> - /* Don't touch classless devices and host bridges */
> - if (!class || class == PCI_CLASS_BRIDGE_HOST)
> - continue;
> -
> - for(idx=0; idx<6; idx++) {
> - r = &dev->resource[idx];
> -
> - /*
> - * Don't touch IDE controllers and I/O ports of video cards!
> - */
> - if ((class == PCI_CLASS_STORAGE_IDE && idx < 4) ||
> - (class == PCI_CLASS_DISPLAY_VGA && (r->flags & IORESOURCE_IO)))
> - continue;
> -
> - /*
> - * We shall assign a new address to this resource, either because
> - * the BIOS forgot to do so or because we have decided the old
> - * address was unusable for some reason.
> - */
> - if (!r->start && r->end)
> - pci_assign_resource(dev, idx);
> - }
> -
> - if (pci_probe & PCI_ASSIGN_ROMS) {
> + if (!(pci_probe & PCI_ASSIGN_ROMS)) {
> + /* Try to use BIOS settings for ROMs, otherwise let
> + pci_assign_unassigned_resources() allocate the new
> + addresses. */
> + for_each_pci_dev(dev) {
> r = &dev->resource[PCI_ROM_RESOURCE];
> - r->end -= r->start;
> - r->start = 0;
> - if (r->end)
> - pci_assign_resource(dev, PCI_ROM_RESOURCE);
> + if (!r->flags || !r->start)
> + continue;
> + pr = pci_find_parent_resource(dev, r);
> + if (!pr || request_resource(pr, r) < 0) {
> + r->end -= r->start;
> + r->start = 0;
> + }
> }
> }
> +
> + pci_assign_unassigned_resources();
> +
> return 0;
> }
>
> --- 2.6.13/drivers/pci/setup-bus.c 2005-08-29 03:41:01.000000000 +0400
> +++ linux/drivers/pci/setup-bus.c 2005-08-30 13:44:24.000000000 +0400
> @@ -40,7 +40,7 @@
> * FIXME: IO should be max 256 bytes. However, since we may
> * have a P2P bridge below a cardbus bridge, we need 4K.
> */
> -#define CARDBUS_IO_SIZE (256)
> +#define CARDBUS_IO_SIZE (4*1024)
> #define CARDBUS_MEM_SIZE (32*1024*1024)
>
> static void __devinit
>
-
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/