mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-10 15:58:47 +00:00
x86: svm: use cr_interception for SVM_EXIT_CR0_SEL_WRITE
Another patch in my war on emulate_on_interception() use as a svm exit handler. These were pulled out of a larger patch at the suggestion of Radim Krcmar, see https://lkml.org/lkml/2015/2/25/559 Changes since v1: * fixed typo introduced after test, retested Signed-off-by: David Kaplan <david.kaplan@amd.com> [separated out just cr_interception part from larger removal of INTERCEPT_CR0_WRITE, forward ported, tested] Signed-off-by: Joel Schopp <joel.schopp@amd.com> Reviewed-by: Radim Krčmář <rkrcmar@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
parent
2b25385761
commit
5e57518d99
@ -2944,7 +2944,10 @@ static int cr_interception(struct vcpu_svm *svm)
|
||||
return emulate_on_interception(svm);
|
||||
|
||||
reg = svm->vmcb->control.exit_info_1 & SVM_EXITINFO_REG_MASK;
|
||||
cr = svm->vmcb->control.exit_code - SVM_EXIT_READ_CR0;
|
||||
if (svm->vmcb->control.exit_code == SVM_EXIT_CR0_SEL_WRITE)
|
||||
cr = SVM_EXIT_WRITE_CR0 - SVM_EXIT_READ_CR0;
|
||||
else
|
||||
cr = svm->vmcb->control.exit_code - SVM_EXIT_READ_CR0;
|
||||
|
||||
err = 0;
|
||||
if (cr >= 16) { /* mov to cr */
|
||||
@ -3328,7 +3331,7 @@ static int (*const svm_exit_handlers[])(struct vcpu_svm *svm) = {
|
||||
[SVM_EXIT_READ_CR3] = cr_interception,
|
||||
[SVM_EXIT_READ_CR4] = cr_interception,
|
||||
[SVM_EXIT_READ_CR8] = cr_interception,
|
||||
[SVM_EXIT_CR0_SEL_WRITE] = emulate_on_interception,
|
||||
[SVM_EXIT_CR0_SEL_WRITE] = cr_interception,
|
||||
[SVM_EXIT_WRITE_CR0] = cr_interception,
|
||||
[SVM_EXIT_WRITE_CR3] = cr_interception,
|
||||
[SVM_EXIT_WRITE_CR4] = cr_interception,
|
||||
|
Loading…
x
Reference in New Issue
Block a user