Re: Celleb cannot exit from ata_host_intr()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Linux Filesystems]     [Linux SCSI]     [Linux RAID]     [Git]     [Kernel Newbies]     [Linux Newbie]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Samba]     [Device Mapper]

  Powered by Linux