From: rab@ariel.its.unimelb.EDU.AU (Richard Alan Brown) Subject: Problems with HD in linux0.97 - fixed. Date: 7 Aug 1992 09:23:31 GMT
This article is from "glenn@tauon.ph.unimelb.edu.au".
I have a 486DX-33MHz with a cheap IDE controller (with 210 MB HD),
so I have been experiencing some of the HD interrupt and timeout problems
with various releases of linux (some releases are fine, some are not).
I got linux0.97, and when I boot it I get lots of printk's from hd.c.
The message is:
HD: read_intr: second status = 0x51
HD: read_intr: error = 0x00
I recompiled the kernel, with HD_DELAY set to 120 (as I read in a post
somewhere - thank you). The kernel then worked fine with my HD, with no
observable impact on disk performance (tested by makeing a kernel, and
copying large files). I then recompiled without the scsi code, as
suggested in the README. When I try to re-boot from the new Image
The system hangs while booting. I have seen a few posts reporting something
like this behaviour. So, I embarked on a look at the hd.c code.
I guessed (in an uneducated sort of way) that the "hd_out()" function
should reset the last_req counter when it terminates. So I added:
#if (HD_DELAY > 0)
last_req = read_timer();
#endif
to the end of the hd_out() code. My new kernel boots fine now (without the
scsi code, and no HD problems. Did I get lucky? Is there some sense in
what I did (it sorta made sense to me), or did I just do some dumb
thing which just changed the timings as a subtle side-effect.
Linux is fantastic, I am having a ball on my PC at home. Thank you to
all who have contributed (from Linus to the lowliest beta tester - like me).
glenn.
PS. I am using this account to read news, so please do not reply to
rab (he will get my mail). I can be contacted at
glenn@tauon.ph.unimelb.edu.au