kvm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 00/10] KVM/ARM Implementation
@ 2011-08-06 10:38 Christoffer Dall
  2011-08-06 10:39 ` [PATCH v4 01/10] ARM: KVM: Initial skeleton to compile KVM support Christoffer Dall
                   ` (10 more replies)
  0 siblings, 11 replies; 34+ messages in thread
From: Christoffer Dall @ 2011-08-06 10:38 UTC (permalink / raw)
  To: kvm; +Cc: catalin.marinas, tech, android-virt

The following series implements KVM support for ARM processors,
specifically on the Cortex A-15 platform.

The patch series applies to the arm-lpae branch of ARM Ltd's kernel
tree. This is Version 4 of the patch series, but the first two versions
were reviewed outside of the KVM mailing list. Changes can also be
pulled from:
  git://git.ncl.cs.columbia.edu/pub/git/linux-kvm-arm kvm-a15-v4

The implementation is broken up into a logical set of patches, the first
one containing a skeleton of files, makefile changes, the basic user
space interface and KVM architecture specific stubs.  Subsequent patches
implement parts of the system as listed:
 1.  Skeleton
 2.  Identity Mapping for Hyp mode
 3.  Hypervisor intitalization
 4.  Hyp mode memory mappings and 2nd stage preparation
 5.  World-switch implementation and Hyp exception vectors
 6.  Emulation framework and CP15 emulation
 7.  Handle guest user memory aborts
 8.  Handle guest MMIO aborts
 9.  Handle userspace IRQ/FIQ injection
 10. Support guest wait-for-interrupt instructions.

Testing:
Limited testing, but have run GCC inside guest, which compiled a small
hellow-world program, which was successfully run. Hardware still
unavailable, so all testing has been done on ARM Fast Models.

For a guide on how to set up a testing environment and try out these
patches, see:
  http://wiki.ncl.cs.columbia.edu/wiki/KVMARM:Guides:Development_Environment

Changes since v3:
 - v4 actually works, fully boots a guest
 - Support compiling as a module
 - Use static inlines instead of macros for vcpu_reg and friends
 - Optimize kvm_vcpu_reg function
 - Use Ftrace for trace capabilities
 - Updated documentation and commenting
 - Use KVM_IRQ_LINE instead of KVM_INTERRUPT
 - Emulates load/store instructions not supported through HSR
   syndrome information.
 - Frees 2nd stage translation tables on VM teardown
 - Handles IRQ/FIQ instructions
 - Handles more CP15 accesses
 - Support guest WFI calls
 - Uses debugfs instead of /proc
 - Support compiling in Thumb mode

Changes since v2:
 - Performs world-switch code
 - Maps guest memory using 2nd stage translation
 - Emulates co-processor 15 instructions
 - Forwards I/O faults to QEMU.

---

