*BSD News Article 21666


Return to BSD News archive

Xref: sserve comp.os.386bsd.bugs:1518 comp.os.386bsd.questions:5495
Newsgroups: comp.os.386bsd.bugs,comp.os.386bsd.questions
Path: sserve!newshost.anu.edu.au!munnari.oz.au!news.Hawaii.Edu!ames!agate!headwall.Stanford.EDU!nntp.Stanford.EDU!leland.Stanford.EDU!yergeau
From: yergeau@leland.Stanford.EDU (Dan Yergeau)
Subject: Re: NetBSD won't recognize VLB IDE caching controller's disks
Message-ID: <1993Sep30.164230.22703@leland.Stanford.EDU>
Sender: news@leland.Stanford.EDU (Mr News)
Organization: DSG, Stanford University, CA 94305, USA
References: <tps1.749261987@ra.msstate.edu> <28ce5p$5cb@pdq.coe.montana.edu> <1993Sep30.145413.24124@cs.wisc.edu>
Date: Thu, 30 Sep 93 16:42:30 GMT
Lines: 50

In article <1993Sep30.145413.24124@cs.wisc.edu>, jcargill@oka.cs.wisc.edu (Jon Cargille) writes:

|> Or, the other way to go about this would be to run FreeBSD, install
|> both the FreeBSD and NetBSD source trees, pull the wd driver out of
|> FreeBSD and put it into NetBSD.  Recompile the NetBSD kernel, and see
|> if it works then...

I've done something similar (a merge of the barsoom [for multiple
controller support] and FreeBSD [for stable bug fixes] drivers on
FreeBSD).  There are differences in the following files

  /sys/i386/isa/wd.c
  /sys/i386/isa/fd.c
  /sys/i386/isa/isa_device.h
  /usr/src/usr.sbin/config/mkioconf.c
    (you may want to get all of the config source from the other system)

and, your config file (e.g. GENERIC) will need to be changed to
reflect the style

NetBSD
controller	wdc0	at isa? port "IO_WD1" bio irq 14 vector wdintr
disk		wd0	at wdc0 drive 0
disk		wd1	at wdc0 drive 1

FreeBSD
controller	wd0	at isa? port "IO_WD1" bio irq 14 vector wdintr
disk		wd0	at wd0 drive 0
disk		wd1	at wd0 drive 1

There are still a few bugs in my driver.  I'm not convinced that it
will work properly with some old hardware (it doesn't always wait for
controller to become ready, but neither does FreeBSD).  And, the
driver can hang due to the race condition in wdopen (to the best of my
knowledge, this exists in both FreeBSD and NetBSD).

To do: 
  - merge in the NetBSD wait for ready fixes and controller reset cleanups
  - try to fix the race condition (will probably require a bit of a
    rewrite of wdattach or the state model)

If the demand is not too large, I can email either the complete files
or diffs relative to FreeBSD-1.0-GAMMA.  I wouldn't mind getting some
feedback from people using this driver on hardware that has been a
problem with either NetBSD or FreeBSD.

--
Dan Yergeau                         You are in a twisty little passage
yergeau@gloworm.Stanford.EDU        of standards, all conflicting.
#include <std.disclaimer>