linux-mips
[Top] [All Lists]

Re: Linux MIPS PCI resource sanity check

To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Subject: Re: Linux MIPS PCI resource sanity check
From: Andrew Sharp <andy.sharp@onstor.com>
Date: Sat, 16 Feb 2008 15:35:30 -0800
Cc: Michael Buesch <mb@bu3sch.de>, ralf@linux-mips.org, linux-mips@linux-mips.org
In-reply-to: <47B6BFD4.5050404@ru.mvista.com>
Organization: Onstor
Original-recipient: rfc822;linux-mips@linux-mips.org
References: <200802161139.10791.mb@bu3sch.de> <47B6BFD4.5050404@ru.mvista.com>
Sender: linux-mips-bounce@linux-mips.org
On Sat, 16 Feb 2008 13:49:56 +0300 Sergei Shtylyov
<sshtylyov@ru.mvista.com> 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
> 

<Prev in Thread] Current Thread [Next in Thread>