PCI: pciehp: remove crit_sect mutex
authorKenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Tue, 15 Sep 2009 08:29:49 +0000 (17:29 +0900)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 17 Sep 2009 17:06:18 +0000 (10:06 -0700)
The crit_sect mutex defined in struct controller is to serialize
hot-plug operations against multiple slots under the same bus. But,
since PCIe doesnstream port has only one slot at most, it is
meaningless and we don't need it.

Acked-by: Alex Chiang <achiang@hp.com>
Signed-off-by: Kenji Kaneshige <kaneshige.kenji@jp.fujitsu.com>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/hotplug/pciehp.h
drivers/pci/hotplug/pciehp_ctrl.c
drivers/pci/hotplug/pciehp_hpc.c

index 2509984d9611cf347a6696db0c1beec168f6e46d..720844e0389d6b09c6a66e1eff7852f746eb088f 100644 (file)
@@ -88,7 +88,6 @@ struct event_info {
 };
 
 struct controller {
-       struct mutex crit_sect;         /* critical section mutex */
        struct mutex ctrl_lock;         /* controller lock */
        struct pci_dev *pci_dev;
        struct pcie_device *pcie;       /* PCI Express port service */
index beb081703fd8668f1fc96ae541bdcd1b4de0b96b..b3c9ae580d91f796fcb4db20bff1df36f2106868 100644 (file)
@@ -519,13 +519,9 @@ int pciehp_enable_slot(struct slot *p_slot)
        int rc;
        struct controller *ctrl = p_slot->ctrl;
 
-       /* Check to see if (latch closed, card present, power off) */
-       mutex_lock(&p_slot->ctrl->crit_sect);
-
        rc = p_slot->hpc_ops->get_adapter_status(p_slot, &getstatus);
        if (rc || !getstatus) {
                ctrl_info(ctrl, "No adapter on slot(%s)\n", slot_name(p_slot));
-               mutex_unlock(&p_slot->ctrl->crit_sect);
                return -ENODEV;
        }
        if (MRL_SENS(p_slot->ctrl)) {
@@ -533,7 +529,6 @@ int pciehp_enable_slot(struct slot *p_slot)
                if (rc || getstatus) {
                        ctrl_info(ctrl, "Latch open on slot(%s)\n",
                                  slot_name(p_slot));
-                       mutex_unlock(&p_slot->ctrl->crit_sect);
                        return -ENODEV;
                }
        }
@@ -543,7 +538,6 @@ int pciehp_enable_slot(struct slot *p_slot)
                if (rc || getstatus) {
                        ctrl_info(ctrl, "Already enabled on slot(%s)\n",
                                  slot_name(p_slot));
-                       mutex_unlock(&p_slot->ctrl->crit_sect);
                        return -EINVAL;
                }
        }
@@ -557,7 +551,6 @@ int pciehp_enable_slot(struct slot *p_slot)
 
        update_slot_info(p_slot);
 
-       mutex_unlock(&p_slot->ctrl->crit_sect);
        return rc;
 }
 
@@ -571,15 +564,11 @@ int pciehp_disable_slot(struct slot *p_slot)
        if (!p_slot->ctrl)
                return 1;
 
-       /* Check to see if (latch closed, card present, power on) */
-       mutex_lock(&p_slot->ctrl->crit_sect);
-
        if (!HP_SUPR_RM(p_slot->ctrl)) {
                ret = p_slot->hpc_ops->get_adapter_status(p_slot, &getstatus);
                if (ret || !getstatus) {
                        ctrl_info(ctrl, "No adapter on slot(%s)\n",
                                  slot_name(p_slot));
-                       mutex_unlock(&p_slot->ctrl->crit_sect);
                        return -ENODEV;
                }
        }
@@ -589,7 +578,6 @@ int pciehp_disable_slot(struct slot *p_slot)
                if (ret || getstatus) {
                        ctrl_info(ctrl, "Latch open on slot(%s)\n",
                                  slot_name(p_slot));
-                       mutex_unlock(&p_slot->ctrl->crit_sect);
                        return -ENODEV;
                }
        }
@@ -599,7 +587,6 @@ int pciehp_disable_slot(struct slot *p_slot)
                if (ret || !getstatus) {
                        ctrl_info(ctrl, "Already disabled on slot(%s)\n",
                                  slot_name(p_slot));
-                       mutex_unlock(&p_slot->ctrl->crit_sect);
                        return -EINVAL;
                }
        }
@@ -607,7 +594,6 @@ int pciehp_disable_slot(struct slot *p_slot)
        ret = remove_board(p_slot);
        update_slot_info(p_slot);
 
-       mutex_unlock(&p_slot->ctrl->crit_sect);
        return ret;
 }
 
index 7374029316ecccd4bcbfe276f7ace8798fcee580..b1dcf9aa80bc778683bf51ec9226d46f9ddef38a 100644 (file)
@@ -1017,7 +1017,6 @@ struct controller *pcie_init(struct pcie_device *dev)
 
        ctrl->slot_cap = slot_cap;
        ctrl->hpc_ops = &pciehp_hpc_ops;
-       mutex_init(&ctrl->crit_sect);
        mutex_init(&ctrl->ctrl_lock);
        init_waitqueue_head(&ctrl->queue);
        dbg_ctrl(ctrl);