Hi, I've committed the initial NCQ support, it's available at jdolecek-ncq branch (branch only over sys). It works under Parallels for now, and is ready for brave adventurers. There is sys/dev/ata/TODO.ncq which you might want to check, also.
If people want to try it out and give feedback, I'd really appreciate it. I'll be busy for next 2-3 weeks elsewhere, so probably won't have too much time for bugfixing during the time. After that I plan to start testing with real hardware, and look on remaining bugs. One of the more annoying bugs right now is that AHCI NCQ transfers pretty frequently timeout for me under Parallels. Maybe interrupt handling is not quite right yet in the driver. I only got so far to note that every transfer gets two interrupts, one with IS 0x8 and one 0x0 The 0x8 is Set device bit and is expected for NCQ, the other not so much. My understanding of ATA and AHCI specs is not good enough yet, so if somebody could look there and sanity check, I would be really glad. Also, I've not modified mvsata(4) and siisata(4) drivers yet to enable NCQ. While the drivers seem to be mostly prepared, I lack the hardware, so have no way to test. I would really appreciate if folks with the hardware could check it out and possibly provide patches to enable the support there. Last but not least, there is simply no consideration in AHCI for PMP in the changes. I have no idea if it needs special support. I hope not, but would be nice if our PMP experts would sanity check. Jaromir