Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm
authorLinus Torvalds <torvalds@linux-foundation.org>
Fri, 15 Nov 2013 04:51:36 +0000 (13:51 +0900)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 15 Nov 2013 04:51:36 +0000 (13:51 +0900)
Pull KVM changes from Paolo Bonzini:
 "Here are the 3.13 KVM changes.  There was a lot of work on the PPC
  side: the HV and emulation flavors can now coexist in a single kernel
  is probably the most interesting change from a user point of view.

  On the x86 side there are nested virtualization improvements and a few
  bugfixes.

  ARM got transparent huge page support, improved overcommit, and
  support for big endian guests.

  Finally, there is a new interface to connect KVM with VFIO.  This
  helps with devices that use NoSnoop PCI transactions, letting the
  driver in the guest execute WBINVD instructions.  This includes some
  nVidia cards on Windows, that fail to start without these patches and
  the corresponding userspace changes"

* tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm: (146 commits)
  kvm, vmx: Fix lazy FPU on nested guest
  arm/arm64: KVM: PSCI: propagate caller endianness to the incoming vcpu
  arm/arm64: KVM: MMIO support for BE guest
  kvm, cpuid: Fix sparse warning
  kvm: Delete prototype for non-existent function kvm_check_iopl
  kvm: Delete prototype for non-existent function complete_pio
  hung_task: add method to reset detector
  pvclock: detect watchdog reset at pvclock read
  kvm: optimize out smp_mb after srcu_read_unlock
  srcu: API for barrier after srcu read unlock
  KVM: remove vm mmap method
  KVM: IOMMU: hva align mapping page size
  KVM: x86: trace cpuid emulation when called from emulator
  KVM: emulator: cleanup decode_register_operand() a bit
  KVM: emulator: check rex prefix inside decode_register()
  KVM: x86: fix emulation of "movzbl %bpl, %eax"
  kvm_host: typo fix
  KVM: x86: emulate SAHF instruction
  MAINTAINERS: add tree for kvm.git
  Documentation/kvm: add a 00-INDEX file
  ...

15 files changed:
1  2 
MAINTAINERS
arch/arm/include/asm/pgtable-3level.h
arch/arm/kvm/arm.c
arch/powerpc/include/asm/processor.h
arch/powerpc/include/asm/reg.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kernel/traps.c
arch/powerpc/kvm/Kconfig
arch/powerpc/kvm/book3s_pr.c
arch/powerpc/kvm/booke.c
arch/s390/kvm/interrupt.c
arch/s390/kvm/kvm-s390.c
include/linux/sched.h
kernel/hung_task.c
virt/kvm/kvm_main.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
index 7794b2b04eb2eceb04bda53adbda99b9c721f784,75a9e5a34ef97dfea11c161555358d4a0b15caed..fc14a38c7ccffae6c8f7c233e2710462ef621e7d
@@@ -221,9 -202,16 +222,10 @@@ struct thread_struct 
        void            *pgdir;         /* root of page-table tree */
        unsigned long   ksp_limit;      /* if ksp <= ksp_limit stack overflow */
  #endif
+       /* Debug Registers */
        struct debug_reg debug;
 -
 -      /* FP and VSX 0-31 register set */
 -      double          fpr[32][TS_FPRWIDTH] __attribute__((aligned(16)));
 -      struct {
 -
 -              unsigned int pad;
 -              unsigned int val;       /* Floating point status */
 -      } fpscr;
 +      struct thread_fp_state  fp_state;
 +      struct thread_fp_state  *fp_save_area;
        int             fpexc_mode;     /* floating-point exception mode */
        unsigned int    align_ctl;      /* alignment handling control */
  #ifdef CONFIG_PPC64
Simple merge
Simple merge
Simple merge
Simple merge
index c0b48f96a91c9817b17e80b6b32f3f4e6aac0167,df36cf2ed22be44f47923bce1bcedc511d8e8981..fe14ca3dd171cd60b3c07191fa3bdd78a141e2a6
@@@ -1109,17 -1242,22 +1242,20 @@@ static void kvmppc_core_vcpu_free_pr(st
  
        free_page((unsigned long)vcpu->arch.shared & PAGE_MASK);
        kvm_vcpu_uninit(vcpu);
-       kfree(vcpu_book3s->shadow_vcpu);
+ #ifdef CONFIG_KVM_BOOK3S_32
+       kfree(vcpu->arch.shadow_vcpu);
+ #endif
        vfree(vcpu_book3s);
+       kmem_cache_free(kvm_vcpu_cache, vcpu);
  }
  
int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
static int kvmppc_vcpu_run_pr(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
  {
        int ret;
 -      double fpr[32][TS_FPRWIDTH];
 -      unsigned int fpscr;
 +      struct thread_fp_state fp;
        int fpexc_mode;
  #ifdef CONFIG_ALTIVEC
 -      vector128 vr[32];
 -      vector128 vscr;
 +      struct thread_vr_state vr;
        unsigned long uninitialized_var(vrsave);
        int used_vr;
  #endif
index 5133199f6cb7b6cab1feca199f434bfd69a89e1a,15d0149511ebf7bd199432b09807ccafdedba112..53e65a210b9a451ab1089bfe788277ddda071cf3
@@@ -655,9 -681,11 +681,10 @@@ int kvmppc_core_check_requests(struct k
  int kvmppc_vcpu_run(struct kvm_run *kvm_run, struct kvm_vcpu *vcpu)
  {
        int ret, s;
+       struct thread_struct thread;
  #ifdef CONFIG_PPC_FPU
 -      unsigned int fpscr;
 +      struct thread_fp_state fp;
        int fpexc_mode;
 -      u64 fpr[32];
  #endif
  
        if (!vcpu->arch.sane) {
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge