Merge branch 'topic/ppc-kvm' into next
authorMichael Ellerman <mpe@ellerman.id.au>
Sat, 9 Jul 2022 09:32:20 +0000 (19:32 +1000)
committerMichael Ellerman <mpe@ellerman.id.au>
Sat, 9 Jul 2022 09:32:48 +0000 (19:32 +1000)
Merge KVM related commits we are keeping in a topic branch in case of
any conflicts with generic KVM changes.

arch/powerpc/include/asm/hvcall.h
arch/powerpc/include/asm/kvm_host.h
arch/powerpc/kernel/asm-offsets.c
arch/powerpc/kvm/Kconfig
arch/powerpc/kvm/book3s_64_vio.c
arch/powerpc/kvm/book3s_hv.c
arch/powerpc/kvm/book3s_hv.h
arch/powerpc/kvm/book3s_hv_p9_entry.c
arch/powerpc/kvm/book3s_hv_rmhandlers.S
arch/powerpc/kvm/book3s_xics.h
arch/powerpc/kvm/trace_hv.h

index d92a20a..1d454c7 100644 (file)
 /* Platform specific hcalls, used by KVM */
 #define H_RTAS                 0xf000
 
+/*
+ * Platform specific hcalls, used by QEMU/SLOF. These are ignored by
+ * KVM and only kept here so we can identify them during tracing.
+ */
+#define H_LOGICAL_MEMOP  0xF001
+#define H_CAS            0XF002
+#define H_UPDATE_DT      0XF003
+
 /* "Platform specific hcalls", provided by PHYP */
 #define H_GET_24X7_CATALOG_PAGE        0xF078
 #define H_GET_24X7_DATA                0xF07C
