Thread (17 messages) 17 messages, 4 authors, 2007-01-30

Re: [PATCH] ide: Fix ATAPI DMA lost irq problem with CDB intr devices

From: Albert Lee <hidden>
Date: 2007-01-22 07:28:57

Hi Bart,
Albert Lee wrote:
quoted
Problem: IDE ATAPI DMA lost irq with CDB intr devices on Intel ICHx
machines.

This patch clears the INTR and ERROR bits of DMA status before starting
BMDMA to fix the problem.

[PATCH] ide-cd: Handle strange interrupt on the Intel ESB2
http://lkml.org/lkml/2006/12/4/201

The above patch was already merged so it seems that the list
of PCI IDs requiring ->atapi_irq_bogon needs to be expanded...
Instead of adding PCI IDs to the blacklist, could we just unconditionally
clear the dma_status:INTR in ide_dma_start()?

Reason: Currently the INTR bit is cleared in ide_dma_setup(). Later the
PIO data transfer is used to send ATAPI CDB. The BMDMA is started last.
The bmdma INTR bit might be changed either by spurious irq (as seen by
Alan/Stratus) or by CDB-intr CD-ROM drives (as seen by Adam) etc. during
the time frame before bmdma is actually started.
It looks safer if we can clear INTR right before dma is started.
Adam, which ICH version is it?

<snip>
Does the problem also happen on ICH4?
Adam's box is an ICH (8086:2411) and mine ICH4 (8086:24cb). Yes, this
problem also happen on ICH4. I suspect that all Intel ICHx has such
behavior (i.e. DMA irq lost if INTR is already 1).

BTW, this problem does not reproduce on libata since libata always
clears bmdma INTR in ata_host_intr().

Thanks,

Albert




Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help