Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[SCSI] bfa: Fix 1860 port initialize when ATC is enabled

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 <agurumur@brocade.com>
Signed-off-by: Vijaya Mohan Guvva <vmohan@brocade.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>

authored by

Vijaya Mohan Guvva and committed by
James Bottomley
e1aaab89 d7cbc304

+10
+10
drivers/scsi/bfa/bfa_ioc_ct.c
··· 918 918 919 919 } 920 920 } 921 + /* 922 + * The very first PCIe DMA Read done by LPU fails with a fatal error, 923 + * when Address Translation Cache (ATC) has been enabled by system BIOS. 924 + * 925 + * Workaround: 926 + * Disable Invalidated Tag Match Enable capability by setting the bit 26 927 + * of CHIP_MISC_PRG to 0, by default it is set to 1. 928 + */ 929 + r32 = readl(rb + CT2_CHIP_MISC_PRG); 930 + writel((r32 & 0xfbffffff), (rb + CT2_CHIP_MISC_PRG)); 921 931 922 932 /* 923 933 * Mask the interrupts and clear any