]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge remote-tracking branch 'remotes/powerpc/topic/xive' into kvm-ppc-next
authorPaul Mackerras <paulus@ozlabs.org>
Thu, 27 Apr 2017 22:23:16 +0000 (08:23 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Thu, 27 Apr 2017 22:23:16 +0000 (08:23 +1000)
This merges in the powerpc topic/xive branch to bring in the code for
the in-kernel XICS interrupt controller emulation to use the new XIVE
(eXternal Interrupt Virtualization Engine) hardware in the POWER9 chip
directly, rather than via a XICS emulation in firmware.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
1  2 
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/include/asm/kvm_ppc.h
arch/powerpc/kvm/Kconfig
arch/powerpc/kvm/book3s.c
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/kvm/powerpc.c
include/linux/kvm_host.h
virt/kvm/kvm_main.c

index 77c60826d1456c1d63c4df46eba0a7ad14c3bab0,5a8ab4a758f1123ea34f97359cfb36589b609e2e..9c51ac4b8f3699d256b4a33bd75e2466b856fc3f
@@@ -447,13 -448,23 +454,28 @@@ struct mmio_hpte_cache 
        unsigned int index;
  };
  
 +#define KVMPPC_VSX_COPY_NONE          0
 +#define KVMPPC_VSX_COPY_WORD          1
 +#define KVMPPC_VSX_COPY_DWORD         2
 +#define KVMPPC_VSX_COPY_DWORD_LOAD_DUMP       3
 +
  struct openpic;
  
+ /* W0 and W1 of a XIVE thread management context */
+ union xive_tma_w01 {
+       struct {
+               u8      nsr;
+               u8      cppr;
+               u8      ipb;
+               u8      lsmfb;
+               u8      ack;
+               u8      inc;
+               u8      age;
+               u8      pipr;
+       };
+       __be64 w01;
+ };
  struct kvm_vcpu_arch {
        ulong host_stack;
        u32 host_pid;
Simple merge
Simple merge
Simple merge
index d42182eb0c263257980dcb26fdd0e43ad4c72a5a,128efb42ec4e62baf11d79afcd502bc3a167ef88..42b7a4fd57d9a557f8278a9f9a8c228f2758a1e8
@@@ -3648,9 -3677,9 +3675,9 @@@ static int kvmppc_clr_passthru_irq(stru
         * We don't free this structure even when the count goes to
         * zero. The structure is freed when we destroy the VM.
         */
 -
 + unlock:
        mutex_unlock(&kvm->lock);
-       return 0;
+       return rc;
  }
  
  static int kvmppc_irq_bypass_add_producer_hv(struct irq_bypass_consumer *cons,
@@@ -3928,7 -3957,7 +3955,7 @@@ static int kvmppc_book3s_init_hv(void
         * indirectly, via OPAL.
         */
  #ifdef CONFIG_SMP
-       if (!local_paca->kvm_hstate.xics_phys) {
 -      if (!xive_enabled() && !get_paca()->kvm_hstate.xics_phys) {
++      if (!xive_enabled() && !local_paca->kvm_hstate.xics_phys) {
                struct device_node *np;
  
                np = of_find_compatible_node(NULL, NULL, "ibm,opal-intc");
index cf725c580fc5771743bdf3b66dfd7569f78bfc87,de79bd721ec79b0519e1bec9fd97d07981ab1484..e4b58f2e335e0fae10a4f3f5494d938e7d1f06bc
@@@ -37,7 -37,8 +37,9 @@@
  #include <asm/cputhreads.h>
  #include <asm/irqflags.h>
  #include <asm/iommu.h>
 +#include <asm/switch_to.h>
+ #include <asm/xive.h>
  #include "timing.h"
  #include "irq.h"
  #include "../mm/mmu_decl.h"
Simple merge
Simple merge