Getting Started with Genode
Christian Helmuth
christian.helmuth at genode-labs.com
Thu Sep 23 10:02:00 CEST 2021
Hello Sid, welcome to the list!
On Thu, Sep 23, 2021 at 01:04:28 CEST, Sid Agrawal wrote:
> - *Running the hello_tutorial*: the hello_tutorial job on qemu does not
> finish to completing and times out. Below are my steps on ubuntu 20.04.1. I
> am using the Genode development container
> <https://genodians.org/skalk/2020-09-29-docker-devel>, so the tools
> should not an issue. I also tried it outside the container.
>
> git clone git://github.com/genodelabs/genode.git
> cd genode
> tool/ports/prepare_port sel4
> tool/ports/prepare_port grub2
> tool/create_builddir x86_64
>
> cd x86_64/build/
> # Change build/x86_64/etc/build.conf.
> # Change kernel to sel4 and add hello_tutorial
> diff etc/build.conf.old etc/build.conf
>
> 20c20
> < #KERNEL ?= nova
> ---
> > KERNEL ?= sel4
> 85a86
> > REPOSITORIES += $(GENODE_DIR)/repos/hello_tutorial
>
> make
> make hello
> make run/hello # This times out as shown below.
>
> [init -> hello_server] creating root component [0m [0m
> [init -> hello_client] upgrading quota donation for PD session (0
> bytes, 4 caps)
> [0m [0m
> [init] child "hello_server" requests resources: cap_quota=3 [0m [0m
> [init] child "hello_client" requests resources: ram_quota=0, cap_quota=4
> [0m [0m
> Error: Test execution timed out
>
> Any comments on what I am doing wrong would be very helpful. Secondly, what
> would be the best way to go about debugging an issue like this.
I suppose you succeded in running the scenario on Linux and NOVA like
follows.
make run/hello KERNEL=linux BOARD=linux
make run/hello KERNEL=nova
For seL4 I can reproduce what you pasted above, so the issue is
related to the used platform. As the log output states "hello_server"
is requesting more resources and requires cap_quota (capability quota)
increased during an operation that requires 3 caps. A look into the
init configuration (see hello.run) reveals the following.
<!-- all components get 50 capabilities per default -->
<default caps="50"/>
Now you may grant the component some more caps to make it run
successully by changing
<start name="hello_server" caps="54">
to the hello_server start node and running
make run/hello KERNEL=sel4
This results in additional resource requests
[init] child "hello_server" requests resources: ram_quota=0, cap_quota=4
The reason is that the seL4 platforms works quite different from NOVA
and expectedly Linux, which results in a higher capability consumption
of the used software stack.
The following start nodes render the scenario working again.
<start name="hello_server" caps="58">
...
<start name="hello_client" caps="51">
Please see Chapters "Resource trading" [1] and "Resource assignment"
[2] in the Genode Foundations book for a thorough explanation.
[1] https://genode.org/documentation/genode-foundations/21.05/architecture/Resource_trading.html
[2] https://genode.org/documentation/genode-foundations/21.05/system_configuration/The_init_component.html#Resource_assignment
Regards
--
Christian Helmuth
Genode Labs
https://www.genode-labs.com/ · https://genode.org/
https://twitter.com/GenodeLabs · https://www.genodians.org/
Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth
More information about the users
mailing list