This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

ARM virtualization scenario.

Dear all,

I am interested in a scenario where I want to host two guest OSes above a bare-metal hypervisor on an ARM mobile platform. The total available memory platform is 4GB where I want to expose exclusively 2 GB of continuous RAM to each guest OS. Could you please guide me through my two below concerns:

1- in case I change the FDT (device tree) of each guest OS to reflect exclusively 2 GB of continuous memory, can I be assured that the kernel of the guest OS will only access these 2 GB, and further it is not even aware of the existence of the other 2 GB of the memory on the platform?

 

2- I prefer that each guest OS manage directly its memory without the intervention of the host hypervisor (in other words the guest physical address reflect the actual hypervisor physical address), in such scenario can I resort to a XenARM-like hypervisor and just disable the second stage translation in the Xen hypervisor code? Would that work or is there actually a better way to do it? Please share your experience

Best wishes.

Parents
  • Bare metal hypervisors are type 1 hypervisors and ARM provides very good support for them in ARMV7 and later The way it deals address translation isto have two stages - the hypervisor sets up one stage  which then looks like bare metal as far as the guest OS is concerned. Addresses are then translated by the tables in the guest and then by the hypervisor one. One could set up the hypervisor tables so each guest had a view which looked like part of the real memory and had the same address as the physical memory. However it sounds like you want to remove the hypervisor tables altogether  and still have full protection between the guest OSs.

    I guess that might just be possible if the hypevisor protects the areas a guest OS uses for its tables and checks any changes. Or it could do paravirtualization where any guest has to call it everytime it wants to do anything like that. It sounds like a lot more work. I suppose there is some saving in address translation but not all that much as the stages are separately cached. Is that really your intention?

Reply
  • Bare metal hypervisors are type 1 hypervisors and ARM provides very good support for them in ARMV7 and later The way it deals address translation isto have two stages - the hypervisor sets up one stage  which then looks like bare metal as far as the guest OS is concerned. Addresses are then translated by the tables in the guest and then by the hypervisor one. One could set up the hypervisor tables so each guest had a view which looked like part of the real memory and had the same address as the physical memory. However it sounds like you want to remove the hypervisor tables altogether  and still have full protection between the guest OSs.

    I guess that might just be possible if the hypevisor protects the areas a guest OS uses for its tables and checks any changes. Or it could do paravirtualization where any guest has to call it everytime it wants to do anything like that. It sounds like a lot more work. I suppose there is some saving in address translation but not all that much as the stages are separately cached. Is that really your intention?

Children