Hello Sid,
because of [0] you need with 18.05 a valid MCFG ACPI table to run Genode on x86. The general answer is, that coreboot or companion must provide the tables, otherwise you are out of luck. Maybe the hints at [1] are helpful to start investigation for you coreboot build ?
Cheers,
Alex.
[0] https://genode.org/documentation/release-notes/18.05#Kernel-agnostic_platfor... [1] https://www.coreboot.org/ACPI#acpi_fill_mcfg
On 05.09.19 16:06, Sid Hussmann wrote:
Dear Genodians,
I'm trying to enable Genode on the apu2c4. I successfully could run the test-pci component using branch [1] based on Genode 17.11:
However, using the genodelabs/master branch results in a ACPI parsing error: ´[init -> platform_drv] Error: ACPI report parsing error.´
I set the report_rom to verbose and I noticed following differences:
# Working version on apu2c4 [1]:
´´´ Genode 17.11-103-gd0028480b <local changes> 4039 MiB RAM and 63253 caps assigned to init [init -> test-pci] --- Platform test started --- [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_report_rom] report 'acpi_drv -> acpi' [init -> acpi_report_rom] <acpi> [init -> acpi_report_rom] <fadt features="0x3c5a5" reset_type="0x1000801" reset_addr="0xcf9" reset_value="0x6"/> [init -> acpi_report_rom] <irq_override irq="9" gsi="9" flags="0xf"/> [init -> acpi_report_rom] <irq_override irq="0" gsi="2" flags="0x0"/> [init -> acpi_report_rom] <routing gsi="0x2b" bridge_bdf="0x15" device="0x0" device_pin="0x3"/> [init -> acpi_report_rom] <routing gsi="0x2a" bridge_bdf="0x15" device="0x0" device_pin="0x2"/> [init -> acpi_report_rom] <routing gsi="0x29" bridge_bdf="0x15" device="0x0" device_pin="0x1"/> ... [init -> acpi_report_rom] <routing gsi="0x2c" bridge_bdf="0xc0" device="0x1" device_pin="0x0"/> [init -> acpi_report_rom] </acpi> [init -> test-pci] 0:0.0 class=0x600 vendor=0x1022 (unknown) device=0x1566 [init -> test-pci] 0:2.0 class=0x600 vendor=0x1022 (unknown) device=0x156b ...
´´´
# Broken version on apu2c4 (current master):
´´´ Genode 19.08 <local changes> 4027 MiB RAM and 63253 caps assigned to init [init -> test-pci] --- Platform test started --- [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] XSDT OEM 'CORE ', table id 'COREBOOT', revision 0, creator 'CORE' (0) [init -> acpi_report_rom] report 'acpi_drv -> acpi' [init -> acpi_report_rom] <acpi> [init -> acpi_report_rom] <root_bridge bdf="0xc0"/> [init -> acpi_report_rom] <irq_override irq="9" gsi="9" flags="0xf"/> [init -> acpi_report_rom] <irq_override irq="0" gsi="2" flags="0x0"/> [init -> acpi_report_rom] <routing gsi="0x2b" bridge_bdf="0x15" device="0x0" device_pin="0x3"/> [init -> acpi_report_rom] <routing gsi="0x2a" bridge_bdf="0x15" device="0x0" device_pin="0x2"/> [init -> acpi_report_rom] <routing gsi="0x29" bridge_bdf="0x15" device="0x0" device_pin="0x1"/> ... [init -> acpi_report_rom] <routing gsi="0x2c" bridge_bdf="0xc0" device="0x1" device_pin="0x0"/> [init -> acpi_report_rom] </acpi> [init -> platform_drv] Error: ACPI report parsing error. [init -> acpi_drv] SMBIOS table (entry point: 0x163ad0 structures: 0xdffd7020) [init -> platform_drv] Error: Uncaught exception of type 'int' [init -> platform_drv] Warning: abort called - thread: ep [init -> acpi_report_rom] report 'acpi_drv -> smbios_table' [init -> acpi_report_rom] _SM_b▒ ´´´
# on QEMU (current master):
´´´ Genode 19.08 <local changes> 471 MiB RAM and 63253 caps assigned to init [init -> test-pci] --- Platform test started --- [init -> acpi_drv] Found MADT [init -> acpi_drv] MADT IRQ 0 -> GSI 2 flags: 0 [init -> acpi_drv] MADT IRQ 5 -> GSI 5 flags: 13 [init -> acpi_drv] MADT IRQ 9 -> GSI 9 flags: 13 [init -> acpi_drv] MADT IRQ 10 -> GSI 10 flags: 13 [init -> acpi_drv] MADT IRQ 11 -> GSI 11 flags: 13 [init -> acpi_drv] Found MCFG [init -> acpi_drv] MCFG BASE 0xb0000000 seg 0x0 bus 0x0-0xff [init -> acpi_drv] RSDT OEM 'BOCHS ', table id 'BXPCRSDT', revision 1, creator 'BXPC' (1) [init -> acpi_report_rom] report 'acpi_drv -> acpi' [init -> acpi_report_rom] <acpi> [init -> acpi_report_rom] <root_bridge bdf="0x0"/> [init -> acpi_report_rom] <bdf start="0" count="65536" base="0xb0000000"/> [init -> acpi_report_rom] <irq_override irq="11" gsi="11" flags="0xd"/> [init -> acpi_report_rom] <irq_override irq="10" gsi="10" flags="0xd"/> [init -> acpi_report_rom] <irq_override irq="9" gsi="9" flags="0xd"/> [init -> acpi_report_rom] <irq_override irq="5" gsi="5" flags="0xd"/> [init -> acpi_report_rom] <irq_override irq="0" gsi="2" flags="0x0"/> [init -> acpi_report_rom] </acpi> [init -> platform_drv] ECAM/MMCONF range 00:00.0-ff:1f.7 - addr [00000000b0000000,00000000c0000000) [init -> acpi_drv] SMBIOS table (entry point: 0x165710 structures: 0xf5730) [init -> platform_drv] Root bridge: 00:00.0 [init -> acpi_report_rom] report 'acpi_drv -> smbios_table' [init -> acpi_report_rom] _SM_W [init -> test-pci] 0:0.0 class=0x600 vendor=0x8086 (Intel) device=0x29c0 [init -> test-pci] 0:1.0 class=0x300 vendor=0x1234 (unknown) device=0x1111 ...
´´´
Cherry-picking from [1] to the master branch didn't help.
On QEMU I noticed a ´bdf´ node in the acpi_report. ´platform_drv´ is expecting this node. The ´bdf´ node is written in ´Acpi::generate_report()´ but only if there is an entry in the ´Pci_config_space´ list. The only function that inserts something to that list is ´Table_wrapper::parse_mcfg()´, which is called from ´Acpi_table::_parse_tables()´ in case one of the tables has the "MCFG" signature. However, none of the tables seem to have that signature.
And now I'm lost. How do I move on?
Cheers, Sid
[1] https://github.com/chelmuth/genode/commits/cobalt
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users