Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 28 Jan 2012 23:26:56 +0000 (UTC)
From:      Marius Strobl <marius@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r230678 - stable/8/sys/sparc64/pci
Message-ID:  <201201282326.q0SNQug5004143@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marius
Date: Sat Jan 28 23:26:55 2012
New Revision: 230678
URL: http://svn.freebsd.org/changeset/base/230678

Log:
  MFC: r225891
  
  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.

Modified:
  stable/8/sys/sparc64/pci/schizo.c
Directory Properties:
  stable/8/sys/   (props changed)
  stable/8/sys/amd64/include/xen/   (props changed)
  stable/8/sys/cddl/contrib/opensolaris/   (props changed)
  stable/8/sys/contrib/dev/acpica/   (props changed)
  stable/8/sys/contrib/pf/   (props changed)

Modified: stable/8/sys/sparc64/pci/schizo.c
==============================================================================
--- stable/8/sys/sparc64/pci/schizo.c	Sat Jan 28 23:26:50 2012	(r230677)
+++ stable/8/sys/sparc64/pci/schizo.c	Sat Jan 28 23:26:55 2012	(r230678)
@@ -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)							\



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201201282326.q0SNQug5004143>