This patchset came out of my work trying to boot NetBSD on SPARC64. According to the datasheet, the 646U2 UDMA interrupt status bits are exact mirrors of the normal DMA interrupt status bits, and an interrupt can be cleared by writing a 1 to the relevant bit in PCI configuration space.
The existing implementation caused NetBSD to fail since it would always check and clear the normal DMA interrupt status bit, even if UDMA was being used. Hence this patchset ensures that the current interrupt status is always consistent between both normal DMA and UDMA registers, including when either one of the interrupt status bits is cleared by writing to PCI configuration space. Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> Mark Cave-Ayland (5): cmd646: add constants for CNTRL register access cmd646: synchronise DMA interrupt status with UDMA interrupt status cmd646: switch cmd646_update_irq() to accept PCIDevice instead of PCIIDEState cmd646: allow MRDMODE interrupt status bits clearing from PCI config space cmd646: synchronise UDMA interrupt status with DMA interrupt status hw/ide/cmd646.c | 94 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 85 insertions(+), 9 deletions(-) -- 1.7.10.4