]> Pileus Git - ~andy/linux/commitdiff
KVM: SVM: Get rid of x86_intercept_map::valid
authorAvi Kivity <avi@redhat.com>
Thu, 21 Apr 2011 09:35:41 +0000 (12:35 +0300)
committerAvi Kivity <avi@redhat.com>
Sun, 22 May 2011 12:39:37 +0000 (08:39 -0400)
By reserving 0 as an invalid x86_intercept_stage, we no longer
need to store a valid flag in x86_intercept_map.

Signed-off-by: Avi Kivity <avi@redhat.com>
arch/x86/include/asm/kvm_emulate.h
arch/x86/kvm/svm.c

index 127ea3e1717147f430830eab4e7f429c33884585..28114f581fa324a2de3311aa7f554100f8f76948 100644 (file)
@@ -304,6 +304,7 @@ struct x86_emulate_ctxt {
                               X86EMUL_MODE_PROT64)
 
 enum x86_intercept_stage {
+       X86_ICTP_NONE = 0,   /* Allow zero-init to not match anything */
        X86_ICPT_PRE_EXCEPT,
        X86_ICPT_POST_EXCEPT,
        X86_ICPT_POST_MEMACCESS,
index de4bba99160db2b74362a4b8be0ca89e0e63bdd2..9cff0368e1fcc9f6bf7f0958d7178b764ea1d470 100644 (file)
@@ -3959,19 +3959,15 @@ static void svm_fpu_deactivate(struct kvm_vcpu *vcpu)
 }
 
 #define PRE_EX(exit)  { .exit_code = (exit), \
-                       .stage = X86_ICPT_PRE_EXCEPT, \
-                       .valid = true }
+                       .stage = X86_ICPT_PRE_EXCEPT, }
 #define POST_EX(exit) { .exit_code = (exit), \
-                       .stage = X86_ICPT_POST_EXCEPT, \
-                       .valid = true }
+                       .stage = X86_ICPT_POST_EXCEPT, }
 #define POST_MEM(exit) { .exit_code = (exit), \
-                        .stage = X86_ICPT_POST_MEMACCESS, \
-                        .valid = true }
+                       .stage = X86_ICPT_POST_MEMACCESS, }
 
 static struct __x86_intercept {
        u32 exit_code;
        enum x86_intercept_stage stage;
-       bool valid;
 } x86_intercept_map[] = {
        [x86_intercept_cr_read]         = POST_EX(SVM_EXIT_READ_CR0),
        [x86_intercept_cr_write]        = POST_EX(SVM_EXIT_WRITE_CR0),
@@ -4039,7 +4035,7 @@ static int svm_check_intercept(struct kvm_vcpu *vcpu,
 
        icpt_info = x86_intercept_map[info->intercept];
 
-       if (!icpt_info.valid || stage != icpt_info.stage)
+       if (stage != icpt_info.stage)
                goto out;
 
        switch (icpt_info.exit_code) {