Christoffer Dall (10):
      ARM: KVM: Initial skeleton to compile KVM support
      ARM: KVM: Hypervisor identity mapping
      ARM: KVM: Add hypervisor inititalization
      ARM: KVM: Memory virtualization setup
      ARM: KVM: Inject IRQs and FIQs from userspace
      ARM: KVM: World-switch implementation
      ARM: KVM: Emulation framework and CP15 emulation
      ARM: KVM: Handle guest faults in KVM
      ARM: KVM: Handle I/O aborts
      ARM: KVM: Guest wait-for-interrupts (WFI) support


 Documentation/kvm/api.txt                   |   11 
 arch/arm/Kconfig                            |    2 
 arch/arm/Makefile                           |    1 
 arch/arm/include/asm/kvm.h                  |   75 +++
 arch/arm/include/asm/kvm_arm.h              |  130 +++++
 arch/arm/include/asm/kvm_asm.h              |   51 ++
 arch/arm/include/asm/kvm_emulate.h          |  100 ++++
 arch/arm/include/asm/kvm_host.h             |  105 ++++
 arch/arm/include/asm/kvm_mmu.h              |   46 ++
 arch/arm/include/asm/kvm_para.h             |    9 
 arch/arm/include/asm/pgtable-3level-hwdef.h |    6 
 arch/arm/include/asm/pgtable-3level.h       |    9 
 arch/arm/include/asm/pgtable.h              |   15 +
 arch/arm/include/asm/unified.h              |   12 
 arch/arm/kernel/armksyms.c                  |    6 
 arch/arm/kernel/asm-offsets.c               |   33 +
 arch/arm/kernel/entry-armv.S                |    1 
 arch/arm/kvm/Kconfig                        |   44 ++
 arch/arm/kvm/Makefile                       |   18 +
 arch/arm/kvm/arm.c                          |  701 +++++++++++++++++++++++++++
 arch/arm/kvm/arm_emulate.c                  |  604 +++++++++++++++++++++++
 arch/arm/kvm/arm_exports.c                  |   26 +
 arch/arm/kvm/arm_guest.c                    |  150 ++++++
 arch/arm/kvm/arm_init.S                     |  115 ++++
 arch/arm/kvm/arm_interrupts.S               |  488 +++++++++++++++++++
 arch/arm/kvm/arm_mmu.c                      |  549 +++++++++++++++++++++
 arch/arm/kvm/debug.c                        |  377 +++++++++++++++
 arch/arm/kvm/debug.h                        |   63 ++
 arch/arm/kvm/trace.h                        |  131 +++++
 arch/arm/mach-vexpress/Kconfig              |    1 
 arch/arm/mm/Kconfig                         |    7 
 arch/arm/mm/idmap.c                         |   52 ++
 arch/arm/mm/mmu.c                           |    3 
 include/linux/kvm.h                         |    1 
 mm/memory.c                                 |    1 
 35 files changed, 3939 insertions(+), 4 deletions(-)
 create mode 100644 arch/arm/include/asm/kvm.h
 create mode 100644 arch/arm/include/asm/kvm_arm.h
 create mode 100644 arch/arm/include/asm/kvm_asm.h
 create mode 100644 arch/arm/include/asm/kvm_emulate.h
 create mode 100644 arch/arm/include/asm/kvm_host.h
 create mode 100644 arch/arm/include/asm/kvm_mmu.h
 create mode 100644 arch/arm/include/asm/kvm_para.h
 create mode 100644 arch/arm/kvm/Kconfig
 create mode 100644 arch/arm/kvm/Makefile
 create mode 100644 arch/arm/kvm/arm.c
 create mode 100644 arch/arm/kvm/arm_emulate.c
 create mode 100644 arch/arm/kvm/arm_exports.c
 create mode 100644 arch/arm/kvm/arm_guest.c
 create mode 100644 arch/arm/kvm/arm_init.S
 create mode 100644 arch/arm/kvm/arm_interrupts.S
 create mode 100644 arch/arm/kvm/arm_mmu.c
 create mode 100644 arch/arm/kvm/debug.c
 create mode 100644 arch/arm/kvm/debug.h
 create mode 100644 arch/arm/kvm/trace.h

-- 

^ permalink raw reply	[flat|nested] 34+ messages in thread

end of thread, other threads:[~2011-08-09 11:46 UTC | newest]

Thread overview: 34+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-06 10:38 [PATCH v4 00/10] KVM/ARM Implementation Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 01/10] ARM: KVM: Initial skeleton to compile KVM support Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 02/10] ARM: KVM: Hypervisor identity mapping Christoffer Dall
2011-08-09  9:20   ` Avi Kivity
2011-08-09  9:29     ` Catalin Marinas
2011-08-09  9:29     ` Christoffer Dall
2011-08-09 10:23       ` [Android-virt] " Alexey Smirnov
2011-08-09 11:23         ` Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 03/10] ARM: KVM: Add hypervisor inititalization Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 04/10] ARM: KVM: Memory virtualization setup Christoffer Dall
2011-08-09  9:57   ` Avi Kivity
2011-08-09 11:24     ` [Android-virt] " Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 05/10] ARM: KVM: Inject IRQs and FIQs from userspace Christoffer Dall
2011-08-09 10:07   ` Avi Kivity
2011-08-09 11:27     ` [Android-virt] " Christoffer Dall
2011-08-09 11:37       ` Avi Kivity
2011-08-09 11:40         ` Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 06/10] ARM: KVM: World-switch implementation Christoffer Dall
2011-08-09 11:09   ` Avi Kivity
2011-08-09 11:29     ` Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 07/10] ARM: KVM: Emulation framework and CP15 emulation Christoffer Dall
2011-08-09 11:17   ` Avi Kivity
2011-08-09 11:34     ` Christoffer Dall
2011-08-09 11:39       ` Avi Kivity
2011-08-09 11:40         ` Christoffer Dall
2011-08-06 10:39 ` [PATCH v4 08/10] ARM: KVM: Handle guest faults in KVM Christoffer Dall
2011-08-09 11:24   ` Avi Kivity
2011-08-09 11:35     ` Christoffer Dall
2011-08-06 10:40 ` [PATCH v4 09/10] ARM: KVM: Handle I/O aborts Christoffer Dall
2011-08-09 11:34   ` Avi Kivity
2011-08-09 11:39     ` Christoffer Dall
2011-08-09 11:46       ` Avi Kivity
2011-08-06 10:40 ` [PATCH v4 10/10] ARM: KVM: Guest wait-for-interrupts (WFI) support Christoffer Dall
2011-08-09 11:43 ` [PATCH v4 00/10] KVM/ARM Implementation Avi Kivity

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).