From: Sean Christopherson <sean.j.christopher...@intel.com>

Signed-off-by: Sean Christopherson <sean.j.christopher...@intel.com>
---
 arch/x86/include/asm/kvm_host.h |  2 ++
 arch/x86/kvm/x86.c              | 12 ++++++++++++
 2 files changed, 14 insertions(+)

diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h
index 01c78eeefef4..32e995327944 100644
--- a/arch/x86/include/asm/kvm_host.h
+++ b/arch/x86/include/asm/kvm_host.h
@@ -1276,7 +1276,9 @@ struct kvm_x86_ops {
        int (*pre_leave_smm)(struct kvm_vcpu *vcpu, const char *smstate);
        void (*enable_smi_window)(struct kvm_vcpu *vcpu);
 
+       int (*mem_enc_op_dev)(void __user *argp);
        int (*mem_enc_op)(struct kvm *kvm, void __user *argp);
+       int (*mem_enc_op_vcpu)(struct kvm_vcpu *vcpu, void __user *argp);
        int (*mem_enc_reg_region)(struct kvm *kvm, struct kvm_enc_region *argp);
        int (*mem_enc_unreg_region)(struct kvm *kvm, struct kvm_enc_region 
*argp);
 
diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c
index 22e956f01ddc..7b8bbdc98492 100644
--- a/arch/x86/kvm/x86.c
+++ b/arch/x86/kvm/x86.c
@@ -3882,6 +3882,12 @@ long kvm_arch_dev_ioctl(struct file *filp,
        case KVM_GET_MSRS:
                r = msr_io(NULL, argp, do_get_msr_feature, 1);
                break;
+       case KVM_MEMORY_ENCRYPT_OP:
+               r = -EINVAL;
+               if (!kvm_x86_ops.mem_enc_op_dev)
+                       goto out;
+               r = kvm_x86_ops.mem_enc_op_dev(argp);
+               break;
        default:
                r = -EINVAL;
                break;
@@ -5020,6 +5026,12 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
                r = 0;
                break;
        }
+       case KVM_MEMORY_ENCRYPT_OP:
+               r = -EINVAL;
+               if (!kvm_x86_ops.mem_enc_op_vcpu)
+                       goto out;
+               r = kvm_x86_ops.mem_enc_op_vcpu(vcpu, argp);
+               break;
        default:
                r = -EINVAL;
        }
-- 
2.17.1

Reply via email to