From owner-cvs-all Fri May 10 20: 3:57 2002 Delivered-To: cvs-all@freebsd.org Received: from mail.speakeasy.net (mail14.speakeasy.net [216.254.0.214]) by hub.freebsd.org (Postfix) with ESMTP id 1291137B406 for ; Fri, 10 May 2002 20:03:42 -0700 (PDT) Received: (qmail 5492 invoked from network); 11 May 2002 03:03:41 -0000 Received: from unknown (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) by mail14.speakeasy.net (qmail-ldap-1.03) with DES-CBC3-SHA encrypted SMTP for ; 11 May 2002 03:03:41 -0000 Received: from laptop.baldwin.cx (laptop.baldwin.cx [192.168.0.4]) by server.baldwin.cx (8.11.6/8.11.6) with ESMTP id g4B33dF45172; Fri, 10 May 2002 23:03:39 -0400 (EDT) (envelope-from jhb@FreeBSD.org) Message-ID: X-Mailer: XFMail 1.5.2 on FreeBSD X-Priority: 3 (Normal) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 8bit MIME-Version: 1.0 In-Reply-To: <200205110256.g4B2uNnA008926@hak.lan.Awfulhak.org> Date: Fri, 10 May 2002 23:03:36 -0400 (EDT) From: John Baldwin To: Brian Somers Subject: Re: cvs commit: src/sys/isa fd.c fdreg.h Cc: cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org, Joerg Wunsch Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG On 11-May-2002 Brian Somers wrote: >> >> 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 >> >> >> 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). For the most part kernel modules don't go out dinking around in userland, so most of them don't care about stuff like this. :) What I meant is more that things like interrupts and timeouts are always enabled. > 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 ;*) You have to do multiple passes. On the first pass you probe things like clocks, interrupt controllers, bridges, etc. Then you can turn on interrupts and timeouts so scheduling works. Finally, you go through and do a second pass where you probe everything else. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message