SUMMARY (final!!): Re: Wierd SCSI problems on an Ultra 60

From: Earl Zmijewski (eez@fluent.com)
Date: Wed Aug 26 1998 - 09:32:31 CDT


The original note concerned putting a MultiPack2 onto an Ultra 60. The
Multipack has six 9GB disks and was timing out on writes to the disks on
the left side of the enclosure. This would reset the bus, turning down the
bus speed. After which, it would work fine, but at a slower speed.

After going around and around with attempts at fixing hardware, Sun gave us
the answer of putting

  set scsi_options=0x3f8

into the /etc/system file. And this worked! Complete details follow.

The following SunSolve document describes scsi_options.

-------------------------------------------------------------------------------

Document ID: 1227

SYNOPSIS: Setting scsi_options in /etc/system

DETAIL DESCRIPTION:

Setting scsi_options in /etc/system

SOLUTION SUMMARY:

The scsi_options variable in the Solaris 2.x kernel can be configured to
enable or disable particular capabilities. This can be achieved by
setting the scsi_options in the /etc/system file. The default
scsi_options variable allows the widest range of capabilities that the
SCSI host adapter can provide to be supported.

The default scsi_options value on Solaris 2.x works for both 5MB and
10MB devices. The driver will negotiate with each device to determine
if it is 10MB transfer capable or not. If they are 10MB devices, 10MB
transfer will be used. If not, 5MB transfer will be used.

If a particular capability is needed to be enabled or disabled the
following definitions can be used:

/*
 * SCSI subsystem options - global word of options are available
 *
 * bits 0-2 are reserved for debugging/informational level
 * bit 3 reserved for a global disconnect/reconnect switch
 * bit 4 reserved for a global linked command capability switch
 * bit 5 reserved for a global synchronous SCSI capability switch
 *
 * the rest of the bits are reserved for future use
 *
 */

#define SCSI_DEBUG_TGT 0x1 /* debug statements in target drivers */
#define SCSI_DEBUG_LIB 0x2 /* debug statements in library */
#define SCSI_DEBUG_HA 0x4 /* debug statements in host adapters */

#define SCSI_OPTIONS_DR 0x8 /* Global disconnect/reconnect */
#define SCSI_OPTIONS_LINK 0x10 /* Global linked commands */
#define SCSI_OPTIONS_SYNC 0x20 /* Global synchronous xfer capability
*/
#define SCSI_OPTIONS_PARITY 0x40 /* Global parity support */
#define SCSI_OPTIONS_TAG 0x80 /* " tagged command support */
#define SCSI_OPTIONS_FAST 0x100 /* " FAST scsi support */
#define SCSI_OPTIONS_WIDE 0x200 /* " WIDE scsi support */

For example a line in /etc/system that read:

        set scsi_options=0x3f8

means that the default options would be to allow WIDE SCSI, FAST SCSI,
tagged commands, global parity, synchronous transfer, linked commands
and global disconnect/reconnect, i.e. all currently supported options.

DATE APPROVED: 10/23/97
KEYWORDS: scsi_options /etc/system

-------------------------------------------------------------------------------

Now the default value on an Ultra 60 running Solaris 2.6 is

# adb -k
physmem f92d
scsi_options/X
scsi_options:
scsi_options: 7f8
$q

Looking at /usr/include/sys/scsi/conf/autoconf.h, we see ....

/*
 * Following are for debugging purposes (few Sun drivers support this)
 */
#define SCSI_DEBUG_TGT 0x1 /* debug statements in target drivers */
#define SCSI_DEBUG_LIB 0x2 /* debug statements in library */
#define SCSI_DEBUG_HA 0x4 /* debug statements in host adapters */

/*
 * Following are applicable to all interconnects
 */
#define SCSI_OPTIONS_LINK 0x10 /* Global linked commands */
#define SCSI_OPTIONS_TAG 0x80 /* Global tagged command support */

/*
 * Following are for parallel SCSI only
 */
#define SCSI_OPTIONS_DR 0x8 /* Global disconnect/reconnect */
#define SCSI_OPTIONS_SYNC 0x20 /* Global synchronous xfer capability */
#define SCSI_OPTIONS_PARITY 0x40 /* Global parity support */
#define SCSI_OPTIONS_FAST 0x100 /* Global FAST scsi support */
#define SCSI_OPTIONS_WIDE 0x200 /* Global WIDE scsi support */
#define SCSI_OPTIONS_FAST20 0x400 /* Global FAST20 scsi support */

So we have turned off FAST20 whatever that means. This has not impacted
the speed of writes to these disks, but it has completely stopped the bus
resets. We've tested this for hours of writing without a problem. Anyone
know what FAST20 is and why it's here?

I could only find an old bug report ...

Bug Id: 1229423
 Category: kernel
 Subcategory: driver
 State: integrated
 Release summary: s596_12
 Synopsis: scsa: add defines for FAST-20
        Integrated in releases: s596_14,
 Patch id:
 Description:
sgoyal - 11/27/95

This is the place holder for PSARC case 1995/187. We want
to the capability for HBA driver writer to use FAST20
features.

As far as code changes are concerned:

in autoconf.h

 #define SCSI_OPTIONS_FAST20 0x400 /* FAST20 scsi support */

in scsi_confdata.c



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:12:46 CDT