Re: Si3112 S-ATA bug preventing use of udma5.

From: Benjamin Herrenschmidt
Date: Fri Apr 23 2004 - 20:59:11 EST



> Incase the link is down/broken, to fix the bug change line 269 of
> drivers/ide/pci/siimage.c from:
>
> u32 speedt = 0;
>
> to:
> u16 speedt = 0;

> The crux of the problem is that the first arguent to OUTW (out WORD)
> was a doubleword. The arguments were getting all screwed up on the stack.
> The lower order 16-bit were being used in the second argument of OUTW,
> and the upper order word was being used as the whole first argument,
> which was always 0000. So basically the on-disk controller was being
> programmed with erroneous settings. This fixes it and SATA on the SiI3112
> is now good on Linux. Apply this fix to linux/drivers/ide/pci/siimage.c
> and recompile your Kernel for SATA love.

Hrm... that's strange. I'd tend to think it's a bogus definition
of outw on this architecture (x86 ?) instead. an u32 should be casted
down to u16 without problem.


Ben.


-
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/