Okay, so I'll start with something more concrete that should help me
understand a few things. Let's say I wanted to implement a hypercall
and for the purposes of this discussion, let's assume ARM.

A user process on the Linux VM can issue a hypercall with the HVC
instruction, right? Where would I need to add code to the VMM to
handle this hypercall?

Also, it is my understanding that certain instructions will cause a
trap into the VMM. Where is that handled?

Thanks!

On Thu, Jun 8, 2017 at 8:10 PM,  <adrian.da...@data61.csiro.au> wrote:
> Hi Mike,
>
> Unfortunately we haven't yet written any documentation on the VMM internals
> or how it works. You are actually the first person to express interest in
> this. Will try to make it a higher priority to write at least a brief
> overview of the structure. For now my advice is to be familiar with CAmkES,
> have a built version of the VMM so that you can code search for generated
> code and then start exploring from either
> https://github.com/seL4/camkes-vm/blob/master/components/Init/src/main.c#L525
> or
> https://github.com/SEL4PROJ/camkes-arm-vm/blob/master/components/VM/src/main.c#L472
> depending on whether you are asking about the arm or x86 VMM.
>
> Adrian
>
>
> On Fri 09-Jun-2017 2:26 AM, Mike Clark wrote:
>
> Is there any documentation on how the VMM works? If I wanted to start
> hacking on the VMM and extend its capability, where should I start
> looking to learn how it works, etc?
>
> That might be a pretty broad topic, because there are lots of ways the
> VMM can be extended, I'm sure. Broad is fine, until I get things more
> figured out.
>
> _______________________________________________
> Devel mailing list
> Devel@sel4.systems
> https://sel4.systems/lists/listinfo/devel
>
>

_______________________________________________
Devel mailing list
Devel@sel4.systems
https://sel4.systems/lists/listinfo/devel

Reply via email to