Hi,
I've been trying SeaBIOS's AHCI driver on AMD SB710 hardware under coreboot. Both AMD's AHCI BIOS and NetBSD's ahcisata(4) drivers are happy enough with the hardware's state after coreboot/SeaBIOS.
However, SeaBIOS's AHCI driver just falls into a dead loop waiting for commands to complete. This is due to at least two problems.
The immediate problem is that we tell the HBA that a Host To Device FIS is 4 dwords. The correct value is 5 dwords if I read the specs right.
But, when the H2D FIS length we give to the HBA is 5, I have a more perplexing problem. The machine hardlocks when HBA registers are read after the command has been issued. When I examine the Command List and Receive FIS Area, etc. before and after issuing the command, they have not changed.
Jonathan Kollasch
On Sat, Feb 12, 2011 at 11:43:24PM +0000, Jonathan A. Kollasch wrote:
Hi,
I've been trying SeaBIOS's AHCI driver on AMD SB710 hardware under coreboot. Both AMD's AHCI BIOS and NetBSD's ahcisata(4) drivers are happy enough with the hardware's state after coreboot/SeaBIOS.
However, SeaBIOS's AHCI driver just falls into a dead loop waiting for commands to complete. This is due to at least two problems.
The immediate problem is that we tell the HBA that a Host To Device FIS is 4 dwords. The correct value is 5 dwords if I read the specs right.
But, when the H2D FIS length we give to the HBA is 5, I have a more perplexing problem. The machine hardlocks when HBA registers are read after the command has been issued. When I examine the Command List and Receive FIS Area, etc. before and after issuing the command, they have not changed.
Actually it wasn't a hardlock, it was a dead loop. :-)
I have it (mostly) working now, just have to get it polished up a bit.
Jonathan Kollasch