diff options
author | marius <marius@FreeBSD.org> | 2011-10-01 00:31:30 +0000 |
---|---|---|
committer | marius <marius@FreeBSD.org> | 2011-10-01 00:31:30 +0000 |
commit | e7b8707889cd9e6ca8956bb963fd977166909c71 (patch) | |
tree | b382e60e9cb00b7e563a71b09a1f8f04df28ce29 /sys/sparc64/pci | |
parent | 1b77ae249ca0edabd3f169fa5c06103f5d573874 (diff) | |
download | FreeBSD-src-e7b8707889cd9e6ca8956bb963fd977166909c71.zip FreeBSD-src-e7b8707889cd9e6ca8956bb963fd977166909c71.tar.gz |
Re-reading the Schizo errata suggests that it's actually tolerable to
also use the streaming buffer of pre version 5/revision 2.3 hardware as
long as we stay away from context flushes (which iommu(4) so far doesn't
take advantage of). OpenSolaris does the same.
Diffstat (limited to 'sys/sparc64/pci')
-rw-r--r-- | sys/sparc64/pci/schizo.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/sparc64/pci/schizo.c b/sys/sparc64/pci/schizo.c index 4d1a5a7..3d147c8 100644 --- a/sys/sparc64/pci/schizo.c +++ b/sys/sparc64/pci/schizo.c @@ -501,7 +501,8 @@ schizo_attach(device_t dev) * Set up the IOMMU. Schizo, Tomatillo and XMITS all have * one per PBM. Schizo and XMITS additionally have a streaming * buffer, in Schizo version < 5 (i.e. revision < 2.3) it's - * affected by several errata and basically unusable though. + * affected by several errata though. However, except for context + * flushes, taking advantage of it should be okay even with those. */ memcpy(&sc->sc_dma_methods, &iommu_dma_methods, sizeof(sc->sc_dma_methods)); @@ -509,8 +510,7 @@ schizo_attach(device_t dev) sc->sc_is.sis_is.is_flags = IOMMU_PRESERVE_PROM; sc->sc_is.sis_is.is_pmaxaddr = IOMMU_MAXADDR(STX_IOMMU_BITS); sc->sc_is.sis_is.is_sb[0] = sc->sc_is.sis_is.is_sb[1] = 0; - if (OF_getproplen(node, "no-streaming-cache") < 0 && - !(sc->sc_mode == SCHIZO_MODE_SCZ && sc->sc_ver < 5)) + if (OF_getproplen(node, "no-streaming-cache") < 0) sc->sc_is.sis_is.is_sb[0] = STX_PCI_STRBUF; #define TSBCASE(x) \ |