[TOP] Supress unwanted make directory prints

This patch supresses make directory entry/exit prints so that
our build output looks clean.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] vgic: Minor performance improvements

This patch does following improvements to VGIC driver:
1. Use lite version of spin lock APIs
2. Remove host2guest_lock and host2guest_bmap
3. Make host2guest_irq as atomic array

Signed-off-by: Anup Patel <anup@brainfault.org>
[TESTS] Syncup guest linux defconfigs based on linux-3.16-rc3

Minor patch to update Guest linux defconfigs based on linux-3.16-rc3.

Signed-off-by: Anup Patel <anup@brainfault.org>
[TESTS] Enable LPAE for linux-3.16 on virt-v7 and vexpress-a15 guests

By default, always perfer LPAE in guest when available.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32ve: arm64: Trap and yield when VCPU executes WFE instruction

Just like other hypervisors we trap WFE instruction and yield the
VCPU timeslice so that other things can have a chance to run.

In fact, our arm32 port already traps WFE instruction and yields
on WFE. Some how we had missed this part for arm32ve and arm64
port hence this patch.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32ve: Low-level context switching of banked registers

This patch introduces low-level context switching infrastructure
for arm32ve port and uses it implement low-level context switching
of banked registers.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32ve: Cleanup and improve low-level context switching

This patch makes low-level context switching functions more
readable by introducing offset related defines in cpu_defines.h
and also adding lot of comments in arch_regs.h

This patch also adds low-level context switching of CP15 registers.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] vgic: Optimize __vgic_sync_vcpu_hwstate() implementation

This patch does following optimizations to __vgic_sync_vcpu_hwstate():
1. Move maintainence irq related stuff from __vgic_sync_vcpu_hwstate()
to vgic_main_irq().
2. Keep track of used LR register count and skip __vgic_sync_vcpu_hwstate()
when used LR register count is zero.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32ve: Low-level context switching of generic timers

This patch adds necessary infrastructure for low-level context
switching of generic timer registers and implements it for arm32ve.

Signed-off-by: Anup Patel <anup@brainfault.org>
[TESTS] Don't specify timer clock frequency in Guest Linux DTS

Latest Linux kernel looks at clock frequency register when
generic timer frequency is not available in DTS.

For Guest, we should always get generic timer clock freqency
from clock frequency register hence this patch.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] vgic: Minor improvement to __vgic_xxx() functions

The __vgic_queue_irq() and __vgic_sync_hwstate_vcpu() are very
crucial part of VGIC emulation and called quiet frequently
hence this patch marks few local variables of these function
to be registers.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32ve: Low-level context switching of VFP registers

As a performance improvement we do low-level context switching
of VFP registers.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32: Fix strex inline asm compiling error.

Signed-off-by: CoryXie <cory.xie@gmail.com>
[CORE] vmm_devtree: Minor bug fix in vmm_devtree_delattr()

Only freeup attr->value if it is non-NULL.

We might have binary attributes with attr-value = NULL.

Signed-off-by: Anup Patel <anup@brainfault.org>
[CORE] vmm_clocksource: Introduce vmm_clocksource_delta2nsecs() API

Converting delta cycles of cycle counter to nanosecs can be very
useful in other part of Xvisor hence export this as macro based API.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] generic_timer: Don't compute WFI timeout based on generic timer

It is not necessary that Guest VCPU will only wait for timer interrupt
when doing WFI. It might also wait for an IPI or some other interrupt.

This patch removes dependency of WFI timeout on generic timer state
by introducing timer events to keep track of physical timer and virtual
timer when Guest VCPU is not running.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32: Add separate VTLB zone for high exception vectors

To make Guest exception handling faster we introduce a dedicated
VTLB zone containing 16 enteries for high exception vectors.

This new VTLB zone improves Guest Linux booting time by 2-3 seconds
and DMIPS when running on QEMU or ARM Fast Models.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] generic_timer: Minor improvement to interrupt delivery latency

It can quite often happen that we wakeup VCPU due someother reason
other than timer expiry. When this happens we should check whether
Phys/Virt timer was active and if so then inject phys/virt irq.

This small improvement reduces virt timer interrupt latency by
10 microsecs (approx.) in basic firmware and improves linux
boot-time for Virt-v7x2 guest on host with 1CPU by 0.01 secs.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32: Remove unwanted VTLB flush upon SCTLR write from Guest

Currently, we flush entire VTLB when some MMU related bit is changed
in SCTLR register and we flush non-global pages from VTLB when
non-MMU related bits are changed. We really don't need to flush
non-global pages from VTLB when non-MMU bits are changes. In fact,
doing so is adding lot of penalty when Guest linux kernel is
compiled with CONFIG_ALIGNMENT_TRAP=y.

This patch removes flushing on non-global pages from VCPU upon
SCTLR write by Guest and also fixes domain fault handling for
Guest which breaks due to this improvment.

Signed-off-by: Anup Patel <anup@brainfault.org>
[ARM] arm32: Add separate VTLB zone for low exception vectors

To make Guest exception handling faster we introduce a dedicated
VTLB zone containing 16 enteries for low exception vectors.

This new VTLB zone improves performance for Guest OSes that use
low exception vectors for exception handling.

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