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@xxxxxxxxx> --- drivers/pci/hotplug/pciehp.h | 3 --- drivers/pci/hotplug/pciehp_ctrl.c | 11 ----------- drivers/pci/hotplug/pciehp_hpc.c | 1 - 3 files changed, 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 9aea0bdbb019..c795d32dbb73 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; -- 2.17.1