Skip to content

Commit ab4ca78

Browse files
kkaneshigejbarnes993
authored andcommitted
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 <[email protected]> Signed-off-by: Jesse Barnes <[email protected]>
1 parent 863b7eb commit ab4ca78

File tree

4 files changed

+2
-13
lines changed

4 files changed

+2
-13
lines changed

drivers/pci/hotplug/pciehp.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ extern int pciehp_poll_time;
4545
extern int pciehp_debug;
4646
extern int pciehp_force;
4747
extern struct workqueue_struct *pciehp_wq;
48-
extern struct workqueue_struct *pciehp_ordered_wq;
4948

5049
#define dbg(format, arg...) \
5150
do { \

drivers/pci/hotplug/pciehp_core.c

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@ int pciehp_poll_mode;
4343
int pciehp_poll_time;
4444
int pciehp_force;
4545
struct workqueue_struct *pciehp_wq;
46-
struct workqueue_struct *pciehp_ordered_wq;
4746

4847
#define DRIVER_VERSION "0.4"
4948
#define DRIVER_AUTHOR "Dan Zink <[email protected]>, Greg Kroah-Hartman <[email protected]>, Dely Sy <[email protected]>"
@@ -345,18 +344,11 @@ static int __init pcied_init(void)
345344
if (!pciehp_wq)
346345
return -ENOMEM;
347346

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-
354347
pciehp_firmware_init();
355348
retval = pcie_port_service_register(&hpdriver_portdrv);
356349
dbg("pcie_port_service_register = %d\n", retval);
357350
info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
358351
if (retval) {
359-
destroy_workqueue(pciehp_ordered_wq);
360352
destroy_workqueue(pciehp_wq);
361353
dbg("Failure to register service\n");
362354
}
@@ -367,7 +359,6 @@ static void __exit pcied_cleanup(void)
367359
{
368360
dbg("unload_pciehpd()\n");
369361
pcie_port_service_unregister(&hpdriver_portdrv);
370-
destroy_workqueue(pciehp_ordered_wq);
371362
destroy_workqueue(pciehp_wq);
372363
info(DRIVER_DESC " version: " DRIVER_VERSION " unloaded\n");
373364
}

drivers/pci/hotplug/pciehp_ctrl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ void pciehp_queue_pushbutton_work(struct work_struct *work)
344344
kfree(info);
345345
goto out;
346346
}
347-
queue_work(pciehp_ordered_wq, &info->work);
347+
queue_work(pciehp_wq, &info->work);
348348
out:
349349
mutex_unlock(&p_slot->lock);
350350
}
@@ -439,7 +439,7 @@ static void handle_surprise_event(struct slot *p_slot)
439439
else
440440
p_slot->state = POWERON_STATE;
441441

442-
queue_work(pciehp_ordered_wq, &info->work);
442+
queue_work(pciehp_wq, &info->work);
443443
}
444444

445445
static void interrupt_event_handler(struct work_struct *work)

drivers/pci/hotplug/pciehp_hpc.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -806,7 +806,6 @@ static void pcie_cleanup_slot(struct controller *ctrl)
806806
struct slot *slot = ctrl->slot;
807807
cancel_delayed_work(&slot->work);
808808
flush_workqueue(pciehp_wq);
809-
flush_workqueue(pciehp_ordered_wq);
810809
kfree(slot);
811810
}
812811

0 commit comments

Comments
 (0)