Message ID | 20191104230001.27774-11-aarcange@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | KVM monolithic v3 | expand |
On 04/11/19 23:59, Andrea Arcangeli wrote: > Eliminate wasteful call/ret non RETPOLINE case and unnecessary fentry > dynamic tracing hooking points. > > Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> > --- > arch/x86/kvm/vmx/vmx.c | 30 +++++------------------------- > 1 file changed, 5 insertions(+), 25 deletions(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 222467b2040e..a6afa5f4a01c 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -4694,7 +4694,7 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu) > return 0; > } > > -static int handle_external_interrupt(struct kvm_vcpu *vcpu) > +static __always_inline int handle_external_interrupt(struct kvm_vcpu *vcpu) > { > ++vcpu->stat.irq_exits; > return 1; > @@ -4965,21 +4965,6 @@ void kvm_x86_set_dr7(struct kvm_vcpu *vcpu, unsigned long val) > vmcs_writel(GUEST_DR7, val); > } > > -static int handle_cpuid(struct kvm_vcpu *vcpu) > -{ > - return kvm_emulate_cpuid(vcpu); > -} > - > -static int handle_rdmsr(struct kvm_vcpu *vcpu) > -{ > - return kvm_emulate_rdmsr(vcpu); > -} > - > -static int handle_wrmsr(struct kvm_vcpu *vcpu) > -{ > - return kvm_emulate_wrmsr(vcpu); > -} > - > static int handle_tpr_below_threshold(struct kvm_vcpu *vcpu) > { > kvm_apic_update_ppr(vcpu); > @@ -4996,11 +4981,6 @@ static int handle_interrupt_window(struct kvm_vcpu *vcpu) > return 1; > } > > -static int handle_halt(struct kvm_vcpu *vcpu) > -{ > - return kvm_emulate_halt(vcpu); > -} > - > static int handle_vmcall(struct kvm_vcpu *vcpu) > { > return kvm_emulate_hypercall(vcpu); > @@ -5548,11 +5528,11 @@ static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu) = { > [EXIT_REASON_IO_INSTRUCTION] = handle_io, > [EXIT_REASON_CR_ACCESS] = handle_cr, > [EXIT_REASON_DR_ACCESS] = handle_dr, > - [EXIT_REASON_CPUID] = handle_cpuid, > - [EXIT_REASON_MSR_READ] = handle_rdmsr, > - [EXIT_REASON_MSR_WRITE] = handle_wrmsr, > + [EXIT_REASON_CPUID] = kvm_emulate_cpuid, > + [EXIT_REASON_MSR_READ] = kvm_emulate_rdmsr, > + [EXIT_REASON_MSR_WRITE] = kvm_emulate_wrmsr, > [EXIT_REASON_PENDING_INTERRUPT] = handle_interrupt_window, > - [EXIT_REASON_HLT] = handle_halt, > + [EXIT_REASON_HLT] = kvm_emulate_halt, > [EXIT_REASON_INVD] = handle_invd, > [EXIT_REASON_INVLPG] = handle_invlpg, > [EXIT_REASON_RDPMC] = handle_rdpmc, > Queued, thanks. Paolo
diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c index 222467b2040e..a6afa5f4a01c 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c @@ -4694,7 +4694,7 @@ static int handle_exception_nmi(struct kvm_vcpu *vcpu) return 0; } -static int handle_external_interrupt(struct kvm_vcpu *vcpu) +static __always_inline int handle_external_interrupt(struct kvm_vcpu *vcpu) { ++vcpu->stat.irq_exits; return 1; @@ -4965,21 +4965,6 @@ void kvm_x86_set_dr7(struct kvm_vcpu *vcpu, unsigned long val) vmcs_writel(GUEST_DR7, val); } -static int handle_cpuid(struct kvm_vcpu *vcpu) -{ - return kvm_emulate_cpuid(vcpu); -} - -static int handle_rdmsr(struct kvm_vcpu *vcpu) -{ - return kvm_emulate_rdmsr(vcpu); -} - -static int handle_wrmsr(struct kvm_vcpu *vcpu) -{ - return kvm_emulate_wrmsr(vcpu); -} - static int handle_tpr_below_threshold(struct kvm_vcpu *vcpu) { kvm_apic_update_ppr(vcpu); @@ -4996,11 +4981,6 @@ static int handle_interrupt_window(struct kvm_vcpu *vcpu) return 1; } -static int handle_halt(struct kvm_vcpu *vcpu) -{ - return kvm_emulate_halt(vcpu); -} - static int handle_vmcall(struct kvm_vcpu *vcpu) { return kvm_emulate_hypercall(vcpu); @@ -5548,11 +5528,11 @@ static int (*kvm_vmx_exit_handlers[])(struct kvm_vcpu *vcpu) = { [EXIT_REASON_IO_INSTRUCTION] = handle_io, [EXIT_REASON_CR_ACCESS] = handle_cr, [EXIT_REASON_DR_ACCESS] = handle_dr, - [EXIT_REASON_CPUID] = handle_cpuid, - [EXIT_REASON_MSR_READ] = handle_rdmsr, - [EXIT_REASON_MSR_WRITE] = handle_wrmsr, + [EXIT_REASON_CPUID] = kvm_emulate_cpuid, + [EXIT_REASON_MSR_READ] = kvm_emulate_rdmsr, + [EXIT_REASON_MSR_WRITE] = kvm_emulate_wrmsr, [EXIT_REASON_PENDING_INTERRUPT] = handle_interrupt_window, - [EXIT_REASON_HLT] = handle_halt, + [EXIT_REASON_HLT] = kvm_emulate_halt, [EXIT_REASON_INVD] = handle_invd, [EXIT_REASON_INVLPG] = handle_invlpg, [EXIT_REASON_RDPMC] = handle_rdpmc,
Eliminate wasteful call/ret non RETPOLINE case and unnecessary fentry dynamic tracing hooking points. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> --- arch/x86/kvm/vmx/vmx.c | 30 +++++------------------------- 1 file changed, 5 insertions(+), 25 deletions(-)