From: Mark Lord (mlord@bnr.ca)
Date: 09/13/93


From: mlord@bnr.ca (Mark Lord)
Subject: Re: Defrag'ers and SZ prob's
Date: Mon, 13 Sep 1993 17:07:35 GMT

In article <1993Sep12.232249.171@grendel.demon.co.uk> jes@grendel.demon.co.uk writes:
...
>Disc writes, particularly sync calls, seem to cause overruns more than
>reads do. If you are feeling brave, you can modify the source of hd.c
>to enable interrupts during the transfer (further disc interrupts are
>already disabled in the 8259). Find the occurences of port_read() and
>port_write() in linux/kernel/blk_drv/hd.c. Add an sti() call before
>each one, and for those calls which are not immediately followed by
>an sti(), add a cli() call just after the port_read/port_write.

To be much safer on writes, change the code to do:

        sti(); port_write(first 255 words only); cli(); port_write(last word);

Actually, just inserting sti(); nop(); nop(); cli();
in front of the port_read/write lines may work in many systems.

-- 
mlord@bnr.ca    Mark Lord       BNR Ottawa,Canada       613-763-7482