Re: [PATCH 02/15] ATA : vortex86 : fix vortex86dx/sx hardware CRC bug.

From: Paul Schilling
Date: Thu Oct 27 2011 - 14:55:25 EST


The Vortex86dx uses RDC IDE peripheral integrated into the SOC. The
CRC design is
broken in the Vortex86dx and sx. The original reference can be found
in the Linux kernel itself.

The Vortex86sx uses the RDC D1010.
The Vortex86dx uses the RDC D1011.
Both of which have broken CRC hardware which breaks DMA.

The pata_821x.c had the following code in it to handle the RDC
hardware used in the Vortex86SX.

4fca377f (Jeff Garzik 2011-02-15 01:13:24 -0500 913)
963e4975 (Alan Cox 2008-07-24 17:16:06 +0100 914)
if (pdev->vendor == PCI_VENDOR_ID_RDC) {
4a99d95f (Alan Cox 2009-01-11 19:51:08 +0000 915)
/* Deal with Vortex86SX */
4a99d95f (Alan Cox 2009-01-11 19:51:08 +0000 916)
if (pdev->revision == 0x11)
4a99d95f (Alan Cox 2009-01-11 19:51:08 +0000 917)
ppi[0] = &info_rdc_11;
4a99d95f (Alan Cox 2009-01-11 19:51:08 +0000 918)
else
4a99d95f (Alan Cox 2009-01-11 19:51:08 +0000 919)
ppi[0] = &info_rdc;
963e4975 (Alan Cox 2008-07-24 17:16:06 +0100 920) } else {
963e4975 (Alan Cox 2008-07-24 17:16:06 +0100 921)
/* Force the card into bypass mode if so requested */
963e4975 (Alan Cox 2008-07-24 17:16:06 +0100 922)
if (it8212_noraid) {
963e4975 (Alan Cox 2008-07-24 17:16:06 +0100 923)
printk(KERN_INFO DRV_NAME ": forcing bypass
mode.\n");
963e4975 (Alan Cox 2008-07-24 17:16:06 +0100 924)
it821x_disable_raid(pdev);

Thanks,
Paul Schilling

On Thu, Oct 27, 2011 at 2:43 AM, Alan Cox <alan@xxxxxxxxxxxxxxxxxxx> wrote:
> On Tue, 25 Oct 2011 23:16:04 -0500
> Paul Schilling <paul.s.schilling@xxxxxxxxx> wrote:
>
>> This fixes a DMA issue related to a CRC bug on
>> the RDC pata peripherial found on the vortex86sx and vortex86dx.
>
> What is the RDC erratum reference for this ? Also it seems to make no
> sense
>
>
>>       static const struct ata_port_info info_rdc_11 = {
>>               .flags = ATA_FLAG_SLAVE_POSS,
>>               .pio_mask = ATA_PIO4,
>> -             .mwdma_mask = ATA_MWDMA2,
>> +             .mwdma_mask = 0,
>> +             .udma_mask = 0,
>
> MWDMA is not part of the CRC hardware anyway
>
> Are you sure these newer variants are simply not using a different set of
> timing parameters thus showing bugs on your system ?
>
--
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/