On October 2, 2026 3:07:50 PM GMT+02:00, Petr Oros <[email protected]> wrote: >ice_pf_reset() polls PFGEN_CTRL.PFSWR for up to >ICE_GLOBAL_CFG_LOCK_TIMEOUT + ICE_PF_RESET_WAIT_COUNT iterations, but >the timeout check after the loop still compares the counter with >ICE_PF_RESET_WAIT_COUNT alone. When the reset never completes the loop >ends with cnt == 5300, the check does not match and the function >returns success with PFSWR still set. A reset that completes just when >the counter reaches ICE_PF_RESET_WAIT_COUNT is reported as a failure >instead. > >Check the PFSWR bit read last instead of the loop counter, the same >way i40e_pf_reset() does after its poll loop. > >Fixes: c9a12d6d2091 ("ice: Increase timeout after PFR") >Assisted-by: LLM >Signed-off-by: Petr Oros <[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 04633103e3e610..0ffd6b5b81239e 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 (reg & PFGEN_CTRL_PFSWR_M) { > ice_debug(hw, ICE_DBG_INIT, "PF reset polling failed to > complete.\n"); > return -EIO; > }
Reviewed-by: Ivan Vecera <[email protected]>
