Errors when adding part_blk to sculpt scenario

Norman Feske norman.feske at genode-labs.com
Tue May 15 08:08:20 CEST 2018


Hi Boris,

> The config snippet I added to sculpt.run just below the drivers init
> looks as follows (I copied it from default_fs_subinit.config except that
> my computer has an MBR partition scheme):
> 
> |    <start name="part_blk" caps="100">||
> ||        <resource name="RAM" quantum="10M"/>||
> ||        <provides><service name="Block"/></provides>||
> ||        <config use_gpt="no">||
> ||            <policy label_prefix="vfs" writeable="yes" partition="1"/>||||
> ||        </config>||
> ||        <route>||
> ||            <service name="Block"> <child name="drivers"
> label="default"/> </service>||
> ||            <any-service> <parent/> </any-service>||
> ||        </route>||
> ||    </start>|
> 
> I tried giving part_blk more RAM, giving "drivers" more RAM, giving
> "drivers -> dynamic" more RAM and giving "drivers -> dynamic ->
> ahci_drv" more as well (by editing the driver_manager), but the error
> message persists with the same numbers as above.
> 
> Now I'm stuck on why this error occurs. One possibility is that the
> driver_manager has not yet loaded the correct policies for the ahci_drv
> or the config of the subinit and that it has updated them when I change
> the runtime config to run part_blk. However, I get no other errors,
> while I would have expected "no matching policy" or "no route" in that case.
> 
> I tried creating a clean run script with only the drivers_managed-pc
> package and part_blk inside it. It gives me the same error so it seems
> to be related to the drivers_managed-pc subsystem. When I run all those
> drivers directly on top of init, I do not get the error.
> 
> Can anyone explain what is going on?

I am not able to dive deep into it, but suspect that the
session-creation error is caused by the label-rewriting route. Your
start node relabels the block session as "default" whereas the
service-forwarding policy of the `drivers -> dynamic` subsystem uses "
default" (note the leading whitespace) [1] as policy selector, presuming
that sessions are prefixed with the " -> " delimiter. This is the case
when creating sessions from Sculpt's runtime subsystem in the unmodified
scenario, but not anymore in your modified scenario.

Could you try relabeling your block session to "part_blk -> default"
instead?

[1]
https://github.com/genodelabs/genode/blob/master/repos/gems/src/app/driver_manager/main.cc#L251

Cheers
Norman

-- 
Dr.-Ing. Norman Feske
Genode Labs

https://www.genode-labs.com · https://genode.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