summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2011-04-21 12:35:41 +0300
committerAvi Kivity <avi@redhat.com>2011-05-22 08:39:37 -0400
commit40e19b519caeb93def89c45082d776fccfb96dbb (patch)
tree1f513c1a623ec94fd7bf13e01a7edc3e4a57b9a1
parent5ef39c71d8398115245a5974b488f8703ba3a6b0 (diff)
KVM: SVM: Get rid of x86_intercept_map::valid
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>
-rw-r--r--arch/x86/include/asm/kvm_emulate.h1
-rw-r--r--arch/x86/kvm/svm.c12
2 files changed, 5 insertions, 8 deletions
diff --git a/arch/x86/include/asm/kvm_emulate.h b/arch/x86/include/asm/kvm_emulate.h
index 127ea3e17171..28114f581fa3 100644
--- a/arch/x86/include/asm/kvm_emulate.h
+++ b/arch/x86/include/asm/kvm_emulate.h
@@ -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,
diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c
index de4bba99160d..9cff0368e1fc 100644
--- a/arch/x86/kvm/svm.c
+++ b/arch/x86/kvm/svm.c
@@ -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) {