AHCI interrupt acknowledge violates specification => fixed in SVN
|AHCI interrupt status
While optimizing FreeBSD AHCI driver I found that VirtualBox does not allow to acknowledge AHCI interrupt by writing AHCI IS (Interrupt Status) register without reading from that register first.
You may see it looking inside HbaInterruptStatus_r() function, which is the only place where u32PortsInterrupted variable is cleared. But in configuration with only one SATA port present and command completion coalescing disabled I don't really need to read IS register to know the source of the interrupt. So in my driver I am just writing to it without spending extra time on read, which can be quite expensive. It perfectly works on real hardware, but not inside VirtualBox.
I believe it is an AHCI specification violation from the VirtualBox side, and it should be fixed.