Re: Linux MIPS PCI resource sanity check

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

 



On Sat, 16 Feb 2008 13:49:56 +0300 Sergei Shtylyov
<sshtylyov@xxxxxxxxxxxxx> wrote:

> Michael Buesch wrote:
> 
> > There's a sanity check in pcibios_enable_resources() that looks
> > like this:
> 
> > 	r = &dev->resource[idx];
> > 	if (!r->start && r->end) {
> > 		printk(KERN_ERR "PCI: Device %s not available
> > because of resource collisions\n", pci_name(dev)); return -EINVAL;
> > 	}
> > 
> > What is this check actually doing?
> 
>    It makes sure that a PCI resource is allocated (base of 0 means
> that it's unallocated due to previously detected resource conlict (or
> some other reason).


Actually, IIRC, resources are based on what the device requested, so a
device behind a bridge could request a resource starting at 0.  I had
to change this for a system as well.  I changed it to

if (!r->start && !r->end) {

because I couldn't see anything in the code that made r->start == 0 an
improper thing.  Not to mention I couldn't access the device any other
way.  Both being 0 is definitelty bogus.

> > It triggers for me on a BCM4318 device which is behind a BCM4710
> > PCI bridge. r->start is 0 and r->end is 0x1FFF when this triggers.
> > If I simply comment out that check the device is detected correctly
> > and seems to initialize just fine.
> 
>     No, that failnig resource should be relocated.
> 
> WBR, Sergei
> 


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux