On 10/19/26 12:51, Aaron Ma wrote:
The PF reset polling loop includes the Global Configuration Lock timeout in addition to the normal PF reset wait. Its timeout check still compares the iteration count against only the normal PF reset wait.Consequently, exhausting the extended loop reports success while PFSWR is still set. A reset completing exactly at the old limit can instead report a false failure. Subsequent initialization must not proceed on the assumption that an unfinished reset succeeded. Compare the count against the same bound used by the polling loop. Fixes: c9a12d6d2091 ("ice: Increase timeout after PFR") Signed-off-by: Aaron Ma <[email protected]> --- drivers/net/ethernet/intel/ice/ice_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/intel/ice/ice_common.c b/drivers/net/ethernet/intel/ice/ice_common.c index 04633103e3e61..82b803e74aac0 100644 --- a/drivers/net/ethernet/intel/ice/ice_common.c +++ b/drivers/net/ethernet/intel/ice/ice_common.c @@ -1291,7 +1291,7 @@ static int ice_pf_reset(struct ice_hw *hw) mdelay(1); }- if (cnt == ICE_PF_RESET_WAIT_COUNT) {+ if (cnt == ICE_GLOBAL_CFG_LOCK_TIMEOUT + ICE_PF_RESET_WAIT_COUNT) { ice_debug(hw, ICE_DBG_INIT, "PF reset polling failed to complete.\n"); return -EIO; }
Reviewed-by: Przemek Kitszel <[email protected]>
