Hello Genodians,
The last few days, I have been focused on creating my first Linux VM using Seoul. I am happy to report I was largely successful, but have a few questions after completing the exercise. The answers I get from this list have been very helpful in getting through the initial learning curve, so thank you in advance for your responses.
[1] While referencing the example Seoul runscripts in the genode-world repository, I did not see an obvious way to facilitate direct PCI passthrough to a VM. Is this supported by the current version of Seoul? If not, is it supported by the VirtualBox port?
[2] Is there a good way to support a situation where only one client needs to display and capture input. For example, in my VM scenario, I only care about the visual output of the VM. I was able to accomplish the desired graphical result by configuring a single nitpicker domain that had the entire screen area and no labels. The only issue here is that the single client does not immediately get input focus (I had to click to be able to type in the VM). Am I on the right track here, or is there a better way?
[3] What purpose does the platform driver (os/src/drivers/platform) serve? It appears that device discovery is done by either the ACPI driver or pci_decode (possibly others). Is it responsible for delegating access? I assume access to these is granted through an IO_MEM and/or IO_PORT session, but these seem to be provided by core (not the platform driver). Any clarification here would be helpful.
Once again, I appreciate your very helpful responses!
Thanks, Zachary Zollers
Hello Zachary,
On 18.03.24 21:22, Zachary Zollers wrote:
Hello Genodians,
The last few days, I have been focused on creating my first Linux VM using Seoul. I am happy to report I was largely successful, but have a few questions after completing the exercise. The answers I get from this list have been very helpful in getting through the initial learning curve, so thank you in advance for your responses.
[1] While referencing the example Seoul runscripts in the genode-world repository, I did not see an obvious way to facilitate direct PCI passthrough to a VM. Is this supported by the current version of Seoul? If not, is it supported by the VirtualBox port?
This is not implemented at the time being, neither in Seoul nor VirtualBox.
[2] Is there a good way to support a situation where only one client needs to display and capture input. For example, in my VM scenario, I only care about the visual output of the VM. I was able to accomplish the desired graphical result by configuring a single nitpicker domain that had the entire screen area and no labels. The only issue here is that the single client does not immediately get input focus (I had to click to be able to type in the VM). Am I on the right track here, or is there a better way?
It is possible to set the initial focus of Nitpicker through, for example, a focus ROM. An example can be found under[1].
[3] What purpose does the platform driver (os/src/drivers/platform) serve? It appears that device discovery is done by either the ACPI driver or pci_decode (possibly others). Is it responsible for delegating access? I assume access to these is granted through an IO_MEM and/or IO_PORT session, but these seem to be provided by core (not the platform driver). Any clarification here would be helpful.
For the purpose of the platform driver, please refer to section 4.1.1 of the Genode Foundations book [2].
[1] https://github.com/genodelabs/genode-world/blob/e1a0d1c9e3136b929ff6bf85b50c...
[2] https://genode.org/documentation/genode-foundations/23.05/components/Device_...
Regards,
Sebastian
Hello Zachary,
in addition to the pointers provided by Sebastian, you can find a detailed explanation of the platform driver's role in the Genodians article "One Platform Driver to rule them all" [1]. The material is also present in the "Genode Platforms" book [2].
[1] https://genodians.org/nfeske/2021-04-29-platform-driver [2] https://genode.org/documentation/genode-platforms-23-05.pdf
Cheers Norman
Not sure whether that's accurate semantics, but I like to think of plaform_drv and pci_decode as a H.A.L. (i.e. a hardware abstraction layer, as the term was used many eons ago by Dave Haynie et alia). Write your OS to 'talk' to the HAL, and then you can port your OS to many platforms with more ease. Well the state of the art probably moved by leaps and bounds since I heard the term, but I'm the nostalgic type ^^.
Cedric