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>,
	Randy Dunlap <rdunlap@xenotime.net>
Subject: [PATCH -v3 10/47] PCI, sysfs: create rescan_bridge under /sys/.../pci/devices/... for pci bridges
Date: Sun, 18 Mar 2012 22:45:59 -0700	[thread overview]
Message-ID: <1332135996-13860-11-git-send-email-yinghai@kernel.org> (raw)
In-Reply-To: <1332135996-13860-1-git-send-email-yinghai@kernel.org>

Current code will create rescan for every pci device under parent bus.
that is not right. The device is already there, there is no reason to rescan it.

We could have rescan for pci bridges. less confusing.

Need to move rescan attr to pci dev bridge attribute group.
And we should rescan bridge's secondary bus instead of primary bus.

-v3: Use device_type for pci dev.
-v4: Seperate pci device type change out
-v5: add rescan_bridge for bridge type, and still keep the old rescan.
	may remove the old rescan later.

Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Cc: Randy Dunlap <rdunlap@xenotime.net>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 Documentation/ABI/testing/sysfs-bus-pci |   10 ++++++++++
 drivers/pci/pci-sysfs.c                 |   24 ++++++++++++++++++++++++
 2 files changed, 34 insertions(+), 0 deletions(-)

diff --git a/Documentation/ABI/testing/sysfs-bus-pci b/Documentation/ABI/testing/sysfs-bus-pci
index 34f5110..95f0f37 100644
--- a/Documentation/ABI/testing/sysfs-bus-pci
+++ b/Documentation/ABI/testing/sysfs-bus-pci
@@ -111,6 +111,16 @@ Description:
 		from this part of the device tree.
 		Depends on CONFIG_HOTPLUG.
 
+What:		/sys/bus/pci/devices/.../rescan_bridge
+Date:		February 2012
+Contact:	Linux PCI developers <linux-pci@vger.kernel.org>
+Description:
+		Writing a non-zero value to this attribute will
+		force a rescan of the bridge and all child buses, and
+		re-discover devices removed earlier from this part of
+		the device tree.
+		Depends on CONFIG_HOTPLUG.
+
 What:		/sys/bus/pci/devices/.../reset
 Date:		July 2009
 Contact:	Michael S. Tsirkin <mst@redhat.com>
diff --git a/drivers/pci/pci-sysfs.c b/drivers/pci/pci-sysfs.c
index 39d15e6..d5c8ffb 100644
--- a/drivers/pci/pci-sysfs.c
+++ b/drivers/pci/pci-sysfs.c
@@ -325,6 +325,27 @@ dev_rescan_store(struct device *dev, struct device_attribute *attr,
 	return count;
 }
 
