Messages in this thread | | | Date | Wed, 25 Jan 2006 17:26:07 +0100 | From | Bartlomiej Zolnierkiewicz <> | Subject | Re: [PATCH] sata_sil: combined irq + LBT DMA patch for testing |
| |
Hi,
On 1/18/06, Jeff Garzik <jgarzik@pobox.com> wrote: > Thomas Backlund wrote: > > Jeff Garzik wrote: > > > >> Thomas Backlund wrote: > >> > >>> Richard Bollinger wrote: > >>> > >>>>> ata1: BUG: SG size underflow > >>>>> ata1: status=0x50 { DriveReady SeekComplete } > >>> > >>> > >>> > >>> and onde by one the raid devices got deactivated until the full > >>> freeze... > >> > >> > >> > >> I think I know what's going on with the 'SG size underflow' thingy, > >> give me a few days to come up with a fix. > >> > >> Jeff > >> > >> > >> > > Any news on this? > > or is it already fixed ? > > Back-burner for the moment :(
I think I have finally found the bug after auditing the patch for x times...
+ /* Stop DMA, if doing DMA */ + switch (qc->tf.protocol) { + case ATA_PROT_DMA: + case ATA_PROT_ATAPI_DMA: + ata_bmdma_stop(qc);
It should be sil_bmdma_stop()...
By accident ata_bmdma_stop() is OK for sil3112 so that would explain why only people with sil3114 reported problems.
My theory is that using ata_bmdma_stop() for sil3114 results in IRQs for port 2 and 3 not being delivered (because SIL_INTR_STEERING bit is cleared) and we end up with dma_stat_mask == 0.
Rest of the patch looks perfectly fine for me. Could somebody reporting problems with this patch retest with the above change?
+ break; + default: + /* do nothing */ + break; + }
Bartlomiej - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |