diff options
author | Lukas Wunner <lukas@wunner.de> | 2018-07-19 17:27:39 -0500 |
---|---|---|
committer | Bjorn Helgaas <helgaas@kernel.org> | 2018-07-23 17:04:12 -0500 |
commit | ec07a4473072ff0607e3126ce26c31dbf81f9a15 (patch) | |
tree | 40c25791e2d03df387315cfc9ca6fbfa38244847 /drivers/pci/hotplug/pciehp.h | |
parent | 7b4ce26bcf697e3a4aa9ba2a5b456562e0fb7af4 (diff) | |
download | linux-ec07a4473072ff0607e3126ce26c31dbf81f9a15.tar.bz2 |
PCI: pciehp: Convert to threaded polling
We've just converted pciehp to threaded IRQ handling, but still cannot
sleep in pciehp_ist() because the function is also called in poll mode,
which runs in softirq context (from a timer).
Convert poll mode to a kthread so that pciehp_ist() always runs in task
context.
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/pci/hotplug/pciehp.h')
-rw-r--r-- | drivers/pci/hotplug/pciehp.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/pci/hotplug/pciehp.h b/drivers/pci/hotplug/pciehp.h index ab1d97a1822d..9f11360e3318 100644 --- a/drivers/pci/hotplug/pciehp.h +++ b/drivers/pci/hotplug/pciehp.h @@ -97,7 +97,7 @@ struct event_info { * used for synchronous writes to the Slot Control register * @slot_cap: cached copy of the Slot Capabilities register * @slot_ctrl: cached copy of the Slot Control register - * @poll_timer: timer to poll for slot events if no IRQ is available, + * @poll_thread: thread to poll for slot events if no IRQ is available, * enabled with pciehp_poll_mode module parameter * @cmd_started: jiffies when the Slot Control register was last written; * the next write is allowed 1 second later, absent a Command Completed @@ -122,7 +122,7 @@ struct controller { wait_queue_head_t queue; u32 slot_cap; u16 slot_ctrl; - struct timer_list poll_timer; + struct task_struct *poll_thread; unsigned long cmd_started; /* jiffies */ unsigned int cmd_busy:1; unsigned int link_active_reporting:1; |