Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 11 May 2002 03:56:23 +0100
From:      Brian Somers <brian@Awfulhak.org>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Brian Somers <brian@Awfulhak.org>, Joerg Wunsch <joerg@FreeBSD.org>, cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/sys/isa fd.c fdreg.h 
Message-ID:  <200205110256.g4B2uNnA008926@hak.lan.Awfulhak.org>
In-Reply-To: Message from John Baldwin <jhb@FreeBSD.org>  of "Fri, 10 May 2002 21:39:45 EDT." <XFMail.20020510213945.jhb@FreeBSD.org> 

next in thread | previous in thread | raw e-mail | index | archive | help
> 
> On 11-May-2002 Brian Somers wrote:
> >> 
> >> On 11-May-2002 Brian Somers wrote:
> >> >> joerg       2002/05/10 10:56:39 PDT
> >> >> 
> >> >>   Modified files:
> >> >>     sys/isa              fd.c fdreg.h 
> >> >>   Log:
> >> >>   Change the PIO loops from a hard counter into a loop that calls DELAY()
> >> >>   in each cycle, with a tunable max cycle count defined in fdreg.h.
> >> >>   
> >> >>   This is said to fix the problem on some Compaq hardware (and perhaps
> >> >>   on other machines using the Natsemi PC87317 chip) where the fdc(4)
> >> >>   driver failed to operate at all.
> >> >>   
> >> >>   PR:             kern/21397
> >> >>   Submitted by:   Jung-uk Kim <jkim@niksun.com>
> >> >>   MFC after:      3 days
> >> >>   
> >> >>   Revision  Changes    Path
> >> >>   1.229     +14 -8     src/sys/isa/fd.c
> >> >>   1.16      +12 -0     src/sys/isa/fdreg.h
> >> > 
> >> > As fdc is also a module, would it be better to call tsleep() instead 
> >> > of delay if (!cold) ?  Like in sys/dev/digi/digi.c:digi_delay()...
> >> 
> >> Hmm, we should come up with the real fix for this quick so as to avoid
> >> propagating that hack any farther than we have to. :-/  (Not picking on
> >> you Brian).
> > 
> > Yes.
> > 
> > NetBSD has an MD delay() function in sys/arch/*/{,*/}clock.c, 
> > prototyped in sys/arch/*/include/cpu.h.  I guess I could have a go at 
> > bringing that into FreeBSD.
> 
> No, the real fix is to redo device probing so it's always done in the
> same environment.  IOW, you would always use tsleep() and never use
> DELAY().

Well, the environment can't be the same - there's no filesystem yet 
during the boot time probe for example (and there can't be if we 
expect to be able to load the filesystem driver as a module).

However, I agree that it'd be nice to have interrupts before any 
probes occur.  Are you suggesting that the contents of configure() 
in autoconf.c should be re-arranged so that the spl0() happens before 
root_bus_configure() ?  I suspect it's not that easy ;*)
-- 
Brian <brian@Awfulhak.org>                    <brian@freebsd-services.com>
      <http://www.Awfulhak.org>;                   <brian@[uk.]FreeBSD.org>
Don't _EVER_ lose your sense of humour !          <brian@[uk.]OpenBSD.org>



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




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