From: oreillym@tartarus.uwa.edu.au (Michael O'Reilly) Subject: bug + fix for 0.97 Date: 3 Aug 1992 07:27:46 GMT
Linux 0.97 introduced a bug w.r.t. the hard disk drivers..
I made these mods to the stock kernel:
Removed the scsi.o from the main makefile.
commented out the CONFIG_DISTRIBUTION in includelinux/config.h
set HD_DELAY = 150 in hd.c
Changed the keyboard to a stock US one.
Removed kernel math emulation
Removed the scsi SUBDIR from kernel/blk_drv/Makefile
add a -m486 to the CFLAGS in the master Makefile.
set SVGA_MODE to -DSVGA_NORMAL
Compiled this, and it hung.
Judicous adding of printk's revealed that hd.c never got
a read interrupt (this is the only one I checked). read_intr() was never
called.
I thought 'Ok. It probly the i/o stuff. let's look at the
REALL_SLOW_IO stuff'.
I was under the impression it wasn't already defined so I just
went just modified the 2 line in io.h to read
#if !define(REALLY_LOW_IO)
instead of the
#ifdef REALLY_SLOW_IO
they perviously read.
This kernel booted!!! But spewed out the hoards of debugging info, so I
went back to and old kernel and removed all the old printk's, and
generally cleaned up my debugging code.
On the way I found that hd.c DOES define REALLY_SLOW_IO. So I went and
removed the '!'s from #if !defined(REALLY... )
and changed the #define to and #undef, and tried again.
This FAILED! It hung at the same place. Putting the printk's back in
showed again, no call to read_intr.
I am back now with #if !defined() as the only change and it works.
Any ideas???
Michael