Subject: Re: SBIC
To: Ignatios Souvatzis <ignatios@theory.cs.uni-bonn.de>
From: Berndt Josef Wulf <wulf@hotdog.apana.org.au>
List: amiga
Date: 11/04/1995 10:34:05
Ignatios Souvatzis writes:
> 
>    Date: Thu, 2 Nov 95 22:45:53 CST
>    From: bruce@zuhause.mn.org (Bruce Albrecht)
>    Sender: owner-amiga-dev@NetBSD.ORG
>    Precedence: list
>    X-Loop: amiga-dev@NetBSD.ORG
> 
>    Frank Dana wrote:
>       The GENERIC system is supposed to "work on as many systems as possible"
>       (says so right in the kernel config file). Well, async works on every sys-
>       tem sync works on, plus a hell of a lot more. Do we need a better argument
>       for defaulting to async?
> 
>       It would be great if sync worked. But it doesn't, and I don't think there's
>       time left to iron out all of the problems.
> 
>    I cannot stress too much that I don't want the SBIC driver to go back
>    to the original NetBSD-1.0 version.  However, I think it's
>    inappropriate for the default behaviour to be to turn on sync mode for
>    all devices, since there are clearly too many devices that lock up
>    when this happens.  I don't know if the ultimate solution is to
>    determine this at boot time, or to select it by controller/device when
>    building a kernel. If neither of these options is likely to be
>    implemented before the upcoming code freeze, then I think the only
>    solution is to disable sync mode, and let knowledgeable users rebuild
>    their kernel to turn it on (just the opposite of what I had to do).
> 
> There is just one problem.
> 
> If s.b. operates his Amiga 3000 with sync scsi under AmigaOS, and
> tries to boot an async netbsd kernel, it will freeze ALWAYS:
> 
> a) the hardware can't reset the SCSI bus (with the exception of the
> CPU RESET instruction, which we want to avoid because we cannot probe
> e.g. the Zorro bus ourselves, so we dont want to reset that).
> Therefore all devices running sync will still expect sync transfers
> (with delayed acknowledges). The A3000, operating async, will wait
> forever of the acknoledge. I think the same goes for other 33C93 host
> adapters, as the chip itself doesn't include a reset output line and
> the manufacturers where to lazy to implement a independently settable
> output bit.
> 
> My patch which tells the driver to explicitl negotiate async wasn't
> integrated with the new driver. Anyway, it wouldn't help, as the same
> drives which break the sync negotiation would break on the async
> negotiation, which is just sync negotiation with an "offset" field of
> zero. 
> 
> Only think which might help would be to send a scsi reset message to
> the individual targets. But even with this one of my devices
> misbehaved... that was with the old driver, I didn't try this kind of
> funky stuff with the new one.
> 
> So you see, its not that easy.
> 
> I propose to include TWO generic kernels: one with sbic_inhibit_sync=1
> and one with sbic_inhibit_sync =0. 

With netbsd-1.0 one had the option to switch sync-mode on/off using 
the binpatch utility. This would be of great advantage to those who
don't have the space to re-compile the kernel to suit there particular
system configuration.

Comments?

cheerio Berndt
-- 
Name    : Berndt Josef Wulf        | Amiga 4000/40-25, 16MB, NetBSD-1.0-950902
E-Mail  : wulf@hotdog.apana.org.au |       Cybervision64 4MB , Retina-Z2 4MB,
Phone   : ++61 411 245170          |       Z3-Fastlane, A2065 Ethernet