Il 30/10/2013 13:47, Kevin Wolf ha scritto: > This whole add_status(BM_STATUS_INT) is weird and doesn't seem to make > sense. For AHCI it triggers the actual IRQ, whereas for BMIDE it only > sets the status register bit and requires a separate call to trigger the > IRQ. This function is ide_set_irq(), which in turn ends up completely > ignored by AHCI (ahci_irq_set() is an empty function).
The problem is that the IRQ ack is done differently in AHCI (using the write-1-clears register PORT_IRQ_STAT; PORT_IRQ_MASK can also modify the status of the interrupt line) and PATA (reading 0x1f7). So perhaps the legacy PIO code of hw/ide/core.c should be abstracted out, including the new restart support. (BTW, to test this with AHCI I rigged up a modified version of AHCI that has the legacy ports, so that I could run the new qtest on it). Michael, can you look at this? Paolo