Skip to contentSkip to conversation

A possible approach to the IDE shadow problem

PATCH Alan Cox 1 participant 1 message Jun 16, 2004

lore
Share & tools
lore

Alan Cox

author
#0 lore raw

Some IDE devices don't decode master/slave (notably PCMCIA CF stuff), other stuff has flash and disk mixed. Either assumption is broken so the kernel sometimes double detects devices like microdrives.

It occurred to me there may be a very easy way to fix this, so this patch is for comment [Linus don't apply it yet 8)]

drivers/ide/ide-probe.c +10 -0
diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.6.7/drivers/ide/ide-probe.c 2.6.7-ac/drivers/ide/ide-probe.c
@@ -749,6 +749,16 @@
 		ide_drive_t *drive = &hwif->drives[unit];
 		drive->dn = (hwif->channel ? 2 : 0) + unit;
 		(void) probe_for_drive(drive);
+		if (drive->present && hwif->present && unit == 1)
+		{
+			if(strcmp(hwif->drives[0].id->model, drive->id->model) == 0 &&
+			   strcmp(drive->id->model, "UNKNOWN") && /* Don't do this for non ATA or for noprobe */
+			   strncmp(hwif->drives[0].id->serial_no, drive->id->serial_no, 20) == 0)
+			{
+				printk(KERN_WARNING "ide-probe: ignoring undecoded slave\n");
+				drive->present = 0;
+			}
+		}
 		if (drive->present && !hwif->present) {
 			hwif->present = 1;
 			if (hwif->chipset != ide_4drives ||