Hi Chris,
On 31.10.2017 15:56, Chris Rothrock wrote:
Here's the output from the ahci_bench (I left out the ROM header info to shorten the list). It seems it's giving the same error trying to enumerate the AHCI controller on the PCI bus even though it sees the controller and the devices, the service isn't being advertised. This is an AMD platform and, for reasons too long to go into, I need to be able to make this work with an AMD processor. Where can I go from here to push forward on this effort to get the AHCI controller properly enumerated?
Genode 17.08-112-gee4ee6a <local changes> 3745 MiB RAM and 63254 caps assigned to init [init -> ahci_drv] --- Starting AHCI driver --- [init] child "acpi_report_rom" announces service "Report" [init] child "timer" announces service "Timer" [init] child "acpi_report_rom" announces service "ROM" [init -> acpi_drv] Found MADT [init -> acpi_drv] MADT IRQ 0 -> GSI 2 flags: 0 [init -> acpi_drv] MADT IRQ 9 -> GSI 9 flags: 15 [init -> acpi_drv] Found MCFG [init -> acpi_drv] MCFG BASE 0xe0000000 seg 0x0 bus 0x0-0xff [init] child "platform_drv" announces service "Platform" [init -> ahci_drv] AHCI found (vendor: 4130 device: 30721 class: 67073) [ 0] sys_assign_pci: Invalid Hint (0x88) [init -> platform_drv] Error: ahci_drv -> : assignment of PCI device 0:11.0 failed phys=0xe0088000 virt=0x1000 [init -> platform_drv] 0:11.0 adjust IRQ as reported by ACPI: 10 -> 19 [init -> platform_drv] 0:11.0 uses MSI 64bit, vector 0x9f, address 0xfee10000, non-maskable [init -> ahci_drv] version: major=0x1 minor=0x300 [init -> ahci_drv] command slots: 32 [init -> ahci_drv] native command queuing: yes [init -> ahci_drv] 64-bit support: yes [init -> ahci_drv] number of ports: 6 pi: 0x3f [init -> ahci_drv] #0: ATA [init -> ahci_drv] #1: off (unknown device signature) [init -> ahci_drv] #2: off (unknown device signature) [init -> ahci_drv] #3: off (unknown device signature) [init -> ahci_drv] #4: off (unknown device signature) [init -> ahci_drv] #5: off (unknown device signature)
it looks like the AHCI port scan returned a connected ATA device on port zero, but is unable to initialize the device properly - most likely because no interrupts are received after command submission. We already had a lengthly remote debugging session with Ben [1] without any success. It seems like AMD's AHCI controllers are either not standard conform or might require additional initialization we are not aware of. As a starting point you could instrument the 'Ahci::handle_irq' function [2] in order to determine if any interrupts are received by the driver at all.
Regards,
Sebastian
[1] https://github.com/genodelabs/genode/issues/1547 [2] <genode-src>/repos/os/src/drivers/ahci/ahci.cc