Re: [RFC] IDE 80-core cable detect - chipset-specific code to over-ride eighty_ninty_three()

From: Bartlomiej Zolnierkiewicz
Date: Mon Feb 09 2004 - 19:19:07 EST


On Sunday 08 of February 2004 08:31, Willy Tarreau wrote:
> On Sun, Feb 08, 2004 at 11:45:18AM +1100, Athol Mullen wrote:
> > Before I modified eighty_ninty_three(), it returning 0 caused the
> > _indicated_ mode to drop to UDMA33. Check in /proc/ide/piix to see what
> > mode the driver tells you. IIRC (could be wrong), dmesg and hdparm both
> > believe it to be in UDMA33 while the init code and /proc/ide/piix both
> > showed it as UDMA5.

So host recognizes 80-wires cable correctly, but drive doesn't.
eighty_ninty_three() is for checking _drive_ side.

> I captured dmesg and /proc/ide/piix, but forgot to post them. They're at
> work now. But I did the change, by commenting out the call to
> eighty_ninety_three() in piix.c, and my disks came back to 54 MB/s each,
> and 64 MB/s cumulated. dmesg showed UDMA33 before and now displays UDMA100
> again. But I obviously cannot let it like that because if I install this
> kernel in a 40-pin machine, I will get some surprizes !

This is eighty_ninty_three() in 2.6.x (except #if 0 (...) #endif code):

u8 eighty_ninty_three (ide_drive_t *drive)
{
return ((u8) ((HWIF(drive)->udma_four) &&
#ifndef CONFIG_IDEDMA_IVB
(drive->id->hw_config & 0x4000) &&
#endif /* CONFIG_IDEDMA_IVB */
(drive->id->hw_config & 0x6000)) ? 1 : 0);
#endif
}

Maybe you have accidentally enabled CONFIG_IDEDMA_IVB?
If not please send me copy of /proc/ide/hdX/identify for your drives.

--bart

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/