Skip to content

Commit b265ee7

Browse files
aiksean-jc
authored andcommitted
KVM: SEV: move set_dr_intercepts/clr_dr_intercepts from the header
Static functions set_dr_intercepts() and clr_dr_intercepts() are only called from SVM so move them to .c. No functional change intended. Signed-off-by: Alexey Kardashevskiy <aik@amd.com> Reviewed-by: Carlos Bilbao <carlos.bilbao@amd.com> Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> Reviewed-by: Santosh Shukla <santosh.shukla@amd.com> Link: https://lore.kernel.org/r/20230615063757.3039121-2-aik@amd.com Signed-off-by: Sean Christopherson <seanjc@google.com>
1 parent fdf0eaf commit b265ee7

File tree

2 files changed

+42
-42
lines changed

2 files changed

+42
-42
lines changed

arch/x86/kvm/svm/svm.c

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,48 @@ static int svm_cpu_init(int cpu)
677677

678678
}
679679

680+
static void set_dr_intercepts(struct vcpu_svm *svm)
681+
{
682+
struct vmcb *vmcb = svm->vmcb01.ptr;
683+
684+
if (!sev_es_guest(svm->vcpu.kvm)) {
685+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR0_READ);
686+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR1_READ);
687+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR2_READ);
688+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR3_READ);
689+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR4_READ);
690+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR5_READ);
691+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR6_READ);
692+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR0_WRITE);
693+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR1_WRITE);
694+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR2_WRITE);
695+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR3_WRITE);
696+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR4_WRITE);
697+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR5_WRITE);
698+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR6_WRITE);
699+
}
700+
701+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_READ);
702+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_WRITE);
703+
704+
recalc_intercepts(svm);
705+
}
706+
707+
static void clr_dr_intercepts(struct vcpu_svm *svm)
708+
{
709+
struct vmcb *vmcb = svm->vmcb01.ptr;
710+
711+
vmcb->control.intercepts[INTERCEPT_DR] = 0;
712+
713+
/* DR7 access must remain intercepted for an SEV-ES guest */
714+
if (sev_es_guest(svm->vcpu.kvm)) {
715+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_READ);
716+
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_WRITE);
717+
}
718+
719+
recalc_intercepts(svm);
720+
}
721+
680722
static int direct_access_msr_slot(u32 msr)
681723
{
682724
u32 i;

arch/x86/kvm/svm/svm.h

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -404,48 +404,6 @@ static inline bool vmcb12_is_intercept(struct vmcb_ctrl_area_cached *control, u3
404404
return test_bit(bit, (unsigned long *)&control->intercepts);
405405
}
406406

407-
static inline void set_dr_intercepts(struct vcpu_svm *svm)
408-
{
409-
struct vmcb *vmcb = svm->vmcb01.ptr;
410-
411-
if (!sev_es_guest(svm->vcpu.kvm)) {
412-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR0_READ);
413-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR1_READ);
414-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR2_READ);
415-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR3_READ);
416-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR4_READ);
417-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR5_READ);
418-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR6_READ);
419-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR0_WRITE);
420-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR1_WRITE);
421-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR2_WRITE);
422-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR3_WRITE);
423-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR4_WRITE);
424-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR5_WRITE);
425-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR6_WRITE);
426-
}
427-
428-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_READ);
429-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_WRITE);
430-
431-
recalc_intercepts(svm);
432-
}
433-
434-
static inline void clr_dr_intercepts(struct vcpu_svm *svm)
435-
{
436-
struct vmcb *vmcb = svm->vmcb01.ptr;
437-
438-
vmcb->control.intercepts[INTERCEPT_DR] = 0;
439-
440-
/* DR7 access must remain intercepted for an SEV-ES guest */
441-
if (sev_es_guest(svm->vcpu.kvm)) {
442-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_READ);
443-
vmcb_set_intercept(&vmcb->control, INTERCEPT_DR7_WRITE);
444-
}
445-
446-
recalc_intercepts(svm);
447-
}
448-
449407
static inline void set_exception_intercept(struct vcpu_svm *svm, u32 bit)
450408
{
451409
struct vmcb *vmcb = svm->vmcb01.ptr;

0 commit comments

Comments
 (0)