INVPCID, INVVPID, and INVEPT instructions retrieve the GPR index similarly to find the invalidation type. Patch 1 moves the shift and mask magic to a single place. INVPCID invalidation type check is same for both VMX and SVM. This instruction is not documented to verify the type before reading the operand from memory. So, moving the check to a common place in patch 2. v4: - Changed commit message of the patch 1 v3: - https://lore.kernel.org/lkml/20211103205911.1253463-1-vipinsh@xxxxxxxxxx/ - Patch 2's commit message is more detailed now. v2: - https://lore.kernel.org/lkml/20211103183232.1213761-1-vipinsh@xxxxxxxxxx/ - Keeping the register read visible in the functions. - Removed INVPCID type check hardcoding and moved error condition to common function. v1: https://lore.kernel.org/lkml/20211011194615.2955791-1-vipinsh@xxxxxxxxxx/ Vipin Sharma (2): KVM: VMX: Add a helper function to retrieve the GPR index for INVPCID, INVVPID, and INVEPT KVM: Move INVPCID type check from vmx and svm to the common kvm_handle_invpcid() arch/x86/kvm/svm/svm.c | 5 ----- arch/x86/kvm/vmx/nested.c | 10 ++++++---- arch/x86/kvm/vmx/vmx.c | 9 +++------ arch/x86/kvm/vmx/vmx.h | 5 +++++ arch/x86/kvm/x86.c | 3 ++- 5 files changed, 16 insertions(+), 16 deletions(-) -- 2.34.0.rc0.344.g81b53c2807-goog