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>