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