Execute PL310_ERRATA_727915 only for related revisions

Part of PL310 erratum 727915 in pl310_wbinv_range() was
executed uncoditionally for all possible controllers'
revisions. This patch adds appropriate condition, since
extra operations are required only for revisions between
r2p0 and r3p0.

Submitted by: Marcin Wojtas <mw@semihalf.com>
Obtained from: Semihalf
Sponsored by: Stormshield
Reviewed by: meloun-miracle-cz
Differential revision: https://reviews.freebsd.org/D10221
This commit is contained in:
Zbigniew Bodek 2017-04-18 10:34:10 +00:00
parent 06918748e5
commit 9fdc4ca57c

View File

@ -272,7 +272,9 @@ pl310_wbinv_range(vm_paddr_t start, vm_size_t size)
#ifdef PL310_ERRATA_727915
platform_pl310_write_debug(pl310_softc, 3);
if (pl310_softc->sc_rtl_revision >= CACHE_ID_RELEASE_r2p0 &&
pl310_softc->sc_rtl_revision < CACHE_ID_RELEASE_r3p1)
platform_pl310_write_debug(pl310_softc, 3);
#endif
while (size > 0) {
#ifdef PL310_ERRATA_588369
@ -293,7 +295,9 @@ pl310_wbinv_range(vm_paddr_t start, vm_size_t size)
size -= g_l2cache_line_size;
}
#ifdef PL310_ERRATA_727915
platform_pl310_write_debug(pl310_softc, 0);
if (pl310_softc->sc_rtl_revision >= CACHE_ID_RELEASE_r2p0 &&
pl310_softc->sc_rtl_revision < CACHE_ID_RELEASE_r3p1)
platform_pl310_write_debug(pl310_softc, 0);
#endif
pl310_cache_sync();