*BSD News Article 38977


Return to BSD News archive

Path: sserve!newshost.anu.edu.au!harbinger.cc.monash.edu.au!msunews!uwm.edu!lll-winken.llnl.gov!sol.ctr.columbia.edu!startide.ctr.columbia.edu!wpaul
From: wpaul@ctr.columbia.edu (Bill Paul)
Newsgroups: comp.os.386bsd.questions
Subject: Re: FreeBSD 2.0R fails to find my HDs
Date: 6 Dec 1994 05:28:53 GMT
Organization: Columbia University Center for Telecommunications Research
Lines: 109
Message-ID: <3c0sql$447@sol.ctr.columbia.edu>
References: <3bh42f$5ja@gate.sinica.edu.tw> <JKH.94Nov30115736@whisker.hubbard.ie> <3bm0gn$566@gate.sinica.edu.tw> <3c03jr$50u@pdq.coe.montana.edu> <3c0n36$2su@gate.sinica.edu.tw>
NNTP-Posting-Host: startide.ctr.columbia.edu
X-Newsreader: TIN [version 1.2 PL2]

Daring to challenge the will of the almighty Leviam00se,
ywliu@beta.wsl.sinica.edu.tw had the courage to say:

: Nate Williams (nate@bsd.coe.montana.edu) wrote:

: : So you are saying that FreeBSD doesn't find ANY controller?  Are you
: : trying to add 2 controllers to your machine?  If so, then you need to
: : get a controller that allows you to change the I/O address.  Sticking
: : two un-configurable controllers will not work in ANY operating system.

:   Of course not; I tested one at a time. Those controllers work
: very well under MS-DOS. I just didn't figure out how FreeBSD did to 
: locate the IDE hard disk controller and why it failed but MS-DOS
: always succeeds.

: Yen-Wei Liu

I would check to make sure something isn't wrong with the controllers'
interrupt lines. MS-DOS (to my knowledge) doesn't use interrupt-driven
disk I/O: it does polled I/O. This means that if flat-out ignores the
interrupt lines from the controller. (You aren't by any chance trying
to stuff a 16 bit card into an 8 bit slot, are you?)

This, according to my theory, is why IDE controller manufacturers often
make boards that allow you to switch I/O addresses, but not IRQs. I happen
to have two IDE controllers in my system: one of them is built onto my
motherboard, and the other is a DTC-2280 "Super I/O Card" (this card
also provides me with a second parallel port and a 3rd COM port). The
DTC card has jumpers that let you select the secondary disk controller
I/O address, but the interrupt is hardwired to IRQ14 (which is the
IRQ used by the primary controller). When I first installed the card
and powered up the machine, the system completed its power-on self tests
normally, but the FreeBSD 1.1.5.1 bootblock became hopelessly wedged
while trying to load the first few sectors of the kernel from wd1 (D:).
I finally managed to boot from floppy, but whenever I tried to mount any
of my hard disks, I would get device timeout errors from the kernel.

At the same time, MS-DOS continued to work normally, presumeably because
it didn't care that there was an IRQ conflict between the two controllers.
Now, don't get the idea that this is a good thing: it isn't. I imagine
that DOS's disk performance is pretty crummy because of the brain-damaged
way it does disk I/O. (Unfortunately I can't prove this. If anyone out there
can and has proven it, I'd love to hear from you. :) Nevertheless, there's
always someone out there who insists that his broken hardware is really
okay because 'it works with DOS just fine.' Please: spare me. There was
a guy on here a few months back who had his floppy drives wired backwards
and didn't even know it because DOS couldn't tell the difference. You
call that fine?

So, how did I get the second controller to work, you ask? Simple: I did
a little hunting around the net, and for my troubles I was rewarded with
a copy of the Linux dual controller patch, complete with installation
instructions. These instructions show quite clearly where the pins for
IRQ14 and IRQ15 are located on a 16 bit ISA card. From there, it was
just a matter of 5 minutes work with an X-acto knife and my trusty
soldering iron (what!? you don't have a soldering iron!?), and presto!
my new controller was now wired for IRQ15 instead of IRQ14. After that,
I just plugged it in, slapped a drive on it and booted up:

FreeBSD 1.1.5.1 (SKYNET) #20: Thu Oct 13 23:14:15 EDT 1994
CPU: i386DX (386-class CPU)
real memory  = 4194304 (1024 pages)
avail memory = 3264512 (797 pages)
[....]
wdc0 at 0x1f0-0x1f7 irq 14 on isa
wdc0: unit 0 (wd0): <ST351A/X>
wd0: 40MB (83300 total sec), 980 cyl, 5 head, 17 sec, bytes/sec 512
wdc0: unit 1 (wd1): <Maxtor 7345 AT>
wd1: 329MB (675450 total sec), 790 cyl, 15 head, 57 sec, bytes/sec 512
wdc1 at 0x170-0x177 irq 15 on isa
wdc1: unit 0 (wd2): <ST351A/X>
wd2: 40MB (83300 total sec), 980 cyl, 5 head, 17 sec, bytes/sec 512
[....]

wd0 is a Seagate ST351A/X with DOS on it. wd1 is a Maxtor 7345 with
FreeBSD 1.1.5.1 on it: this is my primary FreeBSD boot drive. wd2 is
another Seagate with a single 40 meg FreeBSD partition on it: this
I use for scratch. I can boot from either wd0 or wd1. wd2 is only
visible while running FreeBSD. (I would need a special driver to
make it visible in DOS, and I don't really care enough for DOS to
go to that much trouble.)

My only regret is that there isn't enough room inside my computer for
a 4th disk drive. :) Then again, the second Segate is likely to get the
heave-ho before too long, since it recently suffered a head crash. Damn
thing is slow as molasses anyway.

At any rate, the probe routines in the FreeBSD winchester disk driver
probably won't detect a board if the interrupt line isn't working
correctly. We could be talking about something as simple as oxidation
on the pins of the ISA slot, or maybe a bad trace somewhere on the
motherboard. Try using a different slot. Try cleaning the current slot.
Try making sure the boards are seated correctly. Try checking to see if
gremlins have eaten away the copper cladding on the controllers' edge
connectors. Try to make sure there isn't something else using IRQ14.

Now... I wonder how much trouble it would be to enable the secondary
*floppy* controller. :)
 
-Bill

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Bill Paul                             System Manager
wpaul@ctr.columbia.edu                 Center for Telecommunications Research
                                       Columbia University, New York City
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Møøse Illuminati: ignore it and be confused, or join it and be confusing!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~