Merge pull request #83 from avpatel/master

Resync mainline
Merge pull request #84 from avpatel/master

Syncup mainline tree with changes from xvisor-next tree
Merge pull request #85 from avpatel/master

Syncup mainline with changes from xvisor-next tree
Merge pull request #86 from avpatel/master

Update last commit tag for v0.2.1
Merge pull request #87 from avpatel/master

Syncup mainline with xvisor-next tree.
Merge pull request #88 from avpatel/master

Syncup mainline with xvisor-next tree.
[ARM] Introduce arm64 CPU support

This is the main patch for arm64 or armv8 or aarch64 CPU support.

This new arm64 port is very much in-line with arm32ve port because
the arm64 virtualization extensions is just 64-bit version of arm32ve
virtualization extensions.

Signed-off-by: Sukanto Ghosh <sukantoghosh@gmail.com>
[ARM] Introduce virt-v8 guest template for arm64 guest

There are no real development boards openly available for arm64
hence we introduce a completely paravirtualized virt-v8 guest
for folks interested in having a dummy or paravirtualized
hardware for guest.

This virt-v8 guest is a virtual machine with VirtIO-based
devices, GIC and ARMv8 generic timer.

This patch adds guest template for virt-v8 guest.

Signed-off-by: Sukanto Ghosh <sukantoghosh@gmail.com>
[ARM] Introduce generic armv8 board

With the new arm64 (or armv8) port we try to implement unified
Xvisor binary for all arm64 boards.

To achieve this we introduce generic armv8 board which is fully
device tree based (i.e. DTB-based) similar to linux arm64 port.

The only constraint with generic armv8 board support is that
actual HW board on which Xvisor runs should have GICv2 or higher
as PIC.

Signed-off-by: Sukanto Ghosh <sukantoghosh@gmail.com>
[DOCS] Add light-weight bootwrapper for ARMv8 foundation models

This patch adds light-weight and minimalistic bootwrapper assembly
source for booting Xvisor on ARMv8 foundation models.

In simpler words, it is a minimalistic bootloader for launching
Xvisor on ARMv8 foundation model.

Signed-off-by: Sukanto Ghosh <sukantoghosh@gmail.com>
[TESTS] Add arm64 basic firmware for virt-v8 guest

We need a Xvisor friendly firmware/bootloader for Virt-v8 guest which
will help us launch Guest OSes on Virt-v8 guest and also help us do
some testing of virtual CPU emulated by Xvisor ARM64.

This patch adds arm64 basic firmware for Virt-v8 Guest which is very
similar to arm32 basic firmware for VExpress-A15 Guest. This firmware
is capable of booting upstream arm64 linux kernel.

Signed-off-by: Sukanto Ghosh <sukantoghosh@gmail.com>
[TOP] Update README and HOSTS files for new ARM64 port

With the new ARM64 port our toplevel README and supported HOSTS
documentation files need to be updated hence this patch.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] fix test in vmm_manager_vcpu_get_hcpu()

Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
[CORE] fail if no VCPU is created for a guest.

Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
[TOOLS] add support for ARM64 buid in coverity script.

This is a bit hacky but it will do for now.

Signed-off-by: Jean-Christophe DUBOIS <jcd@tribudubois.net>
[ARM] Fix typo in file header for cpu_generic_timer.h

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] vmm_scheduler: Preempt the VCPU trying to reset self

It might happen that a Guest VCPU may try to reset self using
special emulated HW or interface such as PSCI.

When this situation happens we should preempt the current VCPU.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] Add poweroff flag for each VCPU

An advanced Guest (on any architecture) will have special HW
or interface (such as PSCI) to power-on and start Guest VCPUs
as required. This means we might have Guest where all VCPUs
are not required to start executing when Guest is kicked.

To handle the above scenario, we provide a per-VCPU 'poweroff'
flag. When a Guest is kicked we only kick Guest VCPUs having
'poweroff == FALSE'. By default, both normal and orphan VCPUs
will have 'poweroff' flag set to FALSE.

Users can set the 'poweroff' flag for Guest VCPUs when Guest
is created using device tree attribute 'poweroff'.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] Don't need to increment PC when asserting undefined exception

The assert undefined exception called from arm instruction emulation cause
VCPU to enter exception handler immediatly from vmm_scheduler_irq_exit() so,
incrementing PC after asserting undefined exception is useless.

Signed-off-by: Anup Patel <anup@brainfault.org>
[TESTS] Add board specific compilation flags for arm32 basic firmware

Make board specific code of arm32 basic fimware flexible so that
we can specify extra board specific compilation flags (i.e. extra
cppflags, cflags, asflags, and ldflags).

Signed-off-by: Anup Patel <anup@brainfault.org>