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

Reply via email to