diff options
author | Lukas Wunner <lukas@wunner.de> | 2018-07-20 00:27:46 +0200 |
---|---|---|
committer | Bjorn Helgaas <helgaas@kernel.org> | 2018-07-24 00:04:15 +0200 |
commit | 1656716d45d0aae8c0a21a0553b9d27cd98fda61 (patch) | |
tree | 949a72be5647e6bec3daf6fa9b5e1799ce24993e /drivers/pci/hotplug | |
parent | PCI: pciehp: Enable/disable exclusively from IRQ thread (diff) | |
download | linux-1656716d45d0aae8c0a21a0553b9d27cd98fda61.tar.xz linux-1656716d45d0aae8c0a21a0553b9d27cd98fda61.zip |
PCI: pciehp: Drop enable/disable lock
Previously slot enablement and disablement could happen concurrently.
But now it's under the exclusive control of the IRQ thread, rendering
the locking obsolete. Drop it.
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Diffstat (limited to 'drivers/pci/hotplug')
-rw-r--r-- | drivers/pci/hotplug/pciehp.h | 3 | ||||
-rw-r--r-- | drivers/pci/hotplug/pciehp_ctrl.c | 11 | ||||
-rw-r--r-- | drivers/pci/hotplug/pciehp_hpc.c | 1 |
3 files changed, 0 insertions, 15 deletions
diff --git a/drivers/pci/hotplug/pciehp.h b/drivers/pci/hotplug/pciehp.h index ed42dde5f9ac..5417180c3aff 100644 --- a/drivers/pci/hotplug/pciehp.h +++ b/drivers/pci/hotplug/pciehp.h @@ -67,8 +67,6 @@ do { \ * an Attention Button press * @lock: protects reads and writes of @state; * protects scheduling, execution and cancellation of @work - * @hotplug_lock: serializes calls to pciehp_enable_slot() and - * pciehp_disable_slot() */ struct slot { u8 state; @@ -76,7 +74,6 @@ struct slot { struct hotplug_slot *hotplug_slot; struct delayed_work work; struct mutex lock; - struct mutex hotplug_lock; }; /** diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c index 70bad847a450..8ba937599fb3 100644 --- a/drivers/pci/hotplug/pciehp_ctrl.c +++ b/drivers/pci/hotplug/pciehp_ctrl.c @@ -277,9 +277,6 @@ void pciehp_handle_presence_change(struct slot *slot) } } -/* - * Note: This function must be called with slot->hotplug_lock held - */ static int __pciehp_enable_slot(struct slot *p_slot) { u8 getstatus = 0; @@ -316,10 +313,7 @@ int pciehp_enable_slot(struct slot *slot) struct controller *ctrl = slot->ctrl; int ret; - mutex_lock(&slot->hotplug_lock); ret = __pciehp_enable_slot(slot); - mutex_unlock(&slot->hotplug_lock); - if (ret && ATTN_BUTTN(ctrl)) pciehp_green_led_off(slot); /* may be blinking */ @@ -330,9 +324,6 @@ int pciehp_enable_slot(struct slot *slot) return ret; } -/* - * Note: This function must be called with slot->hotplug_lock held - */ static int __pciehp_disable_slot(struct slot *p_slot) { u8 getstatus = 0; @@ -355,9 +346,7 @@ int pciehp_disable_slot(struct slot *slot) { int ret; - mutex_lock(&slot->hotplug_lock); ret = __pciehp_disable_slot(slot); - mutex_unlock(&slot->hotplug_lock); mutex_lock(&slot->lock); slot->state = OFF_STATE; diff --git a/drivers/pci/hotplug/pciehp_hpc.c b/drivers/pci/hotplug/pciehp_hpc.c index 6951a0123e39..7f1a29cd6a17 100644 --- a/drivers/pci/hotplug/pciehp_hpc.c +++ b/drivers/pci/hotplug/pciehp_hpc.c @@ -781,7 +781,6 @@ static int pcie_init_slot(struct controller *ctrl) slot->ctrl = ctrl; mutex_init(&slot->lock); - mutex_init(&slot->hotplug_lock); INIT_DELAYED_WORK(&slot->work, pciehp_queue_pushbutton_work); ctrl->slot = slot; return 0; |