Hi Mark and Alex,
Please pull the KVM support to LSK based on v3.14.
For these patches to work, please pull the GICv3 patches patches first, as sent previously.
For the resolution of any conflicts, see my example merge of these branches here: http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git lsk/lsk-with-kvm-v3.14
The following changes since commit b139b911b8eddbe30a4c116568a2f38f98af0a83:
arm64: add support for reserved memory defined by device tree (2014-09-13 10:26:57 -0700)
are available in the git repository at:
http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git kvm-for-lsk-v3.14-v1
for you to fetch changes up to d731c6c9b17b8a6b471981b3e310235049190034:
KVM: correct null pid check in kvm_vcpu_yield_to() (2014-10-08 11:10:11 +0200)
---------------------------------------------------------------- KVM/ARM/arm64 Support for LSK v3.14
---------------------------------------------------------------- Alex Bennée (2): arm64: KVM: export demux regids as KVM_REG_ARM64 arm64: KVM: allow export and import of generic timer regs
Andi Kleen (1): asmlinkage, kvm: Make kvm_rebooting visible
Andre Przywara (1): KVM: arm/arm64: vgic: fix GICD_ICFGR register accesses
Anup Patel (10): ARM/ARM64: KVM: Add common header for PSCI related defines ARM/ARM64: KVM: Add base for PSCI v0.2 emulation ARM/ARM64: KVM: Make kvm_psci_call() return convention more flexible KVM: Add KVM_EXIT_SYSTEM_EVENT to user space API header ARM/ARM64: KVM: Emulate PSCI v0.2 SYSTEM_OFF and SYSTEM_RESET ARM/ARM64: KVM: Emulate PSCI v0.2 AFFINITY_INFO ARM/ARM64: KVM: Emulate PSCI v0.2 MIGRATE_INFO_TYPE and related functions ARM/ARM64: KVM: Fix CPU_ON emulation for PSCI v0.2 ARM/ARM64: KVM: Emulate PSCI v0.2 CPU_SUSPEND ARM/ARM64: KVM: Advertise KVM_CAP_ARM_PSCI_0_2 to user space
Ard Biesheuvel (3): ARM/arm64: KVM: fix use of WnR bit in kvm_is_write_fault() mm: export symbol dependencies of is_zero_pfn() KVM: check for !is_zero_pfn() in kvm_is_mmio_pfn()
Christian Borntraeger (5): kvm/irqchip: Speed up KVM_SET_GSI_ROUTING KVM: avoid unnecessary synchronize_rcu KVM: remove redundant check of in_spin_loop KVM: remove redundant assigment of return value in kvm_dev_ioctl KVM: remove redundant assignments in __kvm_set_memory_region
Christoffer Dall (26): KVM: Add capability to advertise PSCI v0.2 support arm/arm64: KVM: Fix and refactor unmap_range arm64: move DBG_MDSCR_* to asm/debug-monitors.h KVM: Rename and add argument to check_extension KVM: Allow KVM_CHECK_EXTENSION on the vm fd kvm: arm64: vgic: fix hyp panic with 64k pages on juno platform KVM: Give IRQFD its own separate enabling Kconfig option KVM: add kvm_arch_sched_in KVM: Introduce gfn_to_hva_memslot_prot arm/arm64: KVM: Support KVM_CAP_READONLY_MEM KVM: Unconditionally export KVM_CAP_READONLY_MEM KVM: Unconditionally export KVM_CAP_USER_NMI KVM: forward declare structs in kvm_types.h KVM: static inline empty kvm_arch functions KVM: remove garbage arg to *hardware_{en,dis}able KVM: device: add simple registration mechanism for kvm_device_ops KVM: ARM: vgic: register kvm_device_ops dynamically KVM: VFIO: register kvm_device_ops dynamically arm/arm64: KVM: Rename irq_state to irq_pending arm/arm64: KVM: Rename irq_active to irq_queued arm/arm64: KVM: vgic: Clear queued flags on unqueue arm/arm64: KVM: vgic: Improve handling of GICD_I{CS}PENDRn arm/arm64: KVM: vgic: Fix SGI writes to GICD_I{CS}PENDR0 arm/arm64: KVM: vgic: Clarify and correct vgic documentation arm/arm64: KVM: Fix set_clear_sgi_pend_reg offset arm/arm64: KVM: Report correct FSC for unsupported fault types
David Hildenbrand (1): KVM: prepare for KVM_(S|G)ET_MP_STATE on other architectures
David Matlack (1): kvm: fix potentially corrupt mmio cache
Dominik Dingel (3): KVM: async_pf: Provide additional direct page notification KVM: async_pf: Allow to wait for outstanding work KVM: async_pf: Add missing call for async page present
Eric Auger (2): ARM: KVM: Unmap IPA on memslot delete/move KVM: EVENTFD: remove inclusion of irq.h
Haibin Wang (2): KVM: ARM: vgic: Fix sgi dispatch problem KVM: ARM: vgic: Fix the overlap check action about setting the GICD & GICC base address.
Heiko Carstens (1): KVM: add kvm_is_error_gpa() helper
Joel Schopp (1): arm/arm64: KVM: Fix VTTBR_BADDR_MASK and pgd alloc
Kim Phillips (1): ARM: KVM: user_mem_abort: support stage 2 MMIO page mapping
Marc Zyngier (49): arm64: KVM: force cache clean on page fault when caches are off arm64: KVM: allows discrimination of AArch32 sysreg access arm64: KVM: trap VM system registers until MMU and caches are ON ARM: KVM: introduce kvm_p*d_addr_end arm64: KVM: flush VM pages before letting the guest enable caches ARM: KVM: force cache clean on page fault when caches are off ARM: KVM: fix handling of trapped 64bit coprocessor accesses ARM: KVM: fix ordering of 64bit coprocessor accesses ARM: KVM: introduce per-vcpu HYP Configuration Register ARM: KVM: add world-switch for AMAIR{0,1} ARM: KVM: trap VM system registers until MMU and caches are ON ARM: KVM: fix warning in mmu.c arm64: KVM: Enable minimalistic support for Cortex-A53 KVM: arm/arm64: vgic: move GICv2 registers to their own structure KVM: ARM: vgic: introduce vgic_ops and LR manipulation primitives KVM: ARM: vgic: abstract access to the ELRSR bitmap KVM: ARM: vgic: abstract EISR bitmap access KVM: ARM: vgic: abstract MISR decoding KVM: ARM: vgic: move underflow handling to vgic_ops KVM: ARM: vgic: abstract VMCR access KVM: ARM: vgic: introduce vgic_enable KVM: ARM: introduce vgic_params structure KVM: ARM: vgic: split GICv2 backend from the main vgic code KVM: ARM: vgic: revisit implementation of irqchip_in_kernel arm64: KVM: remove __kvm_hyp_code_{start,end} from hyp.S arm64: KVM: split GICv2 world switch from hyp code arm64: KVM: move HCR_EL2.{IMO,FMO} manipulation into the vgic switch code KVM: ARM: vgic: add the GICv3 backend arm64: KVM: vgic: add GICv3 world switch arm64: KVM: vgic: enable GICv2 emulation on top on GICv3 hardware arm64: KVM: rename pm_fake handler to trap_raz_wi arm64: KVM: add trap handlers for AArch64 debug registers arm64: KVM: common infrastructure for handling AArch32 CP14/CP15 arm64: KVM: use separate tables for AArch32 32 and 64bit traps arm64: KVM: check ordering of all system register tables arm64: KVM: add trap handlers for AArch32 debug registers arm64: KVM: implement lazy world switch for debug registers arm64: KVM: enable trapping of all debug registers arm64: KVM: GICv3: move system register access to msr_s/mrs_s KVM: arm64: GICv3: mandate page-aligned GICV region arm64: KVM: fix 64bit CP15 VM access for 32bit guests KVM: ARM: vgic: plug irq injection race arm/arm64: KVM: vgic: switch to dynamic allocation arm/arm64: KVM: vgic: Parametrize VGIC_NR_SHARED_IRQS arm/arm64: KVM: vgic: kill VGIC_MAX_CPUS arm/arm64: KVM: vgic: handle out-of-range MMIO accesses arm/arm64: KVM: vgic: kill VGIC_NR_IRQS arm/arm64: KVM: vgic: delay vgic allocation until init time arm/arm64: KVM: vgic: make number of irqs a configurable attribute
Mark Rustad (1): kvm: Resolve missing-field-initializers warnings
Mark Salter (1): arm: KVM: fix possible misalignment of PGDs and bounce page
Michael Mueller (1): KVM: add kvm_arch_vcpu_runnable() test to kvm_vcpu_on_spin() loop
Oleg Nesterov (3): KVM: async_pf: mm->mm_users can not pin apf->mm KVM: async_pf: kill the unnecessary use_mm/unuse_mm async_pf_execute() KVM: async_pf: change async_pf_execute() to use get_user_pages(tsk => NULL)
Paolo Bonzini (3): KVM: add missing cleanup_srcu_struct KVM: Move more code under CONFIG_HAVE_KVM_IRQFD KVM: do not bias the generation number in kvm_current_mmio_generation
Paul Mackerras (4): KVM: Don't keep reference to irq routing table in irqfd struct KVM: irqchip: Provide and use accessors for irq routing table KVM: Move all accesses to kvm::irq_routing into irqchip.c KVM: Move irq notifier implementation into eventfd.c
Radha Mohan Chintakuntla (1): arm64: Add boot time configuration of Intermediate Physical Address size
Russell King (1): ARM: make it easier to check the CPU part number correctly
Sam Bobroff (1): KVM: correct null pid check in kvm_vcpu_yield_to()
Victor Kamensky (13): ARM: KVM: fix vgic V7 assembler code to work in BE image ARM: KVM: handle 64bit values passed to mrcc or from mcrr instructions in BE case ARM: KVM: __kvm_vcpu_run function return result fix in BE case ARM: KVM: vgic mmio should hold data as LE bytes array in BE case ARM: KVM: MMIO support BE host running LE code ARM: KVM: one_reg coproc set and get BE fixes ARM: KVM: enable KVM in Kconfig on big-endian systems ARM64: KVM: MMIO support BE host running LE code ARM64: KVM: store kvm_vcpu_fault_info est_el2 as word ARM64: KVM: fix vgic_bitmap_get_reg function for BE 64bit case ARM64: KVM: set and get of sys registers in BE case ARM64: KVM: fix big endian issue in access_vm_reg for 32bit guest ARM: 7990/1: asm: rename logical shift macros push pull into lspush lspull
Vladimir Murzin (1): arm: kvm: fix CPU hotplug
Will Deacon (9): ARM: KVM: disable KVM in Kconfig on big-endian systems arm64: kvm: use inner-shareable barriers for inner-shareable maintenance KVM: ARM/arm64: fix non-const declaration of function returning const KVM: ARM/arm64: fix broken __percpu annotation KVM: ARM/arm64: avoid returning negative error code as bool KVM: ARM/arm64: return -EFAULT if copy_from_user fails in set_timer_reg KVM: vgic: return int instead of bool when checking I/O ranges KVM: vgic: declare probe function pointer as const arm64: barriers: wire up new barrier options
Documentation/virtual/kvm/api.txt | 43 +- Documentation/virtual/kvm/devices/arm-vgic.txt | 10 + Documentation/virtual/kvm/mmu.txt | 14 + arch/arm/include/asm/assembler.h | 8 +- arch/arm/include/asm/cputype.h | 35 +- arch/arm/include/asm/kvm_arm.h | 4 +- arch/arm/include/asm/kvm_asm.h | 22 +- arch/arm/include/asm/kvm_emulate.h | 27 +- arch/arm/include/asm/kvm_host.h | 32 +- arch/arm/include/asm/kvm_mmu.h | 53 +- arch/arm/include/asm/kvm_psci.h | 6 +- arch/arm/include/asm/smp_scu.h | 2 +- arch/arm/include/uapi/asm/kvm.h | 12 +- arch/arm/kernel/asm-offsets.c | 15 +- arch/arm/kernel/perf_event_cpu.c | 64 +- arch/arm/kvm/Makefile | 1 + arch/arm/kvm/arm.c | 77 +- arch/arm/kvm/coproc.c | 174 +++- arch/arm/kvm/coproc.h | 14 +- arch/arm/kvm/coproc_a15.c | 2 +- arch/arm/kvm/coproc_a7.c | 2 +- arch/arm/kvm/guest.c | 21 +- arch/arm/kvm/handle_exit.c | 10 +- arch/arm/kvm/init.S | 4 +- arch/arm/kvm/interrupts.S | 9 +- arch/arm/kvm/interrupts_head.S | 69 +- arch/arm/kvm/mmu.c | 355 +++++--- arch/arm/kvm/psci.c | 235 +++++- arch/arm/lib/copy_template.S | 36 +- arch/arm/lib/csumpartialcopygeneric.S | 96 +-- arch/arm/lib/io-readsl.S | 12 +- arch/arm/lib/io-writesl.S | 12 +- arch/arm/lib/memmove.S | 36 +- arch/arm/lib/uaccess.S | 192 ++--- arch/arm64/include/asm/barrier.h | 13 +- arch/arm64/include/asm/cputype.h | 1 + arch/arm64/include/asm/debug-monitors.h | 19 +- arch/arm64/include/asm/kvm_arm.h | 36 +- arch/arm64/include/asm/kvm_asm.h | 56 +- arch/arm64/include/asm/kvm_coproc.h | 3 +- arch/arm64/include/asm/kvm_emulate.h | 27 + arch/arm64/include/asm/kvm_host.h | 66 +- arch/arm64/include/asm/kvm_mmu.h | 55 +- arch/arm64/include/asm/kvm_psci.h | 6 +- arch/arm64/include/asm/pgtable-hwdef.h | 5 +- arch/arm64/include/asm/virt.h | 4 + arch/arm64/include/uapi/asm/kvm.h | 15 +- arch/arm64/kernel/asm-offsets.c | 26 +- arch/arm64/kernel/debug-monitors.c | 9 - arch/arm64/kvm/Makefile | 4 + arch/arm64/kvm/guest.c | 70 +- arch/arm64/kvm/handle_exit.c | 14 +- arch/arm64/kvm/hyp-init.S | 6 + arch/arm64/kvm/hyp.S | 612 +++++++++++--- arch/arm64/kvm/sys_regs.c | 637 +++++++++++++-- arch/arm64/kvm/sys_regs.h | 2 + arch/arm64/kvm/sys_regs_generic_v8.c | 2 + arch/arm64/kvm/vgic-v2-switch.S | 133 +++ arch/arm64/kvm/vgic-v3-switch.S | 267 ++++++ arch/arm64/mm/proc.S | 8 +- arch/ia64/include/asm/kvm_host.h | 15 +- arch/ia64/kvm/Kconfig | 1 + arch/ia64/kvm/kvm-ia64.c | 36 +- arch/mips/include/asm/kvm_host.h | 16 +- arch/mips/mm/init.c | 1 + arch/powerpc/include/asm/kvm_host.h | 13 +- arch/powerpc/kvm/Kconfig | 1 + arch/powerpc/kvm/mpic.c | 4 +- arch/powerpc/kvm/powerpc.c | 29 +- arch/s390/include/asm/kvm_host.h | 17 + arch/s390/kvm/Kconfig | 52 -- arch/s390/kvm/interrupt.c | 843 ------------------- arch/s390/kvm/kvm-s390.c | 43 +- arch/s390/mm/init.c | 1 + arch/x86/include/asm/kvm_host.h | 8 +- arch/x86/kvm/Kconfig | 1 + arch/x86/kvm/mmu.c | 29 +- arch/x86/kvm/svm.c | 4 +- arch/x86/kvm/vmx.c | 4 +- arch/x86/kvm/x86.c | 18 +- drivers/clocksource/arm_global_timer.c | 3 +- include/kvm/arm_arch_timer.h | 14 + include/kvm/arm_vgic.h | 227 ++++- include/linux/kvm_host.h | 71 +- include/linux/kvm_types.h | 14 + include/trace/events/kvm.h | 8 +- include/uapi/linux/Kbuild | 1 + include/uapi/linux/kvm.h | 40 +- include/uapi/linux/psci.h | 90 ++ mm/memory.c | 2 + virt/kvm/Kconfig | 7 + virt/kvm/arm/vgic-v2.c | 265 ++++++ virt/kvm/arm/vgic-v3.c | 247 ++++++ virt/kvm/arm/vgic.c | 1046 +++++++++++++++++------- virt/kvm/async_pf.c | 39 +- virt/kvm/eventfd.c | 154 +++- virt/kvm/irq_comm.c | 41 +- virt/kvm/irqchip.c | 107 +-- virt/kvm/kvm_main.c | 203 +++-- virt/kvm/vfio.c | 22 +- 100 files changed, 5017 insertions(+), 2520 deletions(-) create mode 100644 arch/arm64/kvm/vgic-v2-switch.S create mode 100644 arch/arm64/kvm/vgic-v3-switch.S delete mode 100644 arch/s390/kvm/Kconfig delete mode 100644 arch/s390/kvm/interrupt.c create mode 100644 include/uapi/linux/psci.h create mode 100644 virt/kvm/arm/vgic-v2.c create mode 100644 virt/kvm/arm/vgic-v3.c
On 8 October 2014 16:23, Christoffer Dall christoffer.dall@linaro.org wrote:
are available in the git repository at:
http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git kvm-for-lsk-v3.14-v1
for you to fetch changes up to d731c6c9b17b8a6b471981b3e310235049190034:
I tried to pull this but:
$ git pull http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git kvm-for-lsk-v3.14-v1 error: Unable to find d731c6c9b17b8a6b471981b3e310235049190034 under http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git Cannot obtain needed commit d731c6c9b17b8a6b471981b3e310235049190034
On Wed, Oct 08, 2014 at 09:36:42PM +0100, Mark Brown wrote:
On 8 October 2014 16:23, Christoffer Dall christoffer.dall@linaro.org wrote:
are available in the git repository at:
http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git kvm-for-lsk-v3.14-v1
for you to fetch changes up to d731c6c9b17b8a6b471981b3e310235049190034:
I tried to pull this but:
$ git pull http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git kvm-for-lsk-v3.14-v1 error: Unable to find d731c6c9b17b8a6b471981b3e310235049190034 under http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git Cannot obtain needed commit d731c6c9b17b8a6b471981b3e310235049190034
Just worked for me (although it took ages).
Alternatively all the commits should be available here too:
https://github.com/chazy/linux-kvm-arm.git
-Christoffer
On 9 October 2014 10:18, Christoffer Dall christoffer.dall@linaro.org wrote:
On Wed, Oct 08, 2014 at 09:36:42PM +0100, Mark Brown wrote:
On 8 October 2014 16:23, Christoffer Dall christoffer.dall@linaro.org
http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git
kvm-for-lsk-v3.14-v1
for you to fetch changes up to
d731c6c9b17b8a6b471981b3e310235049190034:
I tried to pull this but:
$ git pull http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git kvm-for-lsk-v3.14-v1 error: Unable to find d731c6c9b17b8a6b471981b3e310235049190034 under http://git.linaro.org/git-ro/people/christoffer.dall/linux-kvm-arm.git Cannot obtain needed commit d731c6c9b17b8a6b471981b3e310235049190034
Just worked for me (although it took ages).
Alternatively all the commits should be available here too:
It's still broken for me with HTTP, I changed to git which worked a lot better (it was easier than cut'n'pasting the URL). Looks OK - will throw into the existing testing & see.
linaro-kernel@lists.linaro.org