Hi everyone,
I have some question about the: acpi_drv and platform_drv.
In short: Is acpi_drv and platform_drv are only supporting hardware boards with PCIe ?
In detail: I do following: make KERNEL=nova run/lighttpd
And start the var/run/lighttpd.iso with qemu-system-x86_64 (without -machine q35 parameter!) qemu-system-x86_64 -no-kvm -display sdl -cpu core2duo -nographic -netdev user,id=net0,hostfwd=tcp::5555-:80,hostfwd=tcp::5556-:443 -net nic,model=e1000,netdev=net0 -serial mon:stdio -m 512 -cdrom var/run/lighttpd.iso
It fails with: .... [init -> nic_drv -> acpi_drv] SMBIOS table (entry point: 0x1758f0 structures: 0xf5910) [init -> nic_drv -> platform_drv] Error: ACPI report parsing error. [init -> nic_drv -> platform_drv] Error: Uncaught exception of type 'int' [init -> nic_drv -> platform_drv] Warning: abort called - thread: ep
I extendend the "error output" (maybe you would like to have this? I can create a PR?)
And I got following: ... [init -> nic_drv -> acpi_drv] Freeing up memory of elements - 3104 bytes [init -> nic_drv -> acpi_drv] SMBIOS table (entry point: 0x1758f0 structures: 0xf5910) [init -> nic_drv -> platform_drv] Error: ACPI report parsing error. Exception type int: 2 [init -> nic_drv -> platform_drv] Error: ACPI ROM: <acpi> [init -> nic_drv -> platform_drv] <root_bridge bdf="0x0"/> [init -> nic_drv -> platform_drv] <irq_override irq="11" gsi="11" flags="0xd"/> [init -> nic_drv -> platform_drv] <irq_override irq="10" gsi="10" flags="0xd"/> [init -> nic_drv -> platform_drv] <irq_override irq="9" gsi="9" flags="0xd"/> [init -> nic_drv -> platform_drv] <irq_override irq="5" gsi="5" flags="0xd"/> [init -> nic_drv -> platform_drv] <irq_override irq="0" gsi="2" flags="0x0"/> [init -> nic_drv -> platform_drv] </acpi> [init -> nic_drv -> platform_drv] [init -> nic_drv -> platform_drv] Error: Uncaught exception of type 'int' [init -> nic_drv -> platform_drv] Warning: abort called - thread: ep
I figured out that following is missing: [init -> nic_drv -> platform_drv] <bdf start="0" count="65536" base="0xb0000000"/>
The acpi_drv get this from [init -> nic_drv -> acpi_drv] MCFG BASE 0xb0000000 seg 0x0 bus 0x0-0xff MCFG -> PCI Express memory mapped configuration space base address Description Table
I also figured out that the qemu parameter -machine q35 is using as chipset a ICH9 and this has PCIe
* Can I somehow "manuel" configure the system on 440FX based hardware ? * Is there a reason why platform_drv is not supporting older hardware ?
Thanks Jörg
Hello Jörg,
On Wed, Feb 24, 2021 at 15:01:26 CET, Joerg-C. Boehme wrote:
In general, no, we do not depend on PCIe directly. Nevertheless, I admit that we do not test PCIe-less systems in any real-world scenario.
As you discovered this is not supported. The reason is not the missing PCIe capability but that Qemu's i440FX chipset does not support ECAM/MMCONF (memory-mapped) PCI configuration space access. We replaced the I/O port based PCI driver implementation by MMCONF based access after a vivid discussion in 2018 [1]. Thus, we may indirectly depend on PCIe if systems lacking PCIe ports also lack MMCONF.
In theory, you could generate the acpi_drv report by hand. But that's not my playground.
We switched to MMCONF because of demand from the community and the promise that it's widely available. We never considered to support both PCI-config access options for complexity and testing effort reasons.
[1] https://github.com/genodelabs/genode/commit/47724c68c2c27a430e9a60c55ebb42f8...
Greets
Hi Christian,
thanks for the quick answer.
Am Mittwoch, 24. Februar 2021 15:58:50 CET schrieb Christian Helmuth:
I found in the PCI/PCI Express Configuration Space Access documentation [1] the following sentence: PCI Express defines an Enhanced Configuration Access mechanism (ECAM). This means, i440FX chipset type based hardware [2] are old Pentium hardware and PCIe did not exist on it.
I don't want to be petty but I need a "criteria" to "sort" my hardware for genode :-) At least where I can use the "acpi_drv".
Again thanks for your answer and also for the support.
Greets Jörg
[1] http://developer.amd.com/wordpress/media/2012/10/pci%20-%20pci%20express%20c... [2] https://en.wikipedia.org/wiki/Intel_440FX