Author: kadesai Date: Wed Dec 26 10:42:45 2018 New Revision: 342534 URL: https://svnweb.freebsd.org/changeset/base/342534
Log: On Aero/Sea A0 cards retry MPT Fusion registers reads for max three times Due to HW Errta on Aero/Sea A0 chipset on secure boot mode & on heavy IO load, sometimes read operation on MPT Fusion registers will give zero value, So, as a workaround driver will retry the MPT Fusion register read operation for max three times upon reading zero value form these registers. Submitted by: Sreekanth Reddy <sreekanth.re...@broadcom.com> Reviewed by: Kashyap Desai <kashyap.de...@broadcom.com> Approved by: ken MFC after: 3 days Sponsored by: Broadcom Inc Modified: head/sys/dev/mpr/mprvar.h Modified: head/sys/dev/mpr/mprvar.h ============================================================================== --- head/sys/dev/mpr/mprvar.h Wed Dec 26 10:41:53 2018 (r342533) +++ head/sys/dev/mpr/mprvar.h Wed Dec 26 10:42:45 2018 (r342534) @@ -530,7 +530,14 @@ struct scsi_read_capacity_eedp static __inline uint32_t mpr_regread(struct mpr_softc *sc, uint32_t offset) { - return (bus_space_read_4(sc->mpr_btag, sc->mpr_bhandle, offset)); + uint32_t ret_val, i = 0; + do { + ret_val = + bus_space_read_4(sc->mpr_btag, sc->mpr_bhandle, offset); + } while((sc->mpr_flags & MPR_FLAGS_SEA_IOC) && + (ret_val == 0) && (++i < 3)); + + return ret_val; } static __inline void _______________________________________________ svn-src-all@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"