Re: [patch] x86: pci_assign_unassigned_resources() update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]
  Powered by Linux