svn commit: r190081 - in stable/6/sys: . contrib/pf dev/cxgb dev/isp

Marius Strobl marius at FreeBSD.org
Thu Mar 19 09:40:02 PDT 2009


Author: marius
Date: Thu Mar 19 16:39:59 2009
New Revision: 190081
URL: http://svn.freebsd.org/changeset/base/190081

Log:
  MFC: r186140
  
  Don't try reading the SXP_PINS_DIFF on the 10160 and 12160 SCSI
  controllers. Reading this register, for which there are indications
  that it doesn't really exist, returns 0 on at least some 12160
  and doing so on Sun Fire V880 causes a data access error exception.
  
  Reported and tested by:	Beat Gaetzi
  Approved by:		mjacob
  Obtained from:		OpenBSD (modulo setting isp_lvdmode)

Modified:
  stable/6/sys/   (props changed)
  stable/6/sys/contrib/pf/   (props changed)
  stable/6/sys/dev/cxgb/   (props changed)
  stable/6/sys/dev/isp/isp.c

Modified: stable/6/sys/dev/isp/isp.c
==============================================================================
--- stable/6/sys/dev/isp/isp.c	Thu Mar 19 16:37:30 2009	(r190080)
+++ stable/6/sys/dev/isp/isp.c	Thu Mar 19 16:39:59 2009	(r190081)
@@ -335,6 +335,23 @@ isp_reset(ispsoftc_t *isp)
 		/*
 		 * XXX: Should probably do some bus sensing.
 		 */
+	} else if (IS_ULTRA3(isp)) {
+		sdparam *sdp = isp->isp_param;
+
+		isp->isp_clock = 100;
+
+		if (IS_10160(isp))
+			btype = "10160";
+		else if (IS_12160(isp))
+			btype = "12160";
+		else
+			btype = "<UNKLVD>";
+		sdp->isp_lvdmode = 1;
+
+		if (IS_DUALBUS(isp)) {
+			sdp++;
+			sdp->isp_lvdmode = 1;
+		}
 	} else if (IS_ULTRA2(isp)) {
 		static const char m[] = "bus %d is in %s Mode";
 		uint16_t l;
@@ -346,10 +363,6 @@ isp_reset(ispsoftc_t *isp)
 			btype = "1280";
 		else if (IS_1080(isp))
 			btype = "1080";
-		else if (IS_10160(isp))
-			btype = "10160";
-		else if (IS_12160(isp))
-			btype = "12160";
 		else
 			btype = "<UNKLVD>";
 


More information about the svn-src-stable mailing list