Release 17.05, base-hw, environment ROM session denied error

Bob Stewart robjsstewart at ...9...
Tue Jun 13 16:32:40 CEST 2017

Thanks for the reply, Norman.

I doubt that it is related to explicit routing declarations as I have a default routing set to go through all parents, all children. Or, am I misunderstanding routing? This run script and component code work in 16.11 and 17.02. So the problem is being caused by a change in 17.05.

I finally looked into child.h. The actual error is Service Denied. The ctrl_module component which is having this start up problem is trying to establish a session to a server which accesses a core-only service. I had to create this service because the SOC requires privileged access to enable hardware subsystems or to establish a specific gpio pin mux setting. The associated code has been working well since 2015. I'll trace the code back to the origin of the Service Denied state and find out what I have missed in the 17.05 changes.

Regarding the two log lines:

 [init -> gpio_drv] used before freeing emergency=276K
[init -> gpio_drv] used after freeing emergency=260K

These seem to be indicating an emergency allocation of memory had to be made. Does that mean the components RAM quota was insufficient?

Get Outlook for Android<>

From: Norman Feske <norman.feske at ...1...>
Sent: Tuesday, June 13, 2017 4:26:57 AM
To: genode-main at
Subject: Re: Release 17.05, base-hw, environment ROM session denied error

Hi Bob,

> "[init] Error: ctrl_module: environment ROM session denied
> (label="ctrl_module",
> ram_quota=6144, cap_quota=3, diag=0) "
> What is this message telling me?

traditionally, init created the initial sessions (aka environment
sessions) of its children on the children's behalf without considering
any child-specific routing. I.e., a child's PD session, CPU session, the
ROM session with the executable binary, the ROM session with the dynamic
linker were created by init directly via 'Connection' objects.
Therefore, there was no need to route those sessions explicitly in the

With version 16.11 and 17.02 [1], we revised the child-creation
procedure. Now, the environment sessions are subjected to the routing
rules as dictated by init's configuration.


In short, your routing rules for the "ctrl_module" lack a valid route
for the executable binary.

> Also, further down the log is the following output:
>    init -> gpio_drv] resource_request: ram_quota=0,
> cap_quota=4
>    [init -> gpio_drv] used before freeing
> emergency=276K
>    [init -> gpio_drv] used after freeing emergency=260K
> I believe these are a result of the gpio server setting up a session
> through the session interface.

The 'gpio_drv' component runs out of its capability quota and politely
asks its parent (init) for more (cap_quota=4). Capability quotas are new
in version 17.05 and are described at [2].


You may try to specify a 'caps=200' attribute to the start node of the
corresponding component.


Dr.-Ing. Norman Feske
Genode Labs ·

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

Check out the vibrant tech community on one of the world's most
engaging tech sites,!
genode-main mailing list
genode-main at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the users mailing list