+static ssize_t
+dev_bridge_rescan_store(struct device *dev, struct device_attribute *attr,
+		 const char *buf, size_t count)
+{
+	unsigned long val;
+	struct pci_dev *pdev = to_pci_dev(dev);
+
+	if (kstrtoul(buf, 0, &val) < 0)
+		return -EINVAL;
+
+	if (val) {
+		mutex_lock(&pci_remove_rescan_mutex);
+		pci_rescan_bus(pdev->subordinate);
+		mutex_unlock(&pci_remove_rescan_mutex);
+	}
+	return count;
+}
+
+static struct device_attribute pci_dev_bridge_rescan_attr =
+	__ATTR(rescan_bridge, (S_IWUSR|S_IWGRP), NULL, dev_bridge_rescan_store);
+
 static void remove_callback(struct device *dev)
 {
 	struct pci_dev *pdev = to_pci_dev(dev);
@@ -1337,6 +1358,9 @@ static int __init pci_sysfs_init(void)
 late_initcall(pci_sysfs_init);
 
 static struct attribute *pci_dev_bridge_attrs[] = {
+#ifdef CONFIG_HOTPLUG
+	&pci_dev_bridge_rescan_attr.attr,
+#endif
 	NULL,
 };
 
-- 
1.7.7


  parent reply	other threads:[~2012-03-19  5:45 UTC|newest]

Thread overview: 58+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-03-19  5:45 [PATCH 00/47] PCI, x86: pci root bus hotplug support Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 01/47] IOMMU: Update dmar units devices list during hotplug Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 02/47] PNPACPI: Fix device ref leaking in acpi_pnp_match Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 03/47] IOMMU: Fix tboot force iommu logic Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 04/47] x86, PCI: Fix non acpi path pci_sysdata leaking with release_fn Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 05/47] PCI: Separate out pci_assign_unassigned_bus_resources() Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 06/47] PCI: Move back pci_rescan_bus() Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 07/47] PCI: pci_bus_size_bridges() should not size own bridge Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 08/47] PCI: Use __pci_bus_size_bridges() directly in pci_assign_unassigned_bus_resources() Yinghai Lu
2012-03-19  5:45 ` [PATCH -v3 09/47] PCI, sysfs: Use device_type and attr_groups with pci dev Yinghai Lu
2012-03-19  5:45 ` Yinghai Lu [this message]
2012-03-19  5:46 ` [PATCH -v3 11/47] PCI: Add pci_bus_add_single_device() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 12/47] PCI: Make pci_rescan_bus_bridge_resize() use pci_scan_bridge instead Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 13/47] PCI: Clean up rescan_bus_bridge_resize() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 14/47] PCI: Rescan bus or bridge using callback method too Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 15/47] PCI, sysfs: Clean up rescan/remove with scheule_callback Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 16/47] x86, PCI: Separate pcibios_allocate_bridge_resources() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 17/47] x86, PCI: Separate pcibios_allocate_dev_resources() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 18/47] x86, PCI: Let pcibios_allocate_bus_resources() take bus instead Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 19/47] PCI: Claim hw/fw allocated resources in hot add path Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 20/47] Correctly clean up pci root buses in function pci_remove_bus() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 21/47] PCI: Move pci_stop_and_remove_behind_bridge() down Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 22/47] PCI: Add __pci_remove_bus_devices() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 23/47] PCI: Use list_for_each_entry_safe instead of list_for_each_safe Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 24/47] PCI: Add pci_stop_and_remove_bus() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 25/47] Fix an access-after-free issue in function pci_stop_and_remove_bus() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 26/47] PCI, ACPI: Make acpi_pci_root_remove remove pci root bus too Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 27/47] PCI, acpiphp: Separate out hot-add support of pci host bridge Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 28/47] PCI, ACPI: Add pci_root_hp hot removal notification support Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 29/47] PCI, ACPI: Add alloc_acpi_hp_work() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 30/47] PCI, acpiphp: Use acpi_hp_work Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 31/47] PCI, pci_root_hp: " Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 32/47] PCI, ACPI: Make kacpi_hotplug_wq static Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 33/47] PCI: Add debug print out for pci related dev release Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 34/47] PCI, pciehp: Separate pci_hp_add_bridge() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 35/47] PCI, cphi_hotplug: Simplify configure_slot Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 36/47] PCI, shpchp: Simplify configure_device Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 37/47] PCI: Kill pci_is_reassignedev() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 38/47] PCI, sysfs: Prepare to kill pci device rescan Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 39/47] ACPI: Enable SCI_EMULATE to manually simulate physical hotplug testing Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 40/47] PCI: Add pci bus removal through /sys/.../pci_bus/.../remove Yinghai Lu
2012-04-06 15:50   ` Jiang Liu
2012-04-06 16:01     ` Yinghai Lu
2012-04-06 16:07       ` Bjorn Helgaas
2012-04-06 16:22         ` Jiang Liu
     [not found]         ` <CAE9FiQUjsiEvGGZz4sPux5AM7ipDsqgqgh5bh2QA7GJVBTqDKw@mail.gmail.com>
2012-04-06 17:42           ` Fwd: " Yinghai Lu
2012-04-06 18:05             ` Bjorn Helgaas
2012-04-06 18:11               ` Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 41/47] PCI, ACPI: Add acpi_pci_root_rescan() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 42/47] PCI: Add __pci_scan_root_bus() that can skip bus_add Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 43/47] x86, PCI: add __pci_scan_root_bus_on_node() " Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 44/47] x86, PCI: add __pcibios_scan_specific_bus " Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 45/47] x86, PCI: Add pcibios_root_rescan() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 46/47] x86, PCI: Add arch version pci_root_rescan() Yinghai Lu
2012-03-19  5:46 ` [PATCH -v3 47/47] PCI: Add /sys/bus/pci/rescan_root Yinghai Lu
2012-03-19 21:37 ` [PATCH 00/47] PCI, x86: pci root bus hotplug support Bjorn Helgaas
2012-03-20 17:20   ` Yinghai Lu
2012-03-30 18:27 ` 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=1332135996-13860-11-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=rdunlap@xenotime.net \
    --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).