Re: [PATCH net 1/4] ice: wait for reset completion in ice_resume()
From: Paolo Abeni <pabeni@redhat.com>
Date: 2026-07-07 08:28:20
Also in:
stable
From: Paolo Abeni <pabeni@redhat.com>
Date: 2026-07-07 08:28:20
Also in:
stable
On 6/30/26 11:43 PM, Tony Nguyen wrote:
From: Aaron Ma <redacted>
ice_resume() schedules an asynchronous PF reset and returns
immediately. The reset runs later in ice_service_task(). If
userspace tries to bring up the net device before the reset
finishes, ice_open() fails with -EBUSY:
ice_resume()
ice_schedule_reset() # sets ICE_PFR_REQ, returns
...
ice_open()
ice_is_reset_in_progress() # ICE_PFR_REQ still set, -EBUSY
...
ice_service_task()
ice_do_reset()
ice_rebuild() # clears ICE_PFR_REQ, too late
Reproduced on E800 series NICs during suspend/resume with irdma
enabled, where the aux device probe widens the race window.
ice 0000:81:00.0: can't open net device while reset is in progress
Add a best-effort wait (10s timeout, matching ice_devlink_info_get())
for the reset to complete before returning from ice_resume(). In
practice the reset completes in ~300ms.Would not be better to (eventually) wait in ice_open()? Why? AFAICS that would be also more consistent with i.e. the current wait in ice_devlink_info_get(). Otherwise why don't consolidate all the wait at resume time and remove the other one in ice_devlink_info_get()? /P