Observed a problem testing lwip under seL4 (run/lwip). This succeeds with kernels okl4, foc, and nova, but under seL4 there are complaints from acpi_drv (see below). The "Error: I/O memory [1ffe1000,1ffe2000) not available" seems most concerning.
Build architecture is x86_32, relying on drivers dde_ipxe, testing in qemu on Xenial. Theories / workarounds (seL4)?
// Steve
[init -> nic_drv] --- iPXE NIC driver started --- [init -> nic_drv] -- init iPXE NIC [init -> acpi_drv] Error: ROM-session creation failed (ram_quota=6144, cap_quota=3, label="platform_info") [init -> acpi_drv] Error: Could not open ROM session for "platform_info" [init] child "timer" announces service "Timer" [init] child "acpi_report_rom" announces service "Report" Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x10 [init] child "acpi_report_rom" announces service "ROM" Error: I/O memory [1ffe1000,1ffe2000) not available Error: Local MMIO mapping failed! [init -> acpi_drv] Error: IO_MEM-session creation failed (cap_quota=3, ram_quota=6K, base=0x1ffe1000, size=0x1000, wc=no) [init -> acpi_drv] Warning: 1 dangling allocation at allocator destruction time Warning: unmapping of managed dataspaces not yet supported [init -> acpi_drv] Error: Unknown exception occured - failure [init -> acpi_drv] Error: __cxa_guard_abort called Kernel: Thread 'ep' died because of an uncaught exception [init -> acpi_drv] Error: Uncaught exception of type 'Genode::Service_denied' [init -> acpi_drv] Warning: abort called - thread: ep [init] child "acpi_drv" exited with exit value 1 Error: Test execution timed out Makefile:309: recipe for target 'run/lwip' failed
Hello,
On 28.07.2017 20:08, Steven Harp wrote:
Observed a problem testing lwip under seL4 (run/lwip). This succeeds with kernels okl4, foc, and nova, but under seL4 there are complaints from acpi_drv (see below). The "Error: I/O memory [1ffe1000,1ffe2000) not available" seems most concerning.
Build architecture is x86_32, relying on drivers dde_ipxe, testing in qemu on Xenial. Theories / workarounds (seL4)?
yes. Try to change the memory for Qemu in tool/run/power_on/qemu from 512M to something else, e.g. 511M. This workaround should help.
We have seen this already some weeks ago and analyzed it. I turns out that the seL4 kernel memory management and the physical memory location of some ACPI tables collide in an unfortunate way. (seL4 kernel version 3.2.0 as used by Genode/seL4 in 17.05 release respectively on current master)
Since we were already in progress of upgrading the used kernel to seL4 5.2.0, we decided not to fix it (by building a kernel patch against 3.2.0)
With the update to seL4 kernel 5.2.0 (currently on staging for testing and scheduled for 17.08 release), the issue went away.
Cheers,
Alex.
// Steve
[init -> nic_drv] --- iPXE NIC driver started --- [init -> nic_drv] -- init iPXE NIC [init -> acpi_drv] Error: ROM-session creation failed (ram_quota=6144, cap_quota=3, label="platform_info") [init -> acpi_drv] Error: Could not open ROM session for "platform_info" [init] child "timer" announces service "Timer" [init] child "acpi_report_rom" announces service "Report" Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x10 [init] child "acpi_report_rom" announces service "ROM" Error: I/O memory [1ffe1000,1ffe2000) not available Error: Local MMIO mapping failed! [init -> acpi_drv] Error: IO_MEM-session creation failed (cap_quota=3, ram_quota=6K, base=0x1ffe1000, size=0x1000, wc=no) [init -> acpi_drv] Warning: 1 dangling allocation at allocator destruction time Warning: unmapping of managed dataspaces not yet supported [init -> acpi_drv] Error: Unknown exception occured - failure [init -> acpi_drv] Error: __cxa_guard_abort called Kernel: Thread 'ep' died because of an uncaught exception [init -> acpi_drv] Error: Uncaught exception of type 'Genode::Service_denied' [init -> acpi_drv] Warning: abort called - thread: ep [init] child "acpi_drv" exited with exit value 1 Error: Test execution timed out Makefile:309: recipe for target 'run/lwip' failed
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
Alex:
Thanks, that small shift did the trick. Also, it worked right away in the staging branch as you suggested. The upcoming seL4 changes for 17.08 sound quite exciting.
Still grappling with getting it to work on various x86 boxes (vs. qemu). I've tested on systems with Intel (ee100) and Realtek NICs; but, with a seL4 microkernel, startup proceeds up to the point of acquiring an IP via DHCP, and then stalls. (Trace of output from an image built on the staging branch is excerpted below the quotation of your message). The same hardware runs lwip without problems using the NOVA kernel.
Is there a canonical x86 hardware platform you use for testing? Maybe the underlying seL4 config expects a particular processor family or IOMMU option?
// Steve
On 7/31/17 6:27 AM, Alexander Boettcher wrote:
Build architecture is x86_32, relying on drivers dde_ipxe, testing in qemu on Xenial. Theories / workarounds (seL4)?
yes. Try to change the memory for Qemu in tool/run/power_on/qemu from 512M to something else, e.g. 511M. This workaround should help.
We have seen this already some weeks ago and analyzed it. I turns out that the seL4 kernel memory management and the physical memory location of some ACPI tables collide in an unfortunate way. (seL4 kernel version 3.2.0 as used by Genode/seL4 in 17.05 release respectively on current master)
Since we were already in progress of upgrading the used kernel to seL4 5.2.0, we decided not to fix it (by building a kernel patch against 3.2.0)
With the update to seL4 kernel 5.2.0 (currently on staging for testing and scheduled for 17.08 release), the issue went away.
* * * ... [init] child "platform_drv" [init] RAM quota: 3944K [init] cap quota: 768 [init] ELF binary: platform_drv [init] priority: 0 [init] provides service Platform [init] child "nic_drv" [init] RAM quota: 5992K [init] cap quota: 68 [init] ELF binary: nic_drv [init] priority: 0 [init] provides service Nic Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x4 [init -> nic_drv] --- iPXE NIC driver started --- Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x8 [init -> nic_drv] -- init iPXE NIC [init] child "timer" announces service "Timer" [init] child "platform_drv" announces service "Platform" [init -> nic_drv] Found: 02:01.0 8086:1229 (rev 0c) IRQ 03 [init -> nic_drv] using driver eepro100 [init -> nic_drv] PCI BIOS has not enabled device 02:01.0! Updating PCI command 0013->0017 [init -> nic_drv] [init -> nic_drv] snprintf not implemented [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x10 [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) [init -> platform_drv] Error: nic_drv -> : environment ROM session denied (label="device_pd", ram_quota=6144, cap_quota=3, diag=0) Warning: void Genode::Rpc_cap_factory::free(Genode::Native_capability) not implemented - resources leaked: 0x20 [init -> platform_drv] Warning: PCI device protection domain for IOMMU support is not available [init -> platform_drv] 2:1.0 uses IRQ, vector 0x3, non-maskable [init] child "nic_drv" announces service "Nic" [init -> nic_drv] MAC address 00:0e:0c:6c:48:f5 [init -> test-lwip_httpsrv] Create new socket ... [init -> test-lwip_httpsrv] Now, I will bind ... [init -> test-lwip_httpsrv] Now, I will listen ... [init -> test-lwip_httpsrv] Start the server loop ... * * *
Here it is stuck; we expect a line like: [init -> test-lwip_httpsrv] got IP address 192.168.0.70 http server is up, ...
EOM