linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Jesse Barnes <jbarnes@virtuousgeek.org>, x86 <x86@kernel.org>
Cc: Bjorn Helgaas <bhelgaas@google.com>,
	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,
	Yinghai Lu <yinghai@kernel.org>
Subject: [PATCH v2 12/37] PCI: Make pci_rescan_bus_bridge_resize() use pci_scan_bridge instead
Date: Fri,  9 Mar 2012 23:00:12 -0800	[thread overview]
Message-ID: <1331362837-10740-13-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1331362837-10740-1-git-send-email-yinghai@kernel.org>

So after remove all children and then using setpci change bus register and rescan
bridge could use new set bus number.

Otherwise need to rescan parent bus, it would have too much overhead.

also need to use pci_bus_add_single_device to make sure new change bus have directory
 /sys/../.../pci_bus.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
---
 drivers/pci/probe.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 2f5f728..8512e0d 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -2043,14 +2043,16 @@ EXPORT_SYMBOL(pci_scan_bus);
  */
 unsigned int __ref pci_rescan_bus_bridge_resize(struct pci_dev *bridge)
 {
-	unsigned int max;
-	struct pci_bus *bus = bridge->subordinate;
+	unsigned int max = 0;
+	int pass;
+	struct pci_bus *bus = bridge->bus;
 
-	max = pci_scan_child_bus(bus);
+	for (pass = 0; pass < 2; pass++)
+		max = pci_scan_bridge(bus, bridge, max, pass);
 
 	pci_assign_unassigned_bridge_resources(bridge);
 
-	pci_bus_add_devices(bus);
+	pci_bus_add_single_device(bridge);
 
 	return max;
 }
-- 
1.7.7


  parent reply	other threads:[~2012-03-10  7:00 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-10  7:00 [PATCH v2 00/37] PCI, x86: pci root bus hotplug support Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 01/37] IOMMU: Update dmar units devices list during hotplug Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 02/37] PNPACPI: Fix device ref leaking in acpi_pnp_match Yinghai Lu
2012-03-13  2:40   ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 03/37] IOMMU: Fix tboot force iommu logic Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 04/37] x86, PCI: Fix non acpi path pci_sysdata leaking with release_fn Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 05/37] PCI: Separate out pci_assign_unassigned_bus_resources() Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 06/37] PCI: Move back pci_rescan_bus() Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 07/37] PCI: pci_bus_size_bridges() should not size own bridge Yinghai Lu
2012-03-13  2:47   ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 08/37] PCI: Use __pci_bus_size_bridges() directly in pci_assign_unassigned_bus_resources() Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 09/37] PCI, sysfs: Use device_type and attr_groups with pci dev Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 10/37] PCI, sysfs: create rescan_bridge under /sys/.../pci/devices/... for pci bridges Yinghai Lu
2012-03-13  2:55   ` Bjorn Helgaas
2012-03-13  5:48     ` Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 11/37] PCI: Add pci_bus_add_single_device() Yinghai Lu
2012-03-10  7:00 ` Yinghai Lu [this message]
2012-03-10  7:00 ` [PATCH v2 13/37] PCI: Clean up rescan_bus_bridge_resize() Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 14/37] PCI: Rescan bus or bridge using callback method too Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 15/37] PCI, sysfs: Clean up rescan/remove with scheule_callback Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 16/37] PCI: Move pci_stop_and_remove_behind_bridge() down Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 17/37] PCI: Add __pci_remove_bus_devices() Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 18/37] PCI: Use list_for_each_entry_safe instead of list_for_each_safe Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 19/37] PCI: Add pci_stop_and_remove_bus() Yinghai Lu
2012-03-12 15:58   ` Jiang Liu
2012-03-13  6:22     ` Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 20/37] PCI: Add pci bus removal through /sys/.../pci_bus/.../remove Yinghai Lu
2012-03-13  3:10   ` Bjorn Helgaas
2012-03-13  5:54     ` Yinghai Lu
2012-03-15 17:33       ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 21/37] PCI, ACPI: Make acpi_pci_root_remove remove pci root bus too Yinghai Lu
2012-03-13  3:11   ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 22/37] PCI, acpiphp: remove hot-add support of pci host bridge Yinghai Lu
2012-03-13  3:14   ` Bjorn Helgaas
2012-03-13  5:58     ` Yinghai Lu
2012-03-15 17:34       ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 23/37] PCI, ACPI: Add pci_root_hp hot add hotplug notification Yinghai Lu
2012-03-13  3:22   ` Bjorn Helgaas
2012-03-13  6:03     ` Yinghai Lu
2012-03-15 17:47       ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 24/37] PCI, ACPI: Add pci_root_hp hot removal notification support Yinghai Lu
2012-03-13  3:25   ` Bjorn Helgaas
2012-03-13  6:06     ` Yinghai Lu
2012-03-15 17:53       ` Bjorn Helgaas
2012-03-15 18:01         ` Yinghai Lu
2012-03-15 18:09           ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 25/37] PCI, ACPI: Add alloc_acpi_hp_work() Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 26/37] PCI, acpiphp: Use acpi_hp_work Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 27/37] PCI, pci_root_hp: " Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 28/37] PCI, ACPI: Make kacpi_hotplug_wq static Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 29/37] PCI, ACPI: Add acpi_pci_root_rescan() Yinghai Lu
2012-03-13  3:33   ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 30/37] PCI: Add __pci_scan_root_bus() that can skip bus_add Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 31/37] x86, PCI: add __pci_scan_root_bus_on_node() " Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 32/37] x86, PCI: add __pcibios_scan_specific_bus " Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 33/37] x86, PCI: Add pcibios_root_rescan() Yinghai Lu
2012-03-13  3:37   ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 34/37] x86, PCI: Add arch version pci_root_rescan() Yinghai Lu
2012-03-13  3:40   ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 35/37] PCI: Make /sys/bus/pci/rescan rescan root Yinghai Lu
2012-03-13  3:44   ` Bjorn Helgaas
2012-03-13  6:26     ` Yinghai Lu
2012-03-15 17:55       ` Bjorn Helgaas
2012-03-10  7:00 ` [PATCH v2 36/37] ACPI: Enable SCI_EMULATE to manually simulate physical hotplug testing Yinghai Lu
2012-03-10  7:00 ` [PATCH v2 37/37] PCI, sysfs: Prepare to kill pci device rescan Yinghai Lu

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=1331362837-10740-13-git-send-email-yinghai@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bhelgaas@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jbarnes@virtuousgeek.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --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).