Messages in this thread Patch in this message | | | Date | Thu, 21 Jan 1999 09:00:24 -0600 (CST) | From | "Andre M. Hedrick" <> | Subject | Re: Set Multimode Question/error |
| |
On Wed, 20 Jan 1999, T Taneli Vahakangas wrote:
> Hello! > > On Wed, 20 Jan 1999, Benjamin Close wrote: > > > Hi, > > > > Could someone tell me why I get the following error at boot up: > > > > Partition check: > > hda: hda1 hda2 hda3 > > hdb:hdb: set_multmode: status=0x51 { DriveReady SeekComplete Error } > > hdb: set_multmode: error=0x04 { DriveStatusError } > > hdb1 hdb2 < hdb5 hdb6 hdb7 hdb8 > hdb3 hdb4 > > I'm also curious as to why this had to creep back. Is there some reason to > set multmode on bootup in the kernel? Andre, if you're reading, please > comment ...
I was asked by Alan Cox to reverse to the original code prior to 2.1.122. I thought that auto-setting was the correct method based on some code loaned to me from a vender. This patch will allow for a config option.
Since some drives are fussy about having this value set either to ZERO or MAX and most are DGD (Don't Give a Darn), this will allow folks to pick and choose.
> As far as I can see, this is totally unnecessary; my own faulting drive > (also a Seagate, but different model --> ST34321A) uses DMA for transfers > and multmode is actually set off later in the boot process.
Cheers, Andre Hedrick The (NEW) Linux IDE guy The APC UPS Specialist for Linux
http://www.dyer.vanderbilt.edu/server/udma/ http://www.dyer.vanderbilt.edu/server/apcupsd/apcupsd-3.5.2.bin.tar.gz
You just need a bigger hammer, or learn how to swing the one you have better. (C) me..... diff -urN linux-2.2.0-pre8-pristine/Documentation/Configure.help linux/Documentation/Configure.help --- linux-2.2.0-pre8-pristine/Documentation/Configure.help Sat Jan 16 18:57:53 1999 +++ linux/Documentation/Configure.help Tue Jan 19 23:48:36 1999 @@ -333,6 +333,15 @@ root filesystem (the one containing the directory /) is located on the IDE disk. If unsure, say Y. +Use auto multi-mode by default support +CONFIG_BLK_DEV_IDEDISK_MULTI_MODE + If you get this error, try to enable this option. + + hda: set_multmode: status=0x51 { DriveReady SeekComplete Error } + hda: set_multmode: error=0x04 { DriveStatusError } + + If in doubt, say N. + Include IDE/ATAPI CDROM support CONFIG_BLK_DEV_IDECD If you have a CDROM drive using the ATAPI protocol, say Y. ATAPI is diff -urN linux-2.2.0-pre8-pristine/drivers/block/Config.in linux/drivers/block/Config.in --- linux-2.2.0-pre8-pristine/drivers/block/Config.in Tue Dec 29 13:21:49 1998 +++ linux/drivers/block/Config.in Tue Jan 19 23:41:54 1999 @@ -19,6 +19,9 @@ else bool ' Use old disk-only driver on primary interface' CONFIG_BLK_DEV_HD_IDE dep_tristate ' Include IDE/ATA-2 DISK support' CONFIG_BLK_DEV_IDEDISK $CONFIG_BLK_DEV_IDE + if [ "$CONFIG_BLK_DEV_IDEDISK" != "n" ]; then + bool ' Use auto multi-mode by default support' CONFIG_BLK_DEV_IDEDISK_MULTI_MODE + fi dep_tristate ' Include IDE/ATAPI CDROM support' CONFIG_BLK_DEV_IDECD $CONFIG_BLK_DEV_IDE dep_tristate ' Include IDE/ATAPI TAPE support' CONFIG_BLK_DEV_IDETAPE $CONFIG_BLK_DEV_IDE dep_tristate ' Include IDE/ATAPI FLOPPY support' CONFIG_BLK_DEV_IDEFLOPPY $CONFIG_BLK_DEV_IDE diff -urN linux-2.2.0-pre8-pristine/drivers/block/ide-disk.c linux/drivers/block/ide-disk.c --- linux-2.2.0-pre8-pristine/drivers/block/ide-disk.c Fri Jan 15 00:58:47 1999 +++ linux/drivers/block/ide-disk.c Tue Jan 19 23:40:44 1999 @@ -795,17 +795,17 @@ drive->mult_count = 0; if (id->max_multsect) { -#if 1 /* original, pre IDE-NFG, per request of AC */ +#ifdef CONFIG_BLK_DEV_IDEDISK_MULTI_MODE + id->multsect = ((id->max_multsect/2) > 1) ? id->max_multsect : 0; + id->multsect_valid = id->multsect ? 1 : 0; + drive->mult_req = id->multsect_valid ? id->max_multsect : INITIAL_MULT_COUNT; + drive->special.b.set_multmode = drive->mult_req ? 1 : 0; +#else /* original, pre IDE-NFG, per request of AC */ drive->mult_req = INITIAL_MULT_COUNT; if (drive->mult_req > id->max_multsect) drive->mult_req = id->max_multsect; if (drive->mult_req || ((id->multsect_valid & 1) && id->multsect)) drive->special.b.set_multmode = 1; -#else - id->multsect = ((id->max_multsect/2) > 1) ? id->max_multsect : 0; - id->multsect_valid = id->multsect ? 1 : 0; - drive->mult_req = id->multsect_valid ? id->max_multsect : INITIAL_MULT_COUNT; - drive->special.b.set_multmode = drive->mult_req ? 1 : 0; #endif } drive->no_io_32bit = id->dword_io ? 1 : 0; | |