All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 1/7] PCI: make PCI device create/destroy logic symmetric
@ 2012-09-25 14:29 Jiang Liu
  2012-09-25 14:29 ` [PATCH v3 2/7] PCI: split registration of PCI bus devices into two stages Jiang Liu
                   ` (5 more replies)
  0 siblings, 6 replies; 39+ messages in thread
From: Jiang Liu @ 2012-09-25 14:29 UTC (permalink / raw)
  To: Bjorn Helgaas
  Cc: Jiang Liu, Yinghai Lu, Kenji Kaneshige, Yijing Wang, Jiang Liu,
	linux-kernel, linux-pci

 From: Jiang Liu <jiang.liu@huawei.com>

According to device model documentation, the way to create/destroy PCI
devices should be symmetric.

/**
 * device_del - delete device from system.
 * @dev: device.
 *
 * This is the first part of the device unregistration
 * sequence. This removes the device from the lists we control
 * from here, has it removed from the other driver model
 * subsystems it was added to in device_add(), and removes it
 * from the kobject hierarchy.
 *
 * NOTE: this should be called manually _iff_ device_add() was
 * also called manually.
 */

The rule is to either use
1) device_register()/device_unregister()
or
2) device_initialize()/device_add()/device_del()/put_device().

So change PCI core logic to follow the rule and get rid of the redundant
pci_dev_get()/pci_dev_put() pair.

Signed-off-by: Jiang Liu <jiang.liu@huawei.com>
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Yinghai Lu <yinghai@kernel.org>
---
 drivers/pci/probe.c  |    1 -
 drivers/pci/remove.c |    4 ++--
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 2396111..5dbad03 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -1293,7 +1293,6 @@ void pci_device_add(struct pci_dev *dev, struct pci_bus *bus)
 {
 	device_initialize(&dev->dev);
 	dev->dev.release = pci_release_dev;
-	pci_dev_get(dev);
 
 	dev->dev.dma_mask = &dev->dma_mask;
 	dev->dev.dma_parms = &dev->dma_parms;
diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c
index 513972f..10693f5 100644
--- a/drivers/pci/remove.c
+++ b/drivers/pci/remove.c
@@ -22,7 +22,7 @@ static void pci_stop_dev(struct pci_dev *dev)
 	if (dev->is_added) {
 		pci_proc_detach_device(dev);
 		pci_remove_sysfs_dev_files(dev);
-		device_unregister(&dev->dev);
+		device_del(&dev->dev);
 		dev->is_added = 0;
 	}
 
@@ -37,7 +37,7 @@ static void pci_destroy_dev(struct pci_dev *dev)
 	up_write(&pci_bus_sem);
 
 	pci_free_resources(dev);
-	pci_dev_put(dev);
+	put_device(&dev->dev);
 }
 
 void pci_remove_bus(struct pci_bus *bus)
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 39+ messages in thread

end of thread, other threads:[~2013-01-13 20:27 UTC | newest]

Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-09-25 14:29 [PATCH v3 1/7] PCI: make PCI device create/destroy logic symmetric Jiang Liu
2012-09-25 14:29 ` [PATCH v3 2/7] PCI: split registration of PCI bus devices into two stages Jiang Liu
2012-09-25 14:29 ` [PATCH v3 3/7] ACPI/pci_bind: correctly update binding relationship for PCI hotplug Jiang Liu
2013-01-08  0:05   ` Bjorn Helgaas
2013-01-08 16:52     ` [PATCH v3 0/6] Update PCI notification patchset to latest kernel version Jiang Liu
2013-01-08 18:30       ` Yinghai Lu
2013-01-09  9:11         ` Yijing Wang
2013-01-08 16:52     ` [PATCH v3 1/6] PCI: make PCI device create/destroy logic symmetric Jiang Liu
2013-01-08 16:52     ` [PATCH v3 2/6] PCI: split registration of PCI bus devices into two stages Jiang Liu
2013-01-08 23:29       ` Rafael J. Wysocki
2013-01-09 16:10         ` Jiang Liu
2013-01-08 16:52     ` [PATCH v3 3/6] ACPI/pci_slot: update PCI slot information when PCI hotplug event happens Jiang Liu
2013-01-09  0:01       ` Rafael J. Wysocki
2013-01-09 16:58         ` Jiang Liu
2013-01-09 20:19           ` Rafael J. Wysocki
2013-01-09 20:44             ` Bjorn Helgaas
2013-01-09 21:00               ` Rafael J. Wysocki
2013-01-10 21:24               ` Myron Stowe
2013-01-10 21:50                 ` Rafael J. Wysocki
2013-01-10 23:03                   ` Yinghai Lu
2013-01-10 23:39                     ` Rafael J. Wysocki
2013-01-10 23:40                       ` Yinghai Lu
2013-01-10 23:59                         ` Rafael J. Wysocki
2013-01-11 18:06                           ` Bjorn Helgaas
2013-01-11 20:46                             ` Rafael J. Wysocki
2013-01-11 11:07                       ` Martin Mokrejs
2013-01-11 12:07                         ` Rafael J. Wysocki
2013-01-08 16:52     ` [PATCH v3 4/6] PCI/acpiphp: update ACPI hotplug slot information when PCI hotplug happens Jiang Liu
2013-01-09  0:04       ` Rafael J. Wysocki
2013-01-09 16:29         ` Jiang Liu
2013-01-09 20:23           ` Rafael J. Wysocki
2013-01-13 15:13             ` Jiang Liu
2013-01-13 20:33               ` Rafael J. Wysocki
2013-01-08 16:52     ` [PATCH v3 5/6] PCI/acpiphp: serialize access to the bridge_list list Jiang Liu
2013-01-08 16:52     ` [PATCH v3 6/6] PCI/AER: update AER configuration when PCI hotplug event happens Jiang Liu
2012-09-25 14:29 ` [PATCH v3 4/7] ACPI/pci-bind: remove bind/unbind callbacks from acpi_device_ops Jiang Liu
2012-09-25 14:29 ` [PATCH v3 5/7] ACPI/pci_slot: update PCI slot information when PCI hotplug event happens Jiang Liu
2012-09-25 14:29 ` [PATCH v3 6/7] PCI/acpiphp: update ACPI hotplug slot information when PCI hotplug happens Jiang Liu
2012-09-25 14:29 ` [PATCH v3 7/7] PCI/acpiphp: serialize access to the bridge_list list Jiang Liu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.