linux/drivers/pci/controller/dwc
Kunihiko Hayashi 4caab28a62 PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation
The condition register PCI_RCV_INTX is used in irq_mask() and irq_unmask()
callbacks. Accesses to register can occur at the same time without a lock.
Add a lock into each callback to prevent the issue.

And INTX mask and unmask fields in PCL_RCV_INTX register should only be
set/reset for each bit. Clearing by PCL_RCV_INTX_ALL_MASK should be
removed.

INTX status fields in PCL_RCV_INTX register only indicates each INTX
interrupt status, so the handler can't clear by writing 1 to the field.
The status is expected to be cleared by the interrupt origin.
The ack function has no meaning, so should remove it.

Suggested-by: Pali Rohár <pali@kernel.org>
Link: https://lore.kernel.org/r/1631924579-24567-1-git-send-email-hayashi.kunihiko@socionext.com
Fixes: 7e6d5cd88a ("PCI: uniphier: Add UniPhier PCIe host controller support")
Signed-off-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: Pali Rohár <pali@kernel.org>
Acked-by: Marc Zyngier <maz@kernel.org>
2021-10-15 10:15:53 +01:00
..
Kconfig PCI: dwc: Clean up Kconfig dependencies (PCIE_DW_EP) 2021-10-07 15:55:51 +01:00
Makefile Merge branch 'remotes/lorenzo/pci/keembay' 2021-09-02 14:56:48 -05:00
pci-dra7xx.c PCI: dra7xx: Get an optional clock 2021-09-30 09:52:16 +01:00
pci-exynos.c PCI: dwc: exynos: Rework the driver to support Exynos5433 variant 2020-12-01 10:22:30 +00:00
pci-imx6.c PCI: imx6: Enable PHY internal regulator when supplied >3V 2021-06-24 14:50:34 -05:00
pci-keystone.c PCI: Bulk conversion to generic_handle_domain_irq() 2021-08-02 11:53:05 -05:00
pci-layerscape-ep.c PCI: layerscape: Correct syntax by changing comma to semicolon 2021-03-22 17:24:19 +00:00
pci-layerscape.c PCI: layerscape: Convert to builtin_platform_driver() 2021-02-24 11:08:48 -06:00
pci-meson.c PCI: dwc: Remove unnecessary wrappers around dw_pcie_host_init() 2020-11-19 10:51:41 +00:00
pcie-al.c PCI: al: Remove useless dw_pcie_ops 2021-02-24 11:09:50 -06:00
pcie-armada8k.c PCI: dwc: Move dw_pcie_setup_rc() to DWC common code 2020-11-19 10:51:41 +00:00
pcie-artpec6.c PCI: artpec6: Remove local code block from switch statement 2021-08-31 14:54:33 -05:00
pcie-designware-ep.c PCI: dwc: Export more symbols to allow modular drivers 2021-09-30 09:52:16 +01:00
pcie-designware-host.c PCI: dwc: Perform host_init() before registering msi 2021-10-12 13:46:02 +01:00
pcie-designware-plat.c PCI: dwc: Remove surplus break statement after return 2021-08-31 14:56:43 -05:00
pcie-designware.c PCI: dwc: Export more symbols to allow modular drivers 2021-09-30 09:52:16 +01:00
pcie-designware.h PCI: dwc: Move iATU detection earlier 2021-04-29 17:05:59 +01:00
pcie-dw-rockchip.c PCI: rockchip-dwc: Add Rockchip RK356X host controller driver 2021-08-31 14:58:20 -05:00
pcie-fu740.c PCI: fu740: Add SiFive FU740 PCIe host controller driver 2021-05-04 14:58:22 +01:00
pcie-hisi.c PCI: Unify ECAM constants in native PCI Express drivers 2020-12-10 14:55:49 -06:00
pcie-histb.c PCI: dwc: Move dw_pcie_setup_rc() to DWC common code 2020-11-19 10:51:41 +00:00
pcie-intel-gw.c PCI: intel-gw: Fix INTx enable 2021-06-24 14:44:13 -05:00
pcie-keembay.c PCI: keembay: Add support for Intel Keem Bay 2021-08-20 13:47:05 +01:00
pcie-kirin.c PCI: dwc: Remove unnecessary wrappers around dw_pcie_host_init() 2020-11-19 10:51:41 +00:00
pcie-qcom.c PCI: qcom: Use PHY_REFCLK_USE_PAD only for ipq8064 2021-02-24 14:38:49 -06:00
pcie-spear13xx.c PCI: dwc: Move dw_pcie_setup_rc() to DWC common code 2020-11-19 10:51:41 +00:00
pcie-tegra194-acpi.c PCI: tegra194: Fix MCFG quirk build regressions 2021-06-18 10:32:34 -05:00
pcie-tegra194.c PCI: tegra194: Cleanup unused code 2021-08-04 12:28:17 +01:00
pcie-uniphier-ep.c PCI: dwc: Move "dbi", "dbi2", and "addr_space" resource setup into common code 2020-11-19 10:51:40 +00:00
pcie-uniphier.c PCI: uniphier: Serialize INTx masking/unmasking and fix the bit operation 2021-10-15 10:15:53 +01:00
pcie-visconti.c PCI: visconti: Remove surplus dev_err() when using platform_get_irq_byname() 2021-10-07 16:03:57 +01:00