On 4/21/2023 4:36 PM, Chao Gao wrote:
On Fri, Apr 21, 2023 at 03:57:15PM +0800, Binbin Wu wrote:
--- a/arch/x86/kvm/emulate.c
+++ b/arch/x86/kvm/emulate.c
@@ -688,7 +688,8 @@ static __always_inline int __linearize(struct x86_emulate_ctxt *ctxt,
struct segmented_address addr,
unsigned *max_size, unsigned size,
bool write, bool fetch,
- enum x86emul_mode mode, ulong *linear)
+ enum x86emul_mode mode, ulong *linear,
+ u64 untag_flags)
@write and @fetch are like flags. I think we can consolidate them into
the @flags first as a cleanup patch and then add a flag for LAM.
OK. Here is the proposed cleanup patch:
looks good to me
--- a/arch/x86/kvm/x86.h
+++ b/arch/x86/kvm/x86.h
@@ -48,6 +48,15 @@ void kvm_spurious_fault(void);
#define KVM_SVM_DEFAULT_PLE_WINDOW_MAX USHRT_MAX
#define KVM_SVM_DEFAULT_PLE_WINDOW 3000
+/* x86-specific emulation flags */
+#define KVM_X86_EMULFLAG_FETCH _BITULL(0)
+#define KVM_X86_EMULFLAG_WRITE _BITULL(1)
Can we move the definitions to arch/x86/kvm/kvm_emulate.h?
Then, the flags needs to be removed from .untag_addr() interface since
currently
KVM_X86_EMULFLAG_SKIP_UNTAG_VMX is used in vmx. :(
And the following two will be defined for untag:
#define KVM_X86_EMULFLAG_SKIP_UNTAG_VMX _BITULL(2)
#define KVM_X86_EMULFLAG_SKIP_UNTAG_SVM _BITULL(3) /* reserved for SVM */