lkml.org 
[lkml]   [1999]   [Jan]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectRe: 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;
\
 
 \ /
  Last update: 2005-03-22 13:49    [W:0.054 / U:0.472 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site