linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH] PCI: don't release sibiling bridge resources during hotplug
Date: Fri, 22 Aug 2014 18:15:10 -0700	[thread overview]
Message-ID: <1408756512-16885-4-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1408756512-16885-1-git-send-email-yinghai@kernel.org>

On hotplug path, we can not touch sibling bridges that is out
side of the slot.

That could happen when BIOS does not assign some bridge BARs and
later can not assign resource to them in first try.

Check if fail dev is the parent bridge, then just use subordinate
bus instead use parent bus.

Reported-by:  Andreas Noever <andreas.noever@gmail.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>


---
 drivers/pci/setup-bus.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

Index: linux-2.6/drivers/pci/setup-bus.c
===================================================================
--- linux-2.6.orig/drivers/pci/setup-bus.c
+++ linux-2.6/drivers/pci/setup-bus.c
@@ -1676,10 +1676,16 @@ again:
 	 * Try to release leaf bridge's resources that doesn't fit resource of
 	 * child device under that bridge
 	 */
-	list_for_each_entry(fail_res, &fail_head, list)
-		pci_bus_release_bridge_resources(fail_res->dev->bus,
+	list_for_each_entry(fail_res, &fail_head, list) {
+		struct pci_bus *bus = fail_res->dev->bus;
+
+		if (fail_res->dev == bridge)
+			bus = bridge->subordinate;
+
+		pci_bus_release_bridge_resources(bus,
 						 fail_res->flags & type_mask,
 						 whole_subtree);
+	}
 
 	/* restore size and flags */
 	list_for_each_entry(fail_res, &fail_head, list) {

  parent reply	other threads:[~2014-08-23  1:15 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-08-23  1:15 [PATCH] PCI: add back missing MEM_64 mask check for hotplug path Yinghai Lu
2014-08-23  1:15 ` [PATCH] PCI: fix pcie_wait_cmd with poll mode timeout Yinghai Lu
2014-09-23  2:29   ` Bjorn Helgaas
2014-08-23  1:15 ` [PATCH] PCI: print out exact timeout in pciehp for wait_cmd Yinghai Lu
2014-09-23  2:35   ` Bjorn Helgaas
2014-09-24  1:53     ` Yinghai Lu
2014-08-23  1:15 ` Yinghai Lu [this message]
2014-09-03 23:35   ` [PATCH] PCI: don't release sibiling bridge resources during hotplug Bjorn Helgaas
2014-08-23  1:15 ` [PATCH] PCI: more debug printout for pcie_write_cmd in pciehp Yinghai Lu
2014-09-23  2:51   ` Bjorn Helgaas
2014-08-23  1:15 ` [PATCH] PCI: remove not needed pcie_disable_notification Yinghai Lu
2014-09-23  2:53   ` Bjorn Helgaas
2014-09-30 20:35 ` [PATCH] PCI: add back missing MEM_64 mask check for hotplug path Bjorn Helgaas
2014-10-01  5:06   ` Yinghai Lu
2014-10-01 20:07 ` 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=1408756512-16885-4-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=bhelgaas@google.com \
    --cc=linux-pci@vger.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).