The IRQ that my AHCI controller is using for SATA port 0 is 37 (I know, it's pretty high and is probably contributing to the issue). From what I understand, however, the drivers ported for Genode are derived from the original Linux version drivers which obviously work in Linux. Do you think it would help if I did some code comparison between the AHCI driver port for Genode and the original Linux AHCI driver that works? Perhaps if I delve in deep enough I can find some structuring that has a special handling for AMD SATA controllers and help to contribute to the project.
On Wed, Nov 1, 2017 at 9:05 AM, Sebastian Sumpf < Sebastian.Sumpf@...1...> wrote:
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
-- Sebastian Sumpf Genode Labs
http://www.genode-labs.com · http://genode.org
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ genode-main mailing list genode-main@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/genode-main