qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH v3 00/11] AARCH64 support on machvirt machine model


From: Mian M. Hamayun
Subject: [Qemu-devel] [PATCH v3 00/11] AARCH64 support on machvirt machine model using KVM
Date: Fri, 27 Sep 2013 12:10:03 +0200

From: "Mian M. Hamayun" <address@hidden>

This is the v3 of patch series that implements KVM support in QEMU for the ARMv8
Cortex A57 CPU. It depends on the recently mainlined AArch64 preparation patch
series and machvirt patches version v7, and uses the already available KVM 
in-kernel GIC support. 
This implementation supports both 64-bit and 32-bit guests on AARCH64.

As a reference, KVM Tool and the AArch64 bootwrapper were used, as well as
public documentation from ARM. The following work has been tested with SMP
capabilities for both 64 and 32-bit guests, under ARMv8 Fast and Foundation 
Models (Open Embedded userspace with an emulated MMC).

The v1 of this patch series related to AArch64 CPU model for Versatile Express
was sponsored by Huawei, and developed in collaboration between Huawei
Technologies Duesseldorf GmbH - European Research Center Munich (ERC) and
Virtual Open Systems.

A working tree of this implementation is available on the "kvm-aarch64-v3"
branch of the following github repository.

https://github.com/virtualopensystems/qemu/tree/kvm-aarch64-v3

Summary of Changes:

Changes v2 -> v3
 * Based on AArch64 Preparation Patchset (mainlined) and machvirt patch version 
v7
 * 32 and 64-bit KVM hooks have been separated into kvm_32.c and kvm_64.c, 
whereas
   common code resides in kvm.c
 * SMP support is now implemented using PSCI method instead of the boot 
injection
   mechanism, as implemented in the previous versions
 * 32-bit SMP guest support is now available

Changes v1 -> v2
 * Based on AArch64 Preparation Patchset V5 and machvirt patches.
 * Implemented for Machvirt Machine Model.
 * Architecture-specific CPU initialization code improved. Removed hardcoding
   from register set/get loops and introduced CPU target type array to find
   appropriate ARMv8 CPU type supported by KVM.
 * Disable the PSCI method in case of AArch64 and use the spin-table method
   instead for booting secondary CPUs.
 * 32-bit guest support still missing

v1
 * Based on AArch64 Preparation Patchset V4
 * Implemented for Versatile Express Machine Model
 * Support for SMP using bootcode injection
 * No 32-bit guest support

John Rigby (2):
  ARM: arm64 kvm headers from kernel arm64-kvm tree
  AARCH64: add a57core

Mian M. Hamayun (9):
  AARCH64: Add A57 CPU to default AArch64 configuration and enable KVM
  AARCH64: Separate 32-bit specific code from common KVM hooks
  AARCH64: Add AARCH64 CPU initialization, get and put registers support
  target-arm: Parameterize the bootloader selection and setup mechanism
  AARCH64: Add boot support for aarch64 processor
  AARCH64: Enable SMP support for aarch64 processors using PSCI method
  AARCH64: Enable configure support for 32-bit guests on AARCH64
  AARCH64: Add flags and boot parameters for 32-bit guests on AARCH64
  AARCH64: Add 32-bit mode selection parameter

 configure                           |   3 +-
 default-configs/aarch64-softmmu.mak |   1 +
 hw/arm/boot.c                       | 147 ++++++++++++--
 hw/arm/virt.c                       |   8 +
 hw/cpu/Makefile.objs                |   1 +
 hw/cpu/a57mpcore.c                  | 122 ++++++++++++
 linux-headers/asm-arm64/kvm.h       | 168 ++++++++++++++++
 linux-headers/asm-arm64/kvm_para.h  |   1 +
 linux-headers/linux/kvm.h           |   1 +
 qemu-options.hx                     |   8 +
 target-arm/Makefile.objs            |   5 +
 target-arm/cpu.c                    |  18 +-
 target-arm/kvm.c                    | 363 ----------------------------------
 target-arm/kvm_32.c                 | 382 ++++++++++++++++++++++++++++++++++++
 target-arm/kvm_64.c                 | 146 ++++++++++++++
 vl.c                                |   4 +
 16 files changed, 997 insertions(+), 381 deletions(-)
 create mode 100644 hw/cpu/a57mpcore.c
 create mode 100644 linux-headers/asm-arm64/kvm.h
 create mode 100644 linux-headers/asm-arm64/kvm_para.h
 create mode 100644 target-arm/kvm_32.c
 create mode 100644 target-arm/kvm_64.c

-- 
1.8.1.2




reply via email to

[Prev in Thread] Current Thread [Next in Thread]