linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
To: Andreas Koch <koch@esa.informatik.tu-darmstadt.de>
Cc: Linus Torvalds <torvalds@osdl.org>,
	linux-pci@atrey.karlin.mff.cuni.cz, linux-kernel@vger.kernel.org,
	gregkh@suse.de
Subject: Re: PROBLEM: Devices behind PCI Express-to-PCI bridge not mapped
Date: Mon, 6 Jun 2005 18:43:35 +0400	[thread overview]
Message-ID: <20050606184335.A30338@jurassic.park.msu.ru> (raw)
In-Reply-To: <20050606002739.GA943@erebor.esa.informatik.tu-darmstadt.de>; from koch@esa.informatik.tu-darmstadt.de on Mon, Jun 06, 2005 at 02:27:39AM +0200

On Mon, Jun 06, 2005 at 02:27:39AM +0200, Andreas Koch wrote:
> For your reference, at this stage we appear to have a cascade of three
> bridges between a potential device (currently empty CardBus slot) and
> the CPU
> 
>                 1              2      3
> CPU Southbridge -> PCI Express -> PCI -> CardBus
> 
> Note that the messages before this log, e.g., from ohci1394, also indicate
> that the peripherals in the docking station still remain inaccessible due to
> unmapped memory (all reads return 0xff). 

Well, the problem is that bridge 1 in this chain is completely unconfigured
(it seems to be in after-reset state), while bridge 2 (PCIE-to-PCI one)
does have reasonable setup. This leads to "successful" resource allocations
on the bus 3, even though these resources are not accessible due to
incorrect setup of the bridge 1.
On the other hand, pci_assign_unassigned_resources() doesn't touch
already allocated resources, probably leaving them outside of bridge windows.

I think the correct behaviour of pcibios_allocate_bus_resources()
(arch/i386/pci/i386.c) should be as follows:
if some bridge resource cannot be allocated for whatever reason,
don't allow any child resource assignments in that range. Just
clear the resource flags - this prevents building an inconsistent
resource tree.

pci_assign_unassigned_resources() should correctly configure bridge 1
and all subordinate stuff then.

Ivan.

--- linux/arch/i386/pci/i386.c.orig	Sat Mar 19 09:34:53 2005
+++ Linux/arch/i386/pci/i386.c	Mon Jun  6 15:09:18 2005
@@ -106,11 +106,14 @@ static void __init pcibios_allocate_bus_
 		if ((dev = bus->self)) {
 			for (idx = PCI_BRIDGE_RESOURCES; idx < PCI_NUM_RESOURCES; idx++) {
 				r = &dev->resource[idx];
-				if (!r->start)
-					continue;
 				pr = pci_find_parent_resource(dev, r);
-				if (!pr || request_resource(pr, r) < 0)
+				if (!r->start || !pr || request_resource(pr, r) < 0) {
 					printk(KERN_ERR "PCI: Cannot allocate resource region %d of bridge %s\n", idx, pci_name(dev));
+					/* Something is wrong with the region.
+					   Invalidate the resource to prevent child
+					   resource allocations in this range. */
+					r->flags = 0;
+				}
 			}
 		}
 		pcibios_allocate_bus_resources(&bus->children);

  reply	other threads:[~2005-06-06 14:43 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-06-03 23:28 PROBLEM: Devices behind PCI Express-to-PCI bridge not mapped Andreas Koch
2005-06-04  0:22 ` Linus Torvalds
2005-06-04  1:33   ` Andreas Koch
2005-06-04  1:55     ` Linus Torvalds
2005-06-04  2:26       ` Andreas Koch
2005-06-04  4:50         ` Linus Torvalds
2005-06-04 15:57           ` Andreas Koch
2005-06-05 16:46             ` Ivan Kokshaysky
2005-06-06  0:27               ` Andreas Koch
2005-06-06 14:43                 ` Ivan Kokshaysky [this message]
2005-06-08 17:34                   ` Andreas Koch
2005-06-08 22:36                     ` Ivan Kokshaysky
2005-06-09  0:29                       ` Andreas Koch
2005-06-09  4:04                       ` Benjamin Herrenschmidt
2005-06-09 13:54                         ` Ivan Kokshaysky
2005-06-09 17:54                           ` Andreas Koch
2005-06-09 22:38                             ` Andreas Koch
2005-06-09 23:20                               ` Linus Torvalds
2005-06-10 14:33                                 ` Andreas Koch
2005-06-10 14:48                                 ` Ivan Kokshaysky
2005-06-10 20:47                                   ` Andreas Koch
2005-06-10 23:50                                     ` Sean Bruno
2005-06-14 15:19                                     ` Sean Bruno
2005-06-16 14:20                                       ` Andreas Koch
2005-06-16 17:20                                         ` Peter Buckingham
2005-06-16 20:53                                           ` Sean Bruno
2005-06-16 21:05                                             ` Peter Buckingham
2005-06-16 21:12                                               ` Roland Dreier
2005-06-16 21:21                                                 ` Peter Buckingham
2005-06-17  9:54                                               ` Ivan Kokshaysky
2005-06-17 16:34                                                 ` Peter Buckingham
2005-06-17 16:51                                                   ` Sean Bruno
2005-06-17 17:59                                                     ` Sean Bruno
2005-06-18  7:45                                                   ` Ivan Kokshaysky
2005-06-18 17:55                                                     ` Sean Bruno
2005-06-20 16:51                                                     ` Peter Buckingham
2005-06-20 21:31                                                     ` Peter Buckingham
2005-06-20 23:39                                                     ` Peter Buckingham
2005-06-04 15:17         ` Linus Torvalds
2005-06-04  6:38       ` Greg KH
2005-06-04  6:51         ` Grant Grundler
2005-06-04  7:12           ` Grant Grundler
2005-06-04  7:19           ` Greg KH
2005-06-04  6:46 ` Greg KH
2005-06-04 16:16   ` Andreas Koch
2005-06-11  5:33 linux
2005-06-11 10:26 ` Ivan Kokshaysky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050606184335.A30338@jurassic.park.msu.ru \
    --to=ink@jurassic.park.msu.ru \
    --cc=gregkh@suse.de \
    --cc=koch@esa.informatik.tu-darmstadt.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@atrey.karlin.mff.cuni.cz \
    --cc=torvalds@osdl.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).