home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!cs.utexas.edu!sun-barr!ames!saimiri.primate.wisc.edu!usenet.coe.montana.edu!news.u.washington.edu!ogicse!mimbres.cs.unm.edu!unmvax!uservx.plk.af.mil!hrd769.brooks.af.mil!hrd769.brooks.af.mil!not-for-mail
- From: news@hrd769.brooks.af.mil (InterNet News)
- Newsgroups: comp.unix.bsd
- Subject: Re: 386BSD wd.c timeout problem during autoconfig
- Message-ID: <1gnpa7INN2u1@hrd769.brooks.af.mil>
- Date: 16 Dec 92 05:33:59 GMT
- Article-I.D.: hrd769.1gnpa7INN2u1
- References: <1992Dec16.002542.6959@moxie.hou.tx.us>
- Sender: burgess@hrd769.brooks.af.mil (Dave Burgess)
- Organization: Armstrong Lab MIS, Brooks AFB TX
- Lines: 44
- NNTP-Posting-Host: hrd769.brooks.af.mil
-
- In article <1992Dec16.002542.6959@moxie.hou.tx.us> hackney@moxie.hou.tx.us (Greg Hackney) writes:
- }
- }We found a timeout problem in the wd.c code that occurs when the
- }system trys to autoconfigure the disk drives at boot time.
- }
- }In wdcommand() there is a declaration: int timeout = 1000000;
- }
- }This is a loop counter that runs while the disk controller
- }registers are being probed. For a Conner 510MB IDE drive on a Compaq
- }SystemPro 486/33, that value is not large enough for the controller
- }to respond in time. (It's only short by a count of about 3,000 on
- }this system).
- }
- }As a result, booting the dist.fs floppy indicates you have no hard
- }disk drives.
- }
- }The fix was to increase the value of timeout. We used 1,500,000.
- }--
- }Greg Hackney hackney@compaq.com
- }Mike Busby mcb@compaq.com
- }
- }
- I apologize for not looking at the code closely before I jump into this,
- but shouldn't we be using a time value instead of a processor speed
- dependent for loop? Something like usleep(3) comes to mind, but I could be
- mistaken.
-
- As an example:
-
- while(((stat = inb(wdc + wd_status)) & WDCS_BUSY) && timeout-- > 0)
- usleep(n);
-
- Where n is some reasonable number of milliseconds to pause and
- timeout is the number of pauses before there is an actual error.
-
- If we sleep for 1 millisecond, and the timeout value is 1 second,
- then timeout would be 1000. This way, the code doesn't break on fast
- '486 machines (assuming that usleep works).
-
- What kind of problems would this cause?
-
- TSgt Dave Burgess
- NCOIC AL/MIS
- Brooks AFB, TX
-