linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>,
	Benjamin Herrenschmidt <benh@kernel.crashing.org>,
	Tony Luck <tony.luck@intel.com>,
	David Miller <davem@davemloft.net>, x86 <x86@kernel.org>
Cc: Dominik Brodowski <linux@dominikbrodowski.net>,
	Andrew Morton <akpm@linux-foundation.org>,
	Linus Torvalds <torvalds@linux-foundation.org>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-arch@vger.kernel.org, Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH 10/21] PCI: checking busn_res in pci_scan_root_bus()
Date: Mon,  7 May 2012 13:29:55 -0700	[thread overview]
Message-ID: <1336422606-4244-11-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1336422606-4244-1-git-send-email-yinghai@kernel.org>

Some callers do not supply the bus number aperture, usually because they do
not know the end.  In this case, we assume the aperture extends from the
root bus number to bus 255, scan the bus, and shrink the bus number
resource so it ends at the largest bus number we found.

This is obviously not correct because the actual end of the aperture may
well be larger than the largest bus number we found.  But I guess it's all
we have for now.

Also print out one info about that, so we could find out which path
does not have busn_res in resources list.

-v4: set found initial value to false.

[bhelgaas: changelog, list _safe iterator unnecessary, use %pR format for bus]
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
 drivers/pci/probe.c |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 59011ce..6258f6f 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1788,13 +1788,33 @@ void pci_bus_release_busn_res(struct pci_bus *b)
 struct pci_bus * __devinit pci_scan_root_bus(struct device *parent, int bus,
 		struct pci_ops *ops, void *sysdata, struct list_head *resources)
 {
+	struct pci_host_bridge_window *window;
+	bool found = false;
 	struct pci_bus *b;
+	int max;
+
+	list_for_each_entry(window, resources, list)
+		if (window->res->flags & IORESOURCE_BUS) {
+			found = true;
+			break;
+		}
 
 	b = pci_create_root_bus(parent, bus, ops, sysdata, resources);
 	if (!b)
 		return NULL;
 
-	b->busn_res.end = pci_scan_child_bus(b);
+	if (!found) {
+		dev_info(&b->dev,
+		 "No busn resource found for root bus, will use [bus %02x-ff]\n",
+			bus);
+		pci_bus_insert_busn_res(b, bus, 255);
+	}
+
+	max = pci_scan_child_bus(b);
+
+	if (!found)
+		pci_bus_update_busn_res_end(b, max);
+
 	pci_bus_add_devices(b);
 	return b;
 }
-- 
1.7.7


  parent reply	other threads:[~2012-05-07 20:29 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-07 20:29 [PATCH 00/21] PCI: use busn_res to replace bus secondary/subordinate Yinghai Lu
2012-05-07 20:29 ` [PATCH 01/21] PCI: add busn_res into struct pci_bus Yinghai Lu
2012-05-07 20:29 ` [PATCH 02/21] PCI: replace secondary/subordinate with busn_res Yinghai Lu
2012-05-07 20:29 ` [PATCH 03/21] PCI: Remove secondary/subordinate in struct ci_bus Yinghai Lu
2012-05-07 20:29 ` [PATCH 04/21] PCI: Add busn_res for pci domain Yinghai Lu
2012-05-07 20:29 ` [PATCH 05/21] resource: adjust_resource handle resource without parent Yinghai Lu
2012-05-18 17:12   ` Bjorn Helgaas
2012-05-18 17:54     ` Yinghai Lu
2012-05-18 18:06       ` Bjorn Helgaas
2012-05-07 20:29 ` [PATCH 06/21] PCI: Add busn_res operation functions Yinghai Lu
2012-05-07 20:29 ` [PATCH 07/21] PCI: print conflicting entry in busn_res inserting Yinghai Lu
2012-05-07 20:29 ` [PATCH 08/21] PCI: release busn_res when removing bus Yinghai Lu
2012-05-07 20:29 ` [PATCH 09/21] PCI: Insert busn_res in pci_create_root_bus() Yinghai Lu
2012-05-07 20:29 ` Yinghai Lu [this message]
2012-05-07 20:29 ` [PATCH 11/21] PCI: Add default busn_resource Yinghai Lu
2012-05-07 20:29 ` [PATCH 12/21] PCI: Add default busn_res for pci_scan_bus() Yinghai Lu
2012-05-07 20:29 ` [PATCH 13/21] x86/PCI: add busn_res into resources list for ACPI path Yinghai Lu
2012-05-07 20:29 ` [PATCH 14/21] x86/PCI: put busn resource in pci_root_info for native host bridge drivers Yinghai Lu
2012-05-07 20:30 ` [PATCH 15/21] ia64/PCI: register busn_res for root buses Yinghai Lu
2012-05-07 20:30 ` [PATCH 16/21] sparc/PCI: " Yinghai Lu
2012-05-07 20:43   ` David Miller
2012-05-07 20:30 ` [PATCH 17/21] powerpc/PCI: " Yinghai Lu
2012-05-07 20:30 ` [PATCH 18/21] parisc/PCI: " Yinghai Lu
2012-05-07 20:30 ` [PATCH 19/21] tile/PCI: Use pci_scan_root_bus instead pci_scan_bus Yinghai Lu
2012-05-09 19:32   ` Chris Metcalf
2012-05-09 19:45     ` Yinghai Lu
2012-05-07 20:30 ` [PATCH 20/21] PCI: Register busn_res for iov bus Yinghai Lu
2012-05-07 20:30 ` [PATCH 21/21] PCI: insert busn_res for child bus Yinghai Lu
2012-05-17 22:19 ` [PATCH 00/21] PCI: use busn_res to replace bus secondary/subordinate Bjorn Helgaas
2012-05-18  2:13   ` Yinghai Lu
2012-05-18 23:32     ` Bjorn Helgaas
2012-05-19  4:38       ` Yinghai Lu
2012-05-21 20:06         ` Bjorn Helgaas

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=1336422606-4244-11-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=benh@kernel.crashing.org \
    --cc=bhelgaas@google.com \
    --cc=davem@davemloft.net \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux@dominikbrodowski.net \
    --cc=tony.luck@intel.com \
    --cc=torvalds@linux-foundation.org \
    --cc=x86@kernel.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).