diff options
author | Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com> | 2011-11-07 06:56:50 -0500 |
---|---|---|
committer | Jesse Barnes <jbarnes@virtuousgeek.org> | 2011-12-05 13:21:47 -0500 |
commit | 486b10b9f43500741cd63a878d0ef23cd87fc66d (patch) | |
tree | 34128b942b9a5e2943e6f9082e687a3465cd4d47 /drivers/pci/hotplug/pciehp_core.c | |
parent | 027e8d52abdd44bc00e405af83cd2fbfb96c0824 (diff) |
PCI: pciehp: Handle push button event asynchronously
Use non-ordered workqueue for attention button events.
Attention button events on each slot can be handled asynchronously. So
we should use non-ordered workqueue. This patch also removes ordered
workqueue in pciehp as a result.
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/hotplug/pciehp_core.c')
-rw-r--r-- | drivers/pci/hotplug/pciehp_core.c | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/drivers/pci/hotplug/pciehp_core.c b/drivers/pci/hotplug/pciehp_core.c index a13ad1308adb..b8c99d35ac97 100644 --- a/drivers/pci/hotplug/pciehp_core.c +++ b/drivers/pci/hotplug/pciehp_core.c | |||
@@ -43,7 +43,6 @@ int pciehp_poll_mode; | |||
43 | int pciehp_poll_time; | 43 | int pciehp_poll_time; |
44 | int pciehp_force; | 44 | int pciehp_force; |
45 | struct workqueue_struct *pciehp_wq; | 45 | struct workqueue_struct *pciehp_wq; |
46 | struct workqueue_struct *pciehp_ordered_wq; | ||
47 | 46 | ||
48 | #define DRIVER_VERSION "0.4" | 47 | #define DRIVER_VERSION "0.4" |
49 | #define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>" | 48 | #define DRIVER_AUTHOR "Dan Zink <dan.zink@compaq.com>, Greg Kroah-Hartman <greg@kroah.com>, Dely Sy <dely.l.sy@intel.com>" |
@@ -345,18 +344,11 @@ static int __init pcied_init(void) | |||
345 | if (!pciehp_wq) | 344 | if (!pciehp_wq) |
346 | return -ENOMEM; | 345 | return -ENOMEM; |
347 | 346 | ||
348 | pciehp_ordered_wq = alloc_ordered_workqueue("pciehp_ordered", 0); | ||
349 | if (!pciehp_ordered_wq) { | ||
350 | destroy_workqueue(pciehp_wq); | ||
351 | return -ENOMEM; | ||
352 | } | ||
353 | |||
354 | pciehp_firmware_init(); | 347 | pciehp_firmware_init(); |
355 | retval = pcie_port_service_register(&hpdriver_portdrv); | 348 | retval = pcie_port_service_register(&hpdriver_portdrv); |
356 | dbg("pcie_port_service_register = %d\n", retval); | 349 | dbg("pcie_port_service_register = %d\n", retval); |
357 | info(DRIVER_DESC " version: " DRIVER_VERSION "\n"); | 350 | info(DRIVER_DESC " version: " DRIVER_VERSION "\n"); |
358 | if (retval) { | 351 | if (retval) { |
359 | destroy_workqueue(pciehp_ordered_wq); | ||
360 | destroy_workqueue(pciehp_wq); | 352 | destroy_workqueue(pciehp_wq); |
361 | dbg("Failure to register service\n"); | 353 | dbg("Failure to register service\n"); |
362 | } | 354 | } |
@@ -367,7 +359,6 @@ static void __exit pcied_cleanup(void) | |||
367 | { | 359 | { |
368 | dbg("unload_pciehpd()\n"); | 360 | dbg("unload_pciehpd()\n"); |
369 | pcie_port_service_unregister(&hpdriver_portdrv); | 361 | pcie_port_service_unregister(&hpdriver_portdrv); |
370 | destroy_workqueue(pciehp_ordered_wq); | ||
371 | destroy_workqueue(pciehp_wq); | 362 | destroy_workqueue(pciehp_wq); |
372 | info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n"); | 363 | info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n"); |
373 | } | 364 | } |