Xvisor (eXtensible Versatile hypervISOR) for BeagleBoard-xM

Hi All,

Xvisor (eXtensible Versatile hypervISOR) is an open source bare-metal
monolithic hypervisor, which aims towards providing virtualization solution,
which is light-weight, portable, and flexible with small memory foot print
and less overhead. It is distributed under GNU Public License (GPLv2).

The ARM port of Xvisor (or Xvisor ARM) supports a wide range of ARM processors
namely:

  • ARM9 (Boards: VersatilePB)
  • Cortex-A8 (Boards: Realview-PB-A8)
  • OMAP3 (Boards: BeagleBoard-xM)
  • Cortex-A9 (UP) (Boards: Vexpress-A9)
  • Cortex-A15 (UP) Without VE (Boards: Vexpress-A15)
  • Cortex-A15 (UP) With VE (Boards: Vexpress-A15)

For all supported ARM processors Xvisor ARM is able to boot multiple unmodified
Linux-3.0.4 guest with a fairly interactive and smooth Busybox 0.19.2 console.

On real hardware specifically BeagleBoard-xM (OMAP3 @ 600 MHz) we get near
native CPU performance (i.e. Native Linux 3.0.4 gives 1120 DMIPS whereas Linux
3.0.4 running as guest on Xvisor ARM gives 960 DMIPS)

Please try out our Xivsor Cortex-A15 demo on ARM Fast Models 7.0 and/or
Linaro QEMU (2.02 or higher). To download the demo tarball visit:
https://docs.google.com/open?id=0B0ABS_s60oP_WjNQQ0QtUzNmdmc

Xvisor is currently hosted on Github, to clone or download source code please
visit following links:
Wiki: https://github.com/xvisor/xvisor/wiki
Mainline Repository: https://github.com/xvisor/xvisor
Stagging Repository: https://github.com/avpatel/xvisor-next

Our developer mailing list is xvisor-devel[at]googlegroups[
dot]com, please feel
free to post your queries or join our development mailing list.

Best Regards,
Anup Patel

Hi Anup,

For all supported ARM processors Xvisor ARM is able to boot multiple unmodified
Linux-3.0.4 guest with a fairly interactive and smooth Busybox 0.19.2 console.

On real hardware specifically BeagleBoard-xM (OMAP3 @ 600 MHz) we get near
native CPU performance (i.e. Native Linux 3.0.4 gives 1120 DMIPS whereas Linux
3.0.4 running as guest on Xvisor ARM gives 960 DMIPS)

This sounds quite interesting, although I don’t quite understand what your hypervisor tries to achieve. Is it about running multiple instances of Linux on top of it? In the FAQ you mention that you want to run multiple Android instances over it.

In my experience hypervisors are used for safety/security applications (isolation, security) which need to be isolated from the rest not to re-certify everything, if changes happen in the non safety/security domain. IMHO hypervisors are by nature not very usable for real-time stuff, since they have either safety or real-time issues, or are microkernels with poor performance.

Where would you position Xvisor? Do you think it would be possible to run in one guest some code which will not be affected by Linux running as another guest? Do you think it would be possible to run in one guest a RTOS (e.g. FreeRTOS) and in another Linux and have them communicate? What will be the performance impact for the RTOS? Remember that determinism would be more important than performance for the real-time case.

Also you mention on the wiki that PPC development was scrapped due to poor availability of development resources (board or emulator). This is not the case any more. You could use cross-toolchains/rootfs/qemu for various architectures from here: http://www.yoctoproject.org/ - which I would recommend anyhow not to re-learn everything again with new architectures.

Regards,

Robert

Hi Robert,

Generally viewing hypervisors in embedded systems would have following
benefits:
*1. Secured and Reliable AMP*: As you pointed out hypervisor can provide
better security and isolation in case of AMP systems.
*2. Cost Reductions*: If an embedded system requires two machines, one for
managing user interactions and one for managing actual functionality then
this can be consolidated to just one machine. This would make sense because
machines meant for user interactions are typically idle and using
hypervisor we allocate this idle time to actual functionality.
*3. Legacy Support*: Hypervisor enables legacy embedded software to be used
on latest or newer hardware without modifying the legacy software.

Below is my response to your questions:

Anup Patel wrote:

*A. *It is about running unmodified guest software (be it any OS, firmware or boot-code) on each guest and not just
Linux. In fact we have tried Atomthreads RTOS (http://www.atomthreads.com) as guest too. We would like to run multiple
Android instances over Xvisor only to show Xvisor as complete mobile virtualization solution but before that we will
need some crucial virtualization frameworks such as: Network virtualization, Block IO virtualization, Framebuffer
virtualization, etc.

the days of Android being usable with only software 3D are over, you will need full 3d core virtualization too...

Hi,

Yes, GPU virtualization is already being done by VMWare (Refer
http://static.usenix.org/event/wiov08/tech/full_papers/dowty/dowty.pdf
<http://static.usenix.org/event/wiov08/tech/full_papers/dowty/dowty.pdf%20>for
more details). Even Xvisor can have a GPU virtualization framework.

Further, we can also have pass-through access to devices which we dont
virtualize/access in Xvisor. Xvisor configuration is totally DTS based so
to make a device pass-through is just matter of changing DTS entry for that
device.

Regards,
--Anup