• Amit Shah's avatar
    KVM: SVM: let alternatives handle the cases when RSB filling is required · 4440337a
    Amit Shah authored
    Remove superfluous RSB filling after a VMEXIT when the CPU already has
    flushed the RSB after a VMEXIT when AutoIBRS is enabled.
    
    The initial implementation for adding RETPOLINES added an ALTERNATIVES
    implementation for filling the RSB after a VMEXIT in commit 117cc7a9
    ("x86/retpoline: Fill return stack buffer on vmexit").
    
    Later, X86_FEATURE_RSB_VMEXIT was added in commit 9756bba2
    ("x86/speculation: Fill RSB on vmexit for IBRS") to handle stuffing the
    RSB if RETPOLINE=y *or* KERNEL_IBRS=y, i.e. to also stuff the RSB if the
    kernel is configured to do IBRS mitigations on entry/exit.
    
    The AutoIBRS (on AMD) feature implementation added in commit e7862eda
    ("x86/cpu: Support AMD Automatic IBRS") used the already-implemented logic
    for EIBRS in spectre_v2_determine_rsb_fill_type_on_vmexit() -- but did not
    update the code at VMEXIT to act on the mode selected in that function --
    resulting in VMEXITs continuing to clear the RSB when RETPOLINES are
    enabled, despite the presence of AutoIBRS.
    Signed-off-by: default avatarAmit Shah <amit.shah@amd.com>
    Link: https://lore.kernel.org/r/20240807123531.69677-1-amit@kernel.org
    [sean: massage changeloge, drop comment about AMD not needing RSB_VMEXIT_LITE]
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    4440337a
vmenter.S 9.71 KB