AF:
NF:0
PS:10
SRH:1
SFN:
DSR:
MID:<20080216153405.44023956@ripper.onstor.net>
CFG:
PT:0
S:andy.sharp@onstor.com
RQ:
SSV:onstor-exch02.onstor.net
NSV:
SSH:
R:<sshtylyov@ru.mvista.com>,<mb@bu3sch.de>,<ralf@linux-mips.org>,<linux-mips@linux-mips.org>
MAID:1
X-Sylpheed-Privacy-System:
X-Sylpheed-Sign:0
SCF:#mh/Mailbox/sent
RMID:#imap/andys@onstor.net@onstor-exch02.onstor.net/INBOX	0	47B6BFD4.5050404@ru.mvista.com
X-Sylpheed-End-Special-Headers: 1
Date: Sat, 16 Feb 2008 15:35:30 -0800
From: Andrew Sharp <andy.sharp@onstor.com>
To: Sergei Shtylyov <sshtylyov@ru.mvista.com>
Cc: Michael Buesch <mb@bu3sch.de>, ralf@linux-mips.org,
 linux-mips@linux-mips.org
Subject: Re: Linux MIPS PCI resource sanity check
Message-ID: <20080216153530.7a426a73@ripper.onstor.net>
In-Reply-To: <47B6BFD4.5050404@ru.mvista.com>
References: <200802161139.10791.mb@bu3sch.de>
	<47B6BFD4.5050404@ru.mvista.com>
Organization: Onstor
X-Mailer: Sylpheed-Claws 2.6.0 (GTK+ 2.8.20; x86_64-pc-linux-gnu)
Mime-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

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
> 
