• Andrea Arcangeli's avatar
    x86: retpolines: eliminate retpoline from msr event handlers · 74c504a6
    Andrea Arcangeli authored
    It's enough to check the value and issue the direct call.
    
    After this commit is applied, here the most common retpolines executed
    under a high resolution timer workload in the guest on a VMX host:
    
    [..]
    @[
        trace_retpoline+1
        __trace_retpoline+30
        __x86_indirect_thunk_rax+33
        do_syscall_64+89
        entry_SYSCALL_64_after_hwframe+68
    ]: 267
    @[]: 2256
    @[
        trace_retpoline+1
        __trace_retpoline+30
        __x86_indirect_thunk_rax+33
        __kvm_wait_lapic_expire+284
        vmx_vcpu_run.part.97+1091
        vcpu_enter_guest+377
        kvm_arch_vcpu_ioctl_run+261
        kvm_vcpu_ioctl+559
        do_vfs_ioctl+164
        ksys_ioctl+96
        __x64_sys_ioctl+22
        do_syscall_64+89
        entry_SYSCALL_64_after_hwframe+68
    ]: 2390
    @[]: 33410
    
    @total: 315707
    
    Note the highest hit above is __delay so probably not worth optimizing
    even if it would be more frequent than 2k hits per sec.
    Signed-off-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    74c504a6
core.c 145 KB