lwip and seL4

Steven Harp steven.harp at ...486...
Tue Aug 1 22:52:02 CEST 2017


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




More information about the users mailing list