• Mitch Williams's avatar
    ice: Reliably reset VFs · 29d42f1f
    Mitch Williams authored
    When a PFR (or bigger reset) occurs, the device clears the VF_MBX_ARQLEN
    register for all VFs. But if a VFR is triggered by a VF, the device does
    NOT clear this register, and the VF driver will never see the reset.
    
    When this happens, the VF driver will eventually timeout and attempt
    recovery, and usually it will be successful. But this makes resets take
    a long time and there are occasional failures.
    
    We cannot just blithely clear this register on every reset; this has
    been shown to cause synchronization problems when a PFR is triggered
    with a large number of VFs.
    
    Fix this by clearing VF_MBX_ARQLEN when the reset source is not PFR.
    GlobR will trigger PFR, so this test catches that occurrence as well.
    Signed-off-by: default avatarMitch Williams <mitch.a.williams@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    29d42f1f
ice_virtchnl_pf.c 87.2 KB