seL4 / rust-microkit-http-server-demo

Demonstrates the use of the seL4 crates with the seL4 Microkit
2 stars 2 forks source link

invalid attribute 'vaddr' on element 'setvar' #6

Open sitestudio opened 10 months ago

sitestudio commented 10 months ago

Trying to merge the contents of the http-server.system file into the rust_vmm.system file in the rust example in the libvmm repo and seeing this error:

Error: invalid attribute 'vaddr' on element 'setvar': rust_vmm.system:53.8

Relevant line is

<setvar symbol="virtio_net_client_dma_size" vaddr="0x200_000" />

Has something been deprecated?

Ivan-Velickovic commented 10 months ago

This seems to be something that Nick added to his fork of Microkit, https://github.com/coliasgroup/microkit/commit/51a8042033556a8a7a85f280e020abb51fc586a8.

sitestudio commented 10 months ago

Thanks for tracking it down - for some reason I couldn't find. Will have a play with integrating unless/until another solution emerges.

Ivan-Velickovic commented 10 months ago

If you look at the system file, the way setvar is being used is actually to just set global variables to certain values (e.g the size of a buffer). From what I can tell it's not actually being used to set a virtual address.

sitestudio commented 10 months ago

Thanks again, sounds like it can be worked around. Will have a look in the coming days.

nspin commented 10 months ago

@Ivan-Velickovic is correct. I am guilty of abusing the Microkit setvar features to avoid hard-coding addresses in two different places (the Microkit system description and the Rust code itself). I made the patch @Ivan-Velickovic linked anticipating that it might be accepted upstream, as the feature the patch adds seemed to be partially implemented already. However (@Ivan-Velickovic would know better on this), Microkit is likely headed in the direction of removing this sort of feature from the system description language, delegating managing and possibly injecting these configuration values to higher-level tools which emit Microkit system descriptions.

In the meantime, I will work towards getting this demo working with upstream Microkit. Hard-coding addresses in multiple places will suffice in the meantime before we start developing higher-level tools on top of Microkit.

nspin commented 9 months ago

This demo no longer relies on the patch to Microkit mentioned above (https://github.com/coliasgroup/microkit/commit/51a8042033556a8a7a85f280e020abb51fc586a8).

https://github.com/seL4/rust-sel4 and this demo do, however, for the time being, still rely on a few other patches to Microkit. This is the branch that they depend on: https://github.com/coliasgroup/microkit/tree/rust.