Celleb cannot exit from ata_host_intr()

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

 



Hi,

I have a problem that our hardware (Celleb) cannot exit from
ata_host_intr() when ATAPI DMA data read fails.

This PATA controller sets bit2 (ATA_DMA_INTR) of BMDMA status register
after it finished DMA data read. If ATAPI DMA data read fails
due to no CDROM, it doesn't transfer data and generates an interrupt.
In this case, bit2 of BMDMA status register is not set.

libata ISR (ata_host_intr()) checks this bit by the following code:

			/* if it's not our irq... */
			if (!(host_stat & ATA_DMA_INTR))
				goto idle_irq;


Our driver always hits this check. As a result, ISR loops forever.
I temporarily use libata by removing this check.

I wonder if this check is necessary. In drivers/ide, cdrom_decode_status()
seems to check IDE STATUS register instead of BMDMA status register.
If there is no problem, I hope this check will be removed.

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