Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 6 Feb 1999 11:09:19 -0500 (EST)
From:      adrian@ubergeeks.com
To:        FreeBSD-gnats-submit@FreeBSD.ORG
Subject:   kern/9927: miltichannel scsi 3940 channel swapping problem
Message-ID:  <199902061609.LAA00642@thneed.ubergeeks.com>

next in thread | raw e-mail | index | archive | help

>Number:         9927
>Category:       kern
>Synopsis:       the ahc driver doesn't correctly grok switched SCSI channels
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Feb  6 08:10:00 PST 1999
>Closed-Date:
>Last-Modified:
>Originator:     Adrian Filipi-Martin
>Release:        FreeBSD 3.0-STABLE i386
>Organization:
Ubergeeks Consulting
>Environment:

	The system has a dual UW AHA-3940 SCSI controller on the
	MB, a Tyan S1836DULAN.  Since I want to segregate the UW
	devices from the non-UW devices, they all get attached to
	channel B.  Channel B is the one with my boot disk.  Channel
	A and B have been swapped in the BIOS, so that it does not
	try to boot from the non-UW disk on channel A.

	Below are the relavent lines from the kernel probing.  Note
	that ahc0 is channel A, and ahc1 is channel B.

ahc0: <Adaptec aic7895 Ultra SCSI adapter> rev 0x04 int a irq 16 on pci0.18.0
ahc0: aic7895 Wide Channel A, SCSI Id=7, 16/255 SCBs
ahc1: <Adaptec aic7895 Ultra SCSI adapter> rev 0x04 int b irq 16 on pci0.18.1
ahc1: aic7895 Wide Channel B, SCSI Id=7, 16/255 SCBs
da1 at ahc1 bus 0 target 6 lun 0
da1: <IBM DGVS09U 03B0> Fixed Direct Access SCSI-3 device 
da1: 40.0MB/s transfers (20.0MHz, offset 8, 16bit), Tagged Queueing Enabled
da1: 8705MB (17829870 512 byte sectors: 255H 63S/T 1109C)
da0 at ahc0 bus 0 target 6 lun 0
da0: <SEAGATE ST15230W SUN4.2G 0738> Fixed Direct Access SCSI-2 device 
da0: 20.0MB/s transfers (10.0MHz, offset 8, 16bit), Tagged Queueing Enabled
da0: 4095MB (8386733 512 byte sectors: 255H 63S/T 522C)

>Description:

	The ahc driver assigns the unit numbers in the same order whether
	or not the primary chanel has been changed in the BIOS.

	As a result the boot disk shows up as da1.  This is sort of ok
	except that the BIOS reports this device as drive 0, and not drive 1.
	This confuses the hell out of the new bootblocks.  To boot I
	must have "0:da(1,a)kernel" in /boot.config.  The new loader doesn't
	like the fact that da1 == BIOS 0 either.

>How-To-Repeat:

	Swap your primary and secondary channel on a similar card
	and boot.  ahc0 will _always_ be assigned to channel A,
	regardless of the BIOS primary channel setting.

>Fix:

	I do not have a fix, but I did try to see if it was easy
	to fix.  There is code in the ahc driver that will change
	the order of unit number assignemts when the primary chanel
	is swapped.  The problem is that is does not seem to work
	for this particular controller.  I tried making a few
	changes by looking at what other flags changed when the
	BIOS setting was changed, but it doesn't appear to be a
	simple fix.

>Release-Note:
>Audit-Trail:
>Unformatted:

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message



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