summaryrefslogtreecommitdiff
path: root/drivers/pci
diff options
context:
space:
mode:
authorMeenakshi Aggarwal <meenakshi.aggarwal@freescale.com>2015-02-20 06:51:31 (GMT)
committerHonghua Yin <Hong-Hua.Yin@freescale.com>2015-03-16 09:51:07 (GMT)
commit838bc542d9a8b00ce3c5f84d09c8e7a8f3d60da7 (patch)
tree62f8cf1e333acf77aa2150d77dcb5a36a56fbc9a /drivers/pci
parent978464fa78fef73e7c225e3a316662b6bfd1c261 (diff)
downloadlinux-fsl-qoriq-838bc542d9a8b00ce3c5f84d09c8e7a8f3d60da7.tar.xz
pci_layerscape : Enable support of RT kernel in PCI-MSI interrupt handler
generic_handle_irq() should always be called in interrupt disabled context, this patch ensures that interrupts are disabled while calling generic_handle_irq(). It call local_irq_disable() before calling generic_handle_irq() and local_irq_enable() on exit. In case of non-rt kernel, ls_pcie_msi_irq_handler is called in interrupt disabled context, so no need to explicitly disabling interrupt while calling generic_handle_irq(). Signed-off-by: Meenakshi Aggarwal <meenakshi.aggarwal@freescale.com> Change-Id: I13d83423ea45c1ce5021474c04640ac7118664af Reviewed-on: http://git.am.freescale.net:8181/31478 Tested-by: Review Code-CDREVIEW <CDREVIEW@freescale.com> Reviewed-by: Priyanka Jain <Priyanka.Jain@freescale.com> Reviewed-by: Honghua Yin <Hong-Hua.Yin@freescale.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/host/pci-layerscape.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c
index 04ba519..e3cceb6 100644
--- a/drivers/pci/host/pci-layerscape.c
+++ b/drivers/pci/host/pci-layerscape.c
@@ -101,8 +101,13 @@ static irqreturn_t ls_pcie_msi_irq_handler(int irq, void *data)
dev_err(pcie->dev, "unexpected MSI\n");
return IRQ_NONE;
}
-
+#if defined(CONFIG_PREEMPT_RT_FULL) || defined(CONFIG_PREEMPT_RTB)
+ local_irq_disable();
+#endif
generic_handle_irq(msi_irq);
+#if defined(CONFIG_PREEMPT_RT_FULL) || defined(CONFIG_PREEMPT_RTB)
+ local_irq_enable();
+#endif
return IRQ_HANDLED;
}