static int kvm_pi_update_irte(struct kvm_kernel_irqfd *irqfd,
                              struct kvm_kernel_irq_routing_entry *entry)
 {
+       unsigned int host_irq = irqfd->producer->irq;
        struct kvm *kvm = irqfd->kvm;
        struct kvm_vcpu *vcpu = NULL;
        struct kvm_lapic_irq irq;
+       int r;
 
        if (!irqchip_in_kernel(kvm) ||
            !kvm_arch_has_irq_bypass() ||
                        vcpu = NULL;
        }
 
-       return kvm_x86_call(pi_update_irte)(irqfd, irqfd->kvm, irqfd->producer->irq,
-                                           irqfd->gsi, vcpu, irq.vector);
+       r = kvm_x86_call(pi_update_irte)(irqfd, irqfd->kvm, host_irq, irqfd->gsi,
+                                        vcpu, irq.vector);
+       if (r)
+               return r;
+
+       trace_kvm_pi_irte_update(host_irq, vcpu, irqfd->gsi, irq.vector, !!vcpu);
+       return 0;
 }
 
 int kvm_arch_irq_bypass_add_producer(struct irq_bypass_consumer *cons,
 
        spin_unlock_irq(&kvm->irqfds.lock);
 
+
        kvm_arch_end_assignment(irqfd->kvm);
 }
 
 
         */
        svm_ir_list_del(irqfd);
 
-       pr_debug("SVM: %s: host_irq=%#x, guest_irq=%#x, set=%#x\n",
-                __func__, host_irq, guest_irq, !!vcpu);
-
        /**
         * Here, we setup with legacy mode in the following cases:
         * 1. When cannot target interrupt to a specific vcpu.
                 */
                if (!ret)
                        ret = svm_ir_list_add(to_svm(vcpu), irqfd, &pi);
-
-               trace_kvm_pi_irte_update(host_irq, vcpu->vcpu_id, guest_irq,
-                                        vector, vcpu_info.pi_desc_addr, true);
        } else {
                ret = irq_set_vcpu_affinity(host_irq, NULL);
        }
 
  * Tracepoint for VT-d posted-interrupts and AMD-Vi Guest Virtual APIC.
  */
 TRACE_EVENT(kvm_pi_irte_update,
-       TP_PROTO(unsigned int host_irq, unsigned int vcpu_id,
-                unsigned int gsi, unsigned int gvec,
-                u64 pi_desc_addr, bool set),
-       TP_ARGS(host_irq, vcpu_id, gsi, gvec, pi_desc_addr, set),
+       TP_PROTO(unsigned int host_irq, struct kvm_vcpu *vcpu,
+                unsigned int gsi, unsigned int gvec, bool set),
+       TP_ARGS(host_irq, vcpu, gsi, gvec, set),
 
        TP_STRUCT__entry(
                __field(        unsigned int,   host_irq        )
-               __field(        unsigned int,   vcpu_id         )
+               __field(        int,            vcpu_id         )
                __field(        unsigned int,   gsi             )
                __field(        unsigned int,   gvec            )
-               __field(        u64,            pi_desc_addr    )
                __field(        bool,           set             )
        ),
 
        TP_fast_assign(
                __entry->host_irq       = host_irq;
-               __entry->vcpu_id        = vcpu_id;
+               __entry->vcpu_id        = vcpu ? vcpu->vcpu_id : -1;
                __entry->gsi            = gsi;
                __entry->gvec           = gvec;
-               __entry->pi_desc_addr   = pi_desc_addr;
                __entry->set            = set;
        ),
 
-       TP_printk("PI is %s for irq %u, vcpu %u, gsi: 0x%x, "
-                 "gvec: 0x%x, pi_desc_addr: 0x%llx",
+       TP_printk("PI is %s for irq %u, vcpu %d, gsi: 0x%x, gvec: 0x%x",
                  __entry->set ? "enabled and being updated" : "disabled",
                  __entry->host_irq,
                  __entry->vcpu_id,
                  __entry->gsi,
-                 __entry->gvec,
-                 __entry->pi_desc_addr)
+                 __entry->gvec)
 );
 
 /*
 
                        .vector = vector,
                };
 
-               trace_kvm_pi_irte_update(host_irq, vcpu->vcpu_id, guest_irq,
-                                        vcpu_info.vector, vcpu_info.pi_desc_addr, true);
-
                return irq_set_vcpu_affinity(host_irq, &vcpu_info);
        } else {
                return irq_set_vcpu_affinity(host_irq, NULL);
 
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_write_tsc_offset);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_ple_window_update);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_pml_full);
-EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_pi_irte_update);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_unaccelerated_access);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_incomplete_ipi);
 EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_avic_ga_log);