On Xen kernels, if ATC (address translation cache) is enabled, the
first PCIe DMA read from the adapter fails with an error. This is due to
a bug ASIC, which leads to a failure of 1860 ports to be initialised.

This patch includes the fix to disable Invalidated Tag Match Enable
capability by setting the bit 26 of CHIP_MISC_PRG to 0, by default it is
set to 1.

Signed-off-by: Anil Gurumurthy <aguru...@brocade.com>
Signed-off-by: Vijaya Mohan Guvva <vmo...@brocade.com>
---
 drivers/scsi/bfa/bfa_ioc_ct.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/scsi/bfa/bfa_ioc_ct.c b/drivers/scsi/bfa/bfa_ioc_ct.c
index de4e726..a8e52a1 100644
--- a/drivers/scsi/bfa/bfa_ioc_ct.c
+++ b/drivers/scsi/bfa/bfa_ioc_ct.c
@@ -918,6 +918,16 @@ bfa_ioc_ct2_pll_init(void __iomem *rb, enum bfi_asic_mode 
mode)
 
                }
        }
+       /*
+       * The very first PCIe DMA Read done by LPU fails with a fatal error,
+       * when Address Translation Cache (ATC) has been enabled by system BIOS.
+       *
+       * Workaround:
+       * Disable Invalidated Tag Match Enable capability by setting the bit 26
+       * of CHIP_MISC_PRG to 0, by default it is set to 1.
+       */
+       r32 = readl(rb + CT2_CHIP_MISC_PRG);
+       writel((r32 & 0xfbffffff), (rb + CT2_CHIP_MISC_PRG));
 
        /*
         * Mask the interrupts and clear any
-- 
1.7.12

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to