All of lore.kernel.org
 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.