From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pat LaVarre Subject: Re: [PATCH] ata_check_bmdma Date: 03 Jun 2004 07:41:14 -0600 Sender: linux-ide-owner@vger.kernel.org Message-ID: <1086270073.6502.27.camel@patibmrh9> References: <1086224765.4401.3.camel@patibmrh9> <40BE7A53.8020908@pobox.com> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: 7bit Return-path: Received: from email-out2.iomega.com ([147.178.1.83]:25558 "EHLO email.iomega.com") by vger.kernel.org with ESMTP id S263641AbUFCNlW (ORCPT ); Thu, 3 Jun 2004 09:41:22 -0400 In-Reply-To: <40BE7A53.8020908@pobox.com> List-Id: linux-ide@vger.kernel.org To: Jeff Garzik Cc: linux-ide@vger.kernel.org Jeff G: > applied to 2.4 and 2.6 Thank you. > ... What comes next? Shall we add support for SATAPI Data Not, for example op x00 "TEST UNIT READY", to the support we have already for SATAPI Data In and SATAPI Data Out? As you may recall, when I try Data Not here, I get "kernel: Disabling IRQ" with the source as is. After applying the ata_check_bmdma patch, then a patch like the following three lines seem to help. Without understanding, I think I'm seeing: 1) We have to ack an ATA_DMA_INTR even when we have copied no data. 2) We VPRINTK the host_stat although we DPRINTK the drv_stat. Pat LaVarre P.S. Would you prefer a patch that acked ATA_DMA_INTR without clearing ATA_DMA_ERR and ATA_DMA_START? diff -urp o/include/linux/ata.h linux-2.6.7-rc2-pel/include/linux/ata.h diff -urp o/include/linux/libata.h linux-2.6.7-rc2-pel/include/linux/libata.h diff -urp o/drivers/scsi/libata-core.c linux-2.6.7-rc2-pel/drivers/scsi/libata-core.c --- o/drivers/scsi/libata-core.c 2004-06-03 07:18:39.000000000 -0600 +++ linux-2.6.7-rc2-pel/drivers/scsi/libata-core.c 2004-06-03 07:20:22.694466800 -0600 @@ -2656,9 +2656,11 @@ inline unsigned int ata_host_intr (struc */ case ATA_PROT_ATAPI: case ATA_PROT_NODATA: + host_stat = ata_check_bmdma(ap); + VPRINTK("BUS_NODATA (host_stat 0x%X)\n", host_stat); status = ata_busy_wait(ap, ATA_BUSY | ATA_DRQ, 1000); DPRINTK("BUS_NODATA (drv_stat 0x%X)\n", status); - ata_qc_complete(qc, status); + ata_dma_complete(qc, host_stat); handled = 1; break; diff -urp o/drivers/scsi/libata-scsi.c linux-2.6.7-rc2-pel/drivers/scsi/libata-scsi.c