• Jacob Keller's avatar
    i40e: don't hold RTNL lock for the entire reset · dfc4ff64
    Jacob Keller authored
    We recently refactored i40e_do_reset() and its friends to be able to
    hold the RTNL lock only for the portions that actually need to be
    protected. However, a separate refactoring added several new callers of
    these functions during the PCIe error recovery and suspend/resume
    cycles.
    
    When merging the changes together, it was not noticed that we could
    reduce the RTNL scope by letting the reset function handle the lock
    itself, as previously it was not possible.
    
    Fix this by replacing these call sites to indicate that the reset
    function should handle its own lock. This enables multiple PFs to reset
    or resume simultaneously without serializing the resets via the RTNL
    lock. The end result is that on systems with lots of PFs and VFs the
    resets don't stall waiting for each other to finish.
    
    It is probable that we can also do the same for i40e_do_reset_safe, but
    this author did not research that change carefully enough to be
    confident.
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    dfc4ff64
i40e_main.c 336 KB