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_m...
Cheers Norman