Merge tag 'kvm-arm-for-4-7-take2' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 24 May 2016 10:10:51 +0000 (12:10 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 24 May 2016 10:10:51 +0000 (12:10 +0200)
KVM/ARM Changes for v4.7 take 2

"The GIC is dead; Long live the GIC"

This set of changes include the new vgic, which is a reimplementation of
our horribly broken legacy vgic implementation.  The two implementations
will live side-by-side (with the new being the configured default) for
one kernel release and then we'll remove it.

Also fixes a non-critical issue with virtual abort injection to guests.

1  2 
arch/arm/include/asm/kvm_host.h
arch/arm64/include/asm/kvm_host.h

@@@ -41,6 -41,8 +41,8 @@@
  
  #define KVM_MAX_VCPUS VGIC_V2_MAX_CPUS
  
+ #define KVM_REQ_VCPU_EXIT     8
  u32 *kvm_vcpu_reg(struct kvm_vcpu *vcpu, u8 reg_num, u32 mode);
  int __attribute_const__ kvm_target_cpu(void);
  int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
@@@ -187,7 -189,6 +189,7 @@@ struct kvm_vm_stat 
  struct kvm_vcpu_stat {
        u32 halt_successful_poll;
        u32 halt_attempted_poll;
 +      u32 halt_poll_invalid;
        u32 halt_wakeup;
        u32 hvc_exit_stat;
        u64 wfe_exit_stat;
@@@ -226,6 -227,10 +228,10 @@@ static inline void kvm_arch_mmu_notifie
  
  struct kvm_vcpu *kvm_arm_get_running_vcpu(void);
  struct kvm_vcpu __percpu **kvm_get_running_vcpus(void);
+ void kvm_arm_halt_guest(struct kvm *kvm);
+ void kvm_arm_resume_guest(struct kvm *kvm);
+ void kvm_arm_halt_vcpu(struct kvm_vcpu *vcpu);
+ void kvm_arm_resume_vcpu(struct kvm_vcpu *vcpu);
  
  int kvm_arm_copy_coproc_indices(struct kvm_vcpu *vcpu, u64 __user *uindices);
  unsigned long kvm_arm_num_coproc_regs(struct kvm_vcpu *vcpu);
@@@ -283,7 -288,6 +289,7 @@@ static inline void kvm_arch_hardware_un
  static inline void kvm_arch_sync_events(struct kvm *kvm) {}
  static inline void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) {}
  static inline void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu) {}
 +static inline void kvm_arch_vcpu_block_finish(struct kvm_vcpu *vcpu) {}
  
  static inline void kvm_arm_init_debug(void) {}
  static inline void kvm_arm_setup_debug(struct kvm_vcpu *vcpu) {}
@@@ -27,6 -27,7 +27,6 @@@
  #include <asm/kvm.h>
  #include <asm/kvm_asm.h>
  #include <asm/kvm_mmio.h>
 -#include <asm/kvm_perf_event.h>
  
  #define __KVM_HAVE_ARCH_INTC_INITIALIZED
  
@@@ -43,6 -44,8 +43,8 @@@
  
  #define KVM_VCPU_MAX_FEATURES 4
  
+ #define KVM_REQ_VCPU_EXIT     8
  int __attribute_const__ kvm_target_cpu(void);
  int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
  int kvm_arch_dev_ioctl_check_extension(long ext);
@@@ -293,7 -296,6 +295,7 @@@ struct kvm_vm_stat 
  struct kvm_vcpu_stat {
        u32 halt_successful_poll;
        u32 halt_attempted_poll;
 +      u32 halt_poll_invalid;
        u32 halt_wakeup;
        u32 hvc_exit_stat;
        u64 wfe_exit_stat;
@@@ -325,6 -327,10 +327,10 @@@ static inline void kvm_arch_mmu_notifie
  
  struct kvm_vcpu *kvm_arm_get_running_vcpu(void);
  struct kvm_vcpu * __percpu *kvm_get_running_vcpus(void);
+ void kvm_arm_halt_guest(struct kvm *kvm);
+ void kvm_arm_resume_guest(struct kvm *kvm);
+ void kvm_arm_halt_vcpu(struct kvm_vcpu *vcpu);
+ void kvm_arm_resume_vcpu(struct kvm_vcpu *vcpu);
  
  u64 __kvm_call_hyp(void *hypfn, ...);
  #define kvm_call_hyp(f, ...) __kvm_call_hyp(kvm_ksym_ref(f), ##__VA_ARGS__)
@@@ -358,7 -364,6 +364,7 @@@ static inline void kvm_arch_hardware_un
  static inline void kvm_arch_sync_events(struct kvm *kvm) {}
  static inline void kvm_arch_vcpu_uninit(struct kvm_vcpu *vcpu) {}
  static inline void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu) {}
 +static inline void kvm_arch_vcpu_block_finish(struct kvm_vcpu *vcpu) {}
  
  void kvm_arm_init_debug(void);
  void kvm_arm_setup_debug(struct kvm_vcpu *vcpu);