mirror of
https://github.com/torvalds/linux.git
synced 2024-11-26 22:21:42 +00:00
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>
This commit is contained in:
parent
32a8cef274
commit
1656716d45
@ -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;
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user