return vmx_get_interrupt_shadow(vcpu);
 }
 
+static void vt_patch_hypercall(struct kvm_vcpu *vcpu,
+                                 unsigned char *hypercall)
+{
+       /*
+        * Because guest memory is protected, guest can't be patched. TD kernel
+        * is modified to use TDG.VP.VMCALL for hypercall.
+        */
+       if (is_td_vcpu(vcpu))
+               return;
+
+       vmx_patch_hypercall(vcpu, hypercall);
+}
+
 static void vt_inject_irq(struct kvm_vcpu *vcpu, bool reinjected)
 {
        if (is_td_vcpu(vcpu))
        .update_emulated_instruction = vmx_update_emulated_instruction,
        .set_interrupt_shadow = vt_set_interrupt_shadow,
        .get_interrupt_shadow = vt_get_interrupt_shadow,
-       .patch_hypercall = vmx_patch_hypercall,
+       .patch_hypercall = vt_patch_hypercall,
        .inject_irq = vt_inject_irq,
        .inject_nmi = vt_inject_nmi,
        .inject_exception = vt_inject_exception,