From: Michael O'Reilly (oreillym@tartarus.uwa.edu.au)
Date: 08/03/92


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