index 2909a88..c2b0035 100644 (file)
@@ -523,7 +523,11 @@ struct kvm_vcpu_arch {
        struct kvmppc_book3s_shadow_vcpu *shadow_vcpu;
 #endif
 
-       struct pt_regs regs;
+       /*
+        * This is passed along to the HV via H_ENTER_NESTED. Align to
+        * prevent it crossing a real 4K page.
+        */
+       struct pt_regs regs __aligned(512);
 
        struct thread_fp_state fp;
 
@@ -830,11 +834,21 @@ struct kvm_vcpu_arch {
 #ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
        struct kvmhv_tb_accumulator *cur_activity;      /* What we're timing */
        u64     cur_tb_start;                   /* when it started */
+#ifdef CONFIG_KVM_BOOK3S_HV_P9_TIMING
+       struct kvmhv_tb_accumulator vcpu_entry;
+       struct kvmhv_tb_accumulator vcpu_exit;
+       struct kvmhv_tb_accumulator in_guest;
+       struct kvmhv_tb_accumulator hcall;
+       struct kvmhv_tb_accumulator pg_fault;
+       struct kvmhv_tb_accumulator guest_entry;
+       struct kvmhv_tb_accumulator guest_exit;
+#else
        struct kvmhv_tb_accumulator rm_entry;   /* real-mode entry code */
        struct kvmhv_tb_accumulator rm_intr;    /* real-mode intr handling */
        struct kvmhv_tb_accumulator rm_exit;    /* real-mode exit code */
        struct kvmhv_tb_accumulator guest_time; /* guest execution */
        struct kvmhv_tb_accumulator cede_time;  /* time napping inside guest */
+#endif
 #endif /* CONFIG_KVM_BOOK3S_HV_EXIT_TIMING */
 };
 
index eec536a..8c10f53 100644 (file)
@@ -379,7 +379,7 @@ int main(void)
        OFFSET(VCPU_SPRG2, kvm_vcpu, arch.shregs.sprg2);
        OFFSET(VCPU_SPRG3, kvm_vcpu, arch.shregs.sprg3);
 #endif
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        OFFSET(VCPU_TB_RMENTRY, kvm_vcpu, arch.rm_entry);
        OFFSET(VCPU_TB_RMINTR, kvm_vcpu, arch.rm_intr);
        OFFSET(VCPU_TB_RMEXIT, kvm_vcpu, arch.rm_exit);
index ddd8817..dcb398d 100644 (file)
@@ -128,8 +128,25 @@ config KVM_BOOK3S_64_PR
          and system calls on the host.
 
 config KVM_BOOK3S_HV_EXIT_TIMING
-       bool "Detailed timing for hypervisor real-mode code"
+       bool
+
+config KVM_BOOK3S_HV_P9_TIMING
+       bool "Detailed timing for the P9 entry point"
+       select KVM_BOOK3S_HV_EXIT_TIMING
        depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS
+       help
+         Calculate time taken for each vcpu during vcpu entry and
+         exit, time spent inside the guest and time spent handling
+         hypercalls and page faults. The total, minimum and maximum
+         times in nanoseconds together with the number of executions
+         are reported in debugfs in kvm/vm#/vcpu#/timings.
+
+         If unsure, say N.
+
+config KVM_BOOK3S_HV_P8_TIMING
+       bool "Detailed timing for hypervisor real-mode code (for POWER8)"
+       select KVM_BOOK3S_HV_EXIT_TIMING
+       depends on KVM_BOOK3S_HV_POSSIBLE && DEBUG_FS && !KVM_BOOK3S_HV_P9_TIMING
        help
          Calculate time taken for each vcpu in the real-mode guest entry,
          exit, and interrupt handling code, plus time spent in the guest
@@ -149,7 +166,7 @@ config KVM_BOOK3S_HV_NESTED_PMU_WORKAROUND
          Old nested HV capable Linux guests have a bug where they don't
          reflect the PMU in-use status of their L2 guest to the L0 host
          while the L2 PMU registers are live. This can result in loss
-          of L2 PMU register state, causing perf to not work correctly in
+         of L2 PMU register state, causing perf to not work correctly in
          L2 guests.
 
          Selecting this option for the L0 host implements a workaround for
index d6589c4..4086437 100644 (file)
@@ -307,7 +307,7 @@ long kvm_vm_ioctl_create_spapr_tce(struct kvm *kvm,
                return ret;
 
        ret = -ENOMEM;
-       stt = kzalloc(struct_size(stt, pages, npages), GFP_KERNEL);
+       stt = kzalloc(struct_size(stt, pages, npages), GFP_KERNEL | __GFP_NOWARN);
        if (!stt)
                goto fail_acct;
 
index e08fb31..c688831 100644 (file)
@@ -2660,11 +2660,21 @@ static struct debugfs_timings_element {
        const char *name;
        size_t offset;
 } timings[] = {
+#ifdef CONFIG_KVM_BOOK3S_HV_P9_TIMING
+       {"vcpu_entry",  offsetof(struct kvm_vcpu, arch.vcpu_entry)},
+       {"guest_entry", offsetof(struct kvm_vcpu, arch.guest_entry)},
+       {"in_guest",    offsetof(struct kvm_vcpu, arch.in_guest)},
+       {"guest_exit",  offsetof(struct kvm_vcpu, arch.guest_exit)},
+       {"vcpu_exit",   offsetof(struct kvm_vcpu, arch.vcpu_exit)},
+       {"hypercall",   offsetof(struct kvm_vcpu, arch.hcall)},
+       {"page_fault",  offsetof(struct kvm_vcpu, arch.pg_fault)},
+#else
        {"rm_entry",    offsetof(struct kvm_vcpu, arch.rm_entry)},
        {"rm_intr",     offsetof(struct kvm_vcpu, arch.rm_intr)},
        {"rm_exit",     offsetof(struct kvm_vcpu, arch.rm_exit)},
        {"guest",       offsetof(struct kvm_vcpu, arch.guest_time)},
        {"cede",        offsetof(struct kvm_vcpu, arch.cede_time)},
+#endif
 };
 
 #define N_TIMINGS      (ARRAY_SIZE(timings))
@@ -2783,8 +2793,9 @@ static const struct file_operations debugfs_timings_ops = {
 /* Create a debugfs directory for the vcpu */
 static int kvmppc_arch_create_vcpu_debugfs_hv(struct kvm_vcpu *vcpu, struct dentry *debugfs_dentry)
 {
-       debugfs_create_file("timings", 0444, debugfs_dentry, vcpu,
-                           &debugfs_timings_ops);
+       if (cpu_has_feature(CPU_FTR_ARCH_300) == IS_ENABLED(CONFIG_KVM_BOOK3S_HV_P9_TIMING))
+               debugfs_create_file("timings", 0444, debugfs_dentry, vcpu,
+                                   &debugfs_timings_ops);
        return 0;
 }
 
@@ -4005,8 +4016,10 @@ static int kvmhv_vcpu_entry_p9_nested(struct kvm_vcpu *vcpu, u64 time_limit, uns
        mtspr(SPRN_DAR, vcpu->arch.shregs.dar);
        mtspr(SPRN_DSISR, vcpu->arch.shregs.dsisr);
        switch_pmu_to_guest(vcpu, &host_os_sprs);
+       accumulate_time(vcpu, &vcpu->arch.in_guest);
        trap = plpar_hcall_norets(H_ENTER_NESTED, __pa(&hvregs),
                                  __pa(&vcpu->arch.regs));
+       accumulate_time(vcpu, &vcpu->arch.guest_exit);
        kvmhv_restore_hv_return_state(vcpu, &hvregs);
        switch_pmu_to_host(vcpu, &host_os_sprs);
        vcpu->arch.shregs.msr = vcpu->arch.regs.msr;
@@ -4694,6 +4707,8 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
        struct kvm *kvm;
        unsigned long msr;
 
+       start_timing(vcpu, &vcpu->arch.vcpu_entry);
+
        if (!vcpu->arch.sane) {
                run->exit_reason = KVM_EXIT_INTERNAL_ERROR;
                return -EINVAL;
@@ -4759,6 +4774,7 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
        vcpu->arch.state = KVMPPC_VCPU_BUSY_IN_HOST;
 
        do {
+               accumulate_time(vcpu, &vcpu->arch.guest_entry);
                if (cpu_has_feature(CPU_FTR_ARCH_300))
                        r = kvmhv_run_single_vcpu(vcpu, ~(u64)0,
                                                  vcpu->arch.vcore->lpcr);
@@ -4766,6 +4782,8 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
                        r = kvmppc_run_vcpu(vcpu);
 
                if (run->exit_reason == KVM_EXIT_PAPR_HCALL) {
+                       accumulate_time(vcpu, &vcpu->arch.hcall);
+
                        if (WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_PR)) {
                                /*
                                 * These should have been caught reflected
@@ -4781,6 +4799,7 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
                        trace_kvm_hcall_exit(vcpu, r);
                        kvmppc_core_prepare_to_enter(vcpu);
                } else if (r == RESUME_PAGE_FAULT) {
+                       accumulate_time(vcpu, &vcpu->arch.pg_fault);
                        srcu_idx = srcu_read_lock(&kvm->srcu);
                        r = kvmppc_book3s_hv_page_fault(vcpu,
                                vcpu->arch.fault_dar, vcpu->arch.fault_dsisr);
@@ -4792,12 +4811,15 @@ static int kvmppc_vcpu_run_hv(struct kvm_vcpu *vcpu)
                                r = kvmppc_xics_rm_complete(vcpu, 0);
                }
        } while (is_kvmppc_resume_guest(r));
+       accumulate_time(vcpu, &vcpu->arch.vcpu_exit);
 
        vcpu->arch.state = KVMPPC_VCPU_NOTREADY;
        atomic_dec(&kvm->arch.vcpus_running);
 
        srr_regs_clobbered();
 
+       end_timing(vcpu);
+
        return r;
 }
 
index 6b7f07d..2f2e59d 100644 (file)
@@ -40,3 +40,13 @@ void switch_pmu_to_guest(struct kvm_vcpu *vcpu,
                            struct p9_host_os_sprs *host_os_sprs);
 void switch_pmu_to_host(struct kvm_vcpu *vcpu,
                            struct p9_host_os_sprs *host_os_sprs);
+
+#ifdef CONFIG_KVM_BOOK3S_HV_P9_TIMING
+void accumulate_time(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator *next);
+#define start_timing(vcpu, next) accumulate_time(vcpu, next)
+#define end_timing(vcpu) accumulate_time(vcpu, NULL)
+#else
+#define accumulate_time(vcpu, next) do {} while (0)
+#define start_timing(vcpu, next) do {} while (0)
+#define end_timing(vcpu) do {} while (0)
+#endif
index 112a09b..e740eca 100644 (file)
@@ -437,17 +437,8 @@ void restore_p9_host_os_sprs(struct kvm_vcpu *vcpu,
 }
 EXPORT_SYMBOL_GPL(restore_p9_host_os_sprs);
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
-static void __start_timing(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator *next)
-{
-       struct kvmppc_vcore *vc = vcpu->arch.vcore;
-       u64 tb = mftb() - vc->tb_offset_applied;
-
-       vcpu->arch.cur_activity = next;
-       vcpu->arch.cur_tb_start = tb;
-}
-
-static void __accumulate_time(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator *next)
+#ifdef CONFIG_KVM_BOOK3S_HV_P9_TIMING
+void accumulate_time(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator *next)
 {
        struct kvmppc_vcore *vc = vcpu->arch.vcore;
        struct kvmhv_tb_accumulator *curr;
@@ -477,14 +468,7 @@ static void __accumulate_time(struct kvm_vcpu *vcpu, struct kvmhv_tb_accumulator
        smp_wmb();
        curr->seqcount = seq + 2;
 }
-
-#define start_timing(vcpu, next) __start_timing(vcpu, next)
-#define end_timing(vcpu) __start_timing(vcpu, NULL)
-#define accumulate_time(vcpu, next) __accumulate_time(vcpu, next)
-#else
-#define start_timing(vcpu, next) do {} while (0)
-#define end_timing(vcpu) do {} while (0)
-#define accumulate_time(vcpu, next) do {} while (0)
+EXPORT_SYMBOL_GPL(accumulate_time);
 #endif
 
 static inline u64 mfslbv(unsigned int idx)
@@ -795,8 +779,6 @@ int kvmhv_vcpu_entry_p9(struct kvm_vcpu *vcpu, u64 time_limit, unsigned long lpc
        WARN_ON_ONCE(vcpu->arch.shregs.msr & MSR_HV);
        WARN_ON_ONCE(!(vcpu->arch.shregs.msr & MSR_ME));
 
-       start_timing(vcpu, &vcpu->arch.rm_entry);
-
        vcpu->arch.ceded = 0;
 
        /* Save MSR for restore, with EE clear. */
@@ -957,13 +939,13 @@ tm_return_to_guest:
        mtspr(SPRN_SRR0, vcpu->arch.shregs.srr0);
        mtspr(SPRN_SRR1, vcpu->arch.shregs.srr1);
 
-       accumulate_time(vcpu, &vcpu->arch.guest_time);
-
        switch_pmu_to_guest(vcpu, &host_os_sprs);
+       accumulate_time(vcpu, &vcpu->arch.in_guest);
+
        kvmppc_p9_enter_guest(vcpu);
-       switch_pmu_to_host(vcpu, &host_os_sprs);
 
-       accumulate_time(vcpu, &vcpu->arch.rm_intr);
+       accumulate_time(vcpu, &vcpu->arch.guest_exit);
+       switch_pmu_to_host(vcpu, &host_os_sprs);
 
        /* XXX: Could get these from r11/12 and paca exsave instead */
        vcpu->arch.shregs.srr0 = mfspr(SPRN_SRR0);
@@ -1058,8 +1040,6 @@ tm_return_to_guest:
 #endif
        }
 
-       accumulate_time(vcpu, &vcpu->arch.rm_exit);
-
        /* Advance host PURR/SPURR by the amount used by guest */
        purr = mfspr(SPRN_PURR);
        spurr = mfspr(SPRN_SPURR);
@@ -1166,8 +1146,6 @@ tm_return_to_guest:
                asm volatile(PPC_CP_ABORT);
 
 out:
-       end_timing(vcpu);
-
        return trap;
 }
 EXPORT_SYMBOL_GPL(kvmhv_vcpu_entry_p9);
index 0fc0e68..7ded202 100644 (file)
@@ -237,14 +237,14 @@ kvm_novcpu_wakeup:
        cmpdi   r4, 0
        beq     kvmppc_primary_no_guest
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        addi    r3, r4, VCPU_TB_RMENTRY
        bl      kvmhv_start_timing
 #endif
        b       kvmppc_got_guest
 
 kvm_novcpu_exit:
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        ld      r4, HSTATE_KVM_VCPU(r13)
        cmpdi   r4, 0
        beq     13f
@@ -523,7 +523,7 @@ kvmppc_hv_entry:
        li      r6, KVM_GUEST_MODE_HOST_HV
        stb     r6, HSTATE_IN_GUEST(r13)
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        /* Store initial timestamp */
        cmpdi   r4, 0
        beq     1f
@@ -894,7 +894,7 @@ fast_guest_return:
        li      r9, KVM_GUEST_MODE_GUEST_HV
        stb     r9, HSTATE_IN_GUEST(r13)
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        /* Accumulate timing */
        addi    r3, r4, VCPU_TB_GUEST
        bl      kvmhv_accumulate_time
@@ -945,7 +945,7 @@ secondary_too_late:
        cmpdi   r4, 0
        beq     11f
        stw     r12, VCPU_TRAP(r4)
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        addi    r3, r4, VCPU_TB_RMEXIT
        bl      kvmhv_accumulate_time
 #endif
@@ -959,7 +959,7 @@ hdec_soon:
        li      r12, BOOK3S_INTERRUPT_HV_DECREMENTER
 12:    stw     r12, VCPU_TRAP(r4)
        mr      r9, r4
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        addi    r3, r4, VCPU_TB_RMEXIT
        bl      kvmhv_accumulate_time
 #endif
@@ -1056,7 +1056,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
        li      r0, MSR_RI
        mtmsrd  r0, 1
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        addi    r3, r9, VCPU_TB_RMINTR
        mr      r4, r9
        bl      kvmhv_accumulate_time
@@ -1135,7 +1135,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_HAS_PPR)
 
 guest_exit_cont:               /* r9 = vcpu, r12 = trap, r13 = paca */
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        addi    r3, r9, VCPU_TB_RMEXIT
        mr      r4, r9
        bl      kvmhv_accumulate_time
@@ -1495,7 +1495,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_207S)
        mtspr   SPRN_LPCR,r8
        isync
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        /* Finish timing, if we have a vcpu */
        ld      r4, HSTATE_KVM_VCPU(r13)
        cmpdi   r4, 0
@@ -2153,7 +2153,7 @@ END_FTR_SECTION_IFCLR(CPU_FTR_TM)
        ld      r4, HSTATE_KVM_VCPU(r13)
        std     r3, VCPU_DEC_EXPIRES(r4)
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        ld      r4, HSTATE_KVM_VCPU(r13)
        addi    r3, r4, VCPU_TB_CEDE
        bl      kvmhv_accumulate_time
@@ -2221,7 +2221,7 @@ kvm_end_cede:
        /* get vcpu pointer */
        ld      r4, HSTATE_KVM_VCPU(r13)
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
        addi    r3, r4, VCPU_TB_RMINTR
        bl      kvmhv_accumulate_time
 #endif
@@ -2961,7 +2961,7 @@ kvmppc_fix_pmao:
        isync
        blr
 
-#ifdef CONFIG_KVM_BOOK3S_HV_EXIT_TIMING
+#ifdef CONFIG_KVM_BOOK3S_HV_P8_TIMING
 /*
  * Start timing an activity
  * r3 = pointer to time accumulation struct, r4 = vcpu
index 8e4c79e..08fb084 100644 (file)
@@ -143,6 +143,7 @@ static inline struct kvmppc_ics *kvmppc_xics_find_ics(struct kvmppc_xics *xics,
 }
 
 extern unsigned long xics_rm_h_xirr(struct kvm_vcpu *vcpu);
+extern unsigned long xics_rm_h_xirr_x(struct kvm_vcpu *vcpu);
 extern int xics_rm_h_ipi(struct kvm_vcpu *vcpu, unsigned long server,
                         unsigned long mfrr);
 extern int xics_rm_h_cppr(struct kvm_vcpu *vcpu, unsigned long cppr);
index 32e2cb5..8d57c84 100644 (file)
@@ -94,6 +94,7 @@
        {H_GET_HCA_INFO,                "H_GET_HCA_INFO"}, \
        {H_GET_PERF_COUNT,              "H_GET_PERF_COUNT"}, \
        {H_MANAGE_TRACE,                "H_MANAGE_TRACE"}, \
+       {H_GET_CPU_CHARACTERISTICS,     "H_GET_CPU_CHARACTERISTICS"}, \
        {H_FREE_LOGICAL_LAN_BUFFER,     "H_FREE_LOGICAL_LAN_BUFFER"}, \
        {H_QUERY_INT_STATE,             "H_QUERY_INT_STATE"}, \
        {H_POLL_PENDING,                "H_POLL_PENDING"}, \
        {H_COP,                         "H_COP"}, \
        {H_GET_MPP_X,                   "H_GET_MPP_X"}, \
        {H_SET_MODE,                    "H_SET_MODE"}, \
-       {H_RTAS,                        "H_RTAS"}
+       {H_REGISTER_PROC_TBL,           "H_REGISTER_PROC_TBL"}, \
+       {H_QUERY_VAS_CAPABILITIES,      "H_QUERY_VAS_CAPABILITIES"}, \
+       {H_INT_GET_SOURCE_INFO,         "H_INT_GET_SOURCE_INFO"}, \
+       {H_INT_SET_SOURCE_CONFIG,       "H_INT_SET_SOURCE_CONFIG"}, \
+       {H_INT_GET_QUEUE_INFO,          "H_INT_GET_QUEUE_INFO"}, \
+       {H_INT_SET_QUEUE_CONFIG,        "H_INT_SET_QUEUE_CONFIG"}, \
+       {H_INT_ESB,                     "H_INT_ESB"}, \
+       {H_INT_RESET,                   "H_INT_RESET"}, \
+       {H_RPT_INVALIDATE,              "H_RPT_INVALIDATE"}, \
+       {H_RTAS,                        "H_RTAS"}, \
+       {H_LOGICAL_MEMOP,               "H_LOGICAL_MEMOP"}, \
+       {H_CAS,                         "H_CAS"}, \
+       {H_UPDATE_DT,                   "H_UPDATE_DT"}, \
+       {H_GET_PERF_COUNTER_INFO,       "H_GET_PERF_COUNTER_INFO"}, \
+       {H_SET_PARTITION_TABLE,         "H_SET_PARTITION_TABLE"}, \
+       {H_ENTER_NESTED,                "H_ENTER_NESTED"}, \
+       {H_TLB_INVALIDATE,              "H_TLB_INVALIDATE"}, \
+       {H_COPY_TOFROM_GUEST,           "H_COPY_TOFROM_GUEST"}
+
 
 #define kvm_trace_symbol_kvmret \
        {RESUME_GUEST,                  "RESUME_GUEST"}, \