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. Torsten Schwab Marketing GmbH Emanuelstr. 3, 10317 Berlin Deutschland Telefon: +49 (33) 5310967 Email: woozydude at gmail.com Site: http://flug.prexxis.de/