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