Loading drivers/pci/host/pci-msm.c +14 −27 Original line number Diff line number Diff line Loading @@ -520,10 +520,8 @@ struct msm_pcie_dev_t { bool enumerated; struct work_struct handle_wake_work; struct mutex recovery_lock; spinlock_t linkdown_lock; spinlock_t wakeup_lock; spinlock_t global_irq_lock; spinlock_t aer_lock; spinlock_t irq_lock; ulong linkdown_counter; ulong link_turned_on_counter; ulong link_turned_off_counter; Loading Loading @@ -4529,7 +4527,6 @@ static irqreturn_t handle_aer_irq(int irq, void *data) u32 ep_dev_ctrlstts_offset = 0; int i, j, ep_src_bdf = 0; void __iomem *ep_base = NULL; unsigned long irqsave_flags; PCIE_DBG2(dev, "AER Interrupt handler fired for RC%d irq %d\nrc_corr_counter: %lu\nrc_non_fatal_counter: %lu\nrc_fatal_counter: %lu\nep_corr_counter: %lu\nep_non_fatal_counter: %lu\nep_fatal_counter: %lu\n", Loading @@ -4538,16 +4535,6 @@ static irqreturn_t handle_aer_irq(int irq, void *data) dev->ep_corr_counter, dev->ep_non_fatal_counter, dev->ep_fatal_counter); spin_lock_irqsave(&dev->aer_lock, irqsave_flags); if (dev->suspending) { PCIE_DBG2(dev, "PCIe: RC%d is currently suspending.\n", dev->rc_idx); spin_unlock_irqrestore(&dev->aer_lock, irqsave_flags); return IRQ_HANDLED; } uncorr_val = readl_relaxed(dev->dm_core + PCIE20_AER_UNCORR_ERR_STATUS_REG); corr_val = readl_relaxed(dev->dm_core + Loading Loading @@ -4661,7 +4648,6 @@ static irqreturn_t handle_aer_irq(int irq, void *data) PCIE20_AER_ROOT_ERR_STATUS_REG, 0x7f, 0x7f); spin_unlock_irqrestore(&dev->aer_lock, irqsave_flags); return IRQ_HANDLED; } Loading Loading @@ -4709,11 +4695,8 @@ static irqreturn_t handle_wake_irq(int irq, void *data) static irqreturn_t handle_linkdown_irq(int irq, void *data) { struct msm_pcie_dev_t *dev = data; unsigned long irqsave_flags; int i; spin_lock_irqsave(&dev->linkdown_lock, irqsave_flags); dev->linkdown_counter++; PCIE_DBG(dev, Loading Loading @@ -4754,8 +4737,6 @@ static irqreturn_t handle_linkdown_irq(int irq, void *data) } } spin_unlock_irqrestore(&dev->linkdown_lock, irqsave_flags); return IRQ_HANDLED; } Loading Loading @@ -4799,7 +4780,15 @@ static irqreturn_t handle_global_irq(int irq, void *data) unsigned long irqsave_flags; u32 status = 0; spin_lock_irqsave(&dev->global_irq_lock, irqsave_flags); spin_lock_irqsave(&dev->irq_lock, irqsave_flags); if (dev->suspending) { PCIE_DBG2(dev, "PCIe: RC%d is currently suspending.\n", dev->rc_idx); spin_unlock_irqrestore(&dev->irq_lock, irqsave_flags); return IRQ_HANDLED; } status = readl_relaxed(dev->parf + PCIE20_PARF_INT_ALL_STATUS) & readl_relaxed(dev->parf + PCIE20_PARF_INT_ALL_MASK); Loading Loading @@ -4838,7 +4827,7 @@ static irqreturn_t handle_global_irq(int irq, void *data) } } spin_unlock_irqrestore(&dev->global_irq_lock, irqsave_flags); spin_unlock_irqrestore(&dev->irq_lock, irqsave_flags); return IRQ_HANDLED; } Loading Loading @@ -6193,10 +6182,8 @@ static int __init pcie_init(void) mutex_init(&msm_pcie_dev[i].enumerate_lock); mutex_init(&msm_pcie_dev[i].setup_lock); mutex_init(&msm_pcie_dev[i].recovery_lock); spin_lock_init(&msm_pcie_dev[i].linkdown_lock); spin_lock_init(&msm_pcie_dev[i].wakeup_lock); spin_lock_init(&msm_pcie_dev[i].global_irq_lock); spin_lock_init(&msm_pcie_dev[i].aer_lock); spin_lock_init(&msm_pcie_dev[i].irq_lock); msm_pcie_dev[i].drv_ready = false; } for (i = 0; i < MAX_RC_NUM * MAX_DEVICE_NUM; i++) { Loading Loading @@ -6261,9 +6248,9 @@ static int msm_pcie_pm_suspend(struct pci_dev *dev, PCIE_DBG(pcie_dev, "RC%d: entry\n", pcie_dev->rc_idx); spin_lock_irqsave(&pcie_dev->aer_lock, irqsave_flags); spin_lock_irqsave(&pcie_dev->irq_lock, irqsave_flags); pcie_dev->suspending = true; spin_unlock_irqrestore(&pcie_dev->aer_lock, irqsave_flags); spin_unlock_irqrestore(&pcie_dev->irq_lock, irqsave_flags); if (!pcie_dev->power_on) { PCIE_DBG(pcie_dev, Loading Loading
drivers/pci/host/pci-msm.c +14 −27 Original line number Diff line number Diff line Loading @@ -520,10 +520,8 @@ struct msm_pcie_dev_t { bool enumerated; struct work_struct handle_wake_work; struct mutex recovery_lock; spinlock_t linkdown_lock; spinlock_t wakeup_lock; spinlock_t global_irq_lock; spinlock_t aer_lock; spinlock_t irq_lock; ulong linkdown_counter; ulong link_turned_on_counter; ulong link_turned_off_counter; Loading Loading @@ -4529,7 +4527,6 @@ static irqreturn_t handle_aer_irq(int irq, void *data) u32 ep_dev_ctrlstts_offset = 0; int i, j, ep_src_bdf = 0; void __iomem *ep_base = NULL; unsigned long irqsave_flags; PCIE_DBG2(dev, "AER Interrupt handler fired for RC%d irq %d\nrc_corr_counter: %lu\nrc_non_fatal_counter: %lu\nrc_fatal_counter: %lu\nep_corr_counter: %lu\nep_non_fatal_counter: %lu\nep_fatal_counter: %lu\n", Loading @@ -4538,16 +4535,6 @@ static irqreturn_t handle_aer_irq(int irq, void *data) dev->ep_corr_counter, dev->ep_non_fatal_counter, dev->ep_fatal_counter); spin_lock_irqsave(&dev->aer_lock, irqsave_flags); if (dev->suspending) { PCIE_DBG2(dev, "PCIe: RC%d is currently suspending.\n", dev->rc_idx); spin_unlock_irqrestore(&dev->aer_lock, irqsave_flags); return IRQ_HANDLED; } uncorr_val = readl_relaxed(dev->dm_core + PCIE20_AER_UNCORR_ERR_STATUS_REG); corr_val = readl_relaxed(dev->dm_core + Loading Loading @@ -4661,7 +4648,6 @@ static irqreturn_t handle_aer_irq(int irq, void *data) PCIE20_AER_ROOT_ERR_STATUS_REG, 0x7f, 0x7f); spin_unlock_irqrestore(&dev->aer_lock, irqsave_flags); return IRQ_HANDLED; } Loading Loading @@ -4709,11 +4695,8 @@ static irqreturn_t handle_wake_irq(int irq, void *data) static irqreturn_t handle_linkdown_irq(int irq, void *data) { struct msm_pcie_dev_t *dev = data; unsigned long irqsave_flags; int i; spin_lock_irqsave(&dev->linkdown_lock, irqsave_flags); dev->linkdown_counter++; PCIE_DBG(dev, Loading Loading @@ -4754,8 +4737,6 @@ static irqreturn_t handle_linkdown_irq(int irq, void *data) } } spin_unlock_irqrestore(&dev->linkdown_lock, irqsave_flags); return IRQ_HANDLED; } Loading Loading @@ -4799,7 +4780,15 @@ static irqreturn_t handle_global_irq(int irq, void *data) unsigned long irqsave_flags; u32 status = 0; spin_lock_irqsave(&dev->global_irq_lock, irqsave_flags); spin_lock_irqsave(&dev->irq_lock, irqsave_flags); if (dev->suspending) { PCIE_DBG2(dev, "PCIe: RC%d is currently suspending.\n", dev->rc_idx); spin_unlock_irqrestore(&dev->irq_lock, irqsave_flags); return IRQ_HANDLED; } status = readl_relaxed(dev->parf + PCIE20_PARF_INT_ALL_STATUS) & readl_relaxed(dev->parf + PCIE20_PARF_INT_ALL_MASK); Loading Loading @@ -4838,7 +4827,7 @@ static irqreturn_t handle_global_irq(int irq, void *data) } } spin_unlock_irqrestore(&dev->global_irq_lock, irqsave_flags); spin_unlock_irqrestore(&dev->irq_lock, irqsave_flags); return IRQ_HANDLED; } Loading Loading @@ -6193,10 +6182,8 @@ static int __init pcie_init(void) mutex_init(&msm_pcie_dev[i].enumerate_lock); mutex_init(&msm_pcie_dev[i].setup_lock); mutex_init(&msm_pcie_dev[i].recovery_lock); spin_lock_init(&msm_pcie_dev[i].linkdown_lock); spin_lock_init(&msm_pcie_dev[i].wakeup_lock); spin_lock_init(&msm_pcie_dev[i].global_irq_lock); spin_lock_init(&msm_pcie_dev[i].aer_lock); spin_lock_init(&msm_pcie_dev[i].irq_lock); msm_pcie_dev[i].drv_ready = false; } for (i = 0; i < MAX_RC_NUM * MAX_DEVICE_NUM; i++) { Loading Loading @@ -6261,9 +6248,9 @@ static int msm_pcie_pm_suspend(struct pci_dev *dev, PCIE_DBG(pcie_dev, "RC%d: entry\n", pcie_dev->rc_idx); spin_lock_irqsave(&pcie_dev->aer_lock, irqsave_flags); spin_lock_irqsave(&pcie_dev->irq_lock, irqsave_flags); pcie_dev->suspending = true; spin_unlock_irqrestore(&pcie_dev->aer_lock, irqsave_flags); spin_unlock_irqrestore(&pcie_dev->irq_lock, irqsave_flags); if (!pcie_dev->power_on) { PCIE_DBG(pcie_dev, Loading