Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: [PATCH] Support for Versatile Express A15

On Sunday 08 February 2015 13:24:36 Justin Cormack wrote:
> On 3 February 2015 at 20:33, Sergio L. Pascual <slp%sinrega.org@localhost> wrote:
> > This board is interesting for two reasons: is a well supported ARMv7
> > platform within QEMU, and it's a first step towards running NetBSD/evbarm
> > as a guest on KVM/ARM.
> Out of interest what are the kvm additional requirements above these
> patches?

I've just uploaded the patches for KVM support to 

 - 01_vexpress_kvm_guest.patch: Add an independent configuration file for 
Versatile Express A15 with KVM support. Add an specialized driver for KVM's 

 - 02_gtmr_add_kvm_support.patch: If targeting KVM, rearm timer at each 

 - 03_gtmr_enable_timer_after_tval.patch: Enable timer after writing TVAL. 
This avoids an unpredictable behavior when running as KVM Guest.

 - 04_cortex_pmu_use_virtual_counter.patch: If targeting KVM, use the Virtual 
Timer Value Register, as the Cycle Count Register is not available when 
running as KVM Guest.

(*) This probably deserves some explaining. Our current controller for Cortex 
GIC has two problems with KVM's vGIC:

 1) It relies on interrupt levels and the PMR, which KVM doesn't implement yet 
(the PMR just acts like an all-or-nothing switch). The alternative driver 
implements a strategy similar to Nick's RPi interrupt handler, using pic.c 
instrumentation to avoid relying on IRQ levels.

 2) Under KVM, the GIC's CPU interface is hardware assisted, and can be 
cheaply used, but the distributor is emulated and accessing it traps to the 
Host, which makes the Guest unbearable slow. The alternative driver avoids 
using the distributor to mask interrupts by delaying EOI until 
pic_unblock_irqs is called.

There's still some work to be done to be able to run under KVM with a decent 

 - Add support for VirtIO-MMIO devices.

 - Add MULTIPROCESSOR support.


Home | Main Index | Thread Index | Old Index