On 6/12/2018 1:29 AM, poza@xxxxxxxxxxxxxx wrote:
On 2018-06-12 05:51, Ray Jui wrote:
The internal MSI parsing logic in certain revisions of PAXC rootcan be dropped.
complexes does not work properly and can casue corruptions on the
writes. They need to be disabled
Signed-off-by: Ray Jui <ray.jui@xxxxxxxxxxxx>
Reviewed-by: Scott Branden <scott.branden@xxxxxxxxxxxx>
---
Âdrivers/pci/host/pcie-iproc.c | 34 ++++++++++++++++++++++++++++++++--
Â1 file changed, 32 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/host/pcie-iproc.c b/drivers/pci/host/pcie-iproc.c
index 680f6b1..0804aa2 100644
--- a/drivers/pci/host/pcie-iproc.c
+++ b/drivers/pci/host/pcie-iproc.c
@@ -1197,10 +1197,22 @@ static int iproc_pcie_paxb_v2_msi_steer(struct
iproc_pcie *pcie, u64 msi_addr)
ÂÂÂÂ return ret;
Â}
-static void iproc_pcie_paxc_v2_msi_steer(struct iproc_pcie *pcie, u64 msi_addr)
+static void iproc_pcie_paxc_v2_msi_steer(struct iproc_pcie *pcie, u64 msi_addr,
+ÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂÂ bool enable)
Â{
ÂÂÂÂ u32 val;
+ÂÂÂ if (!enable) {
+ÂÂÂÂÂÂÂ /*
+ÂÂÂÂÂÂÂÂ * Disable PAXC MSI steering. All write transfers will be
+ÂÂÂÂÂÂÂÂ * treated as non-MSI transfers
+ÂÂÂÂÂÂÂÂ */
+ÂÂÂÂÂÂÂ val = iproc_pcie_read_reg(pcie, IPROC_PCIE_MSI_EN_CFG);
+ÂÂÂÂÂÂÂ val &= ~MSI_ENABLE_CFG;
+ÂÂÂÂÂÂÂ iproc_pcie_write_reg(pcie, IPROC_PCIE_MSI_EN_CFG, val);
+ÂÂÂÂÂÂÂ return;
No it cannot be dropped. Please review the code carefully.