Hi, Albert-san, Thank you for your comment. >Albert Lee wrote: >This check is needed to make sure it is "my irq". Otherwise we might >- incorrectly stop BMDMA if another PCI adapter raise the same shared irq >- incorrectly read ALT_STATUS when DD0-DD15 being used for DMA transfer I understood the meaning of this check. >Is the irq of Celleb IDE shared with other adapters? >If the irq is non-shared, could you check if the following code works >for Celleb: > > /* if it's not our irq... */ > if ((host_stat & ATA_DMA_ACTIVE) && > !(host_stat & ATA_DMA_INTR)) > goto idle_irq; My irq is non-shared, but above code doesn't work. I got the following register values at this point: - DMA_STATUS = 0x01 (ATA_DMA_ACTIVE is 1) - ALT_STATUS = 0x51 (ERR is 1) Now I think I should handle this problem in my bmdma_status() hook because it is a device specific problem. I intend to emulate ATA_DMA_INTR if the following conditions are true: - In ISR - ALT_STATUS[ERR] = 1 - DMA_STATUS[DMA_ACTIVE] = 1 Best regards, Akira iguchi - To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html