> -----Original Message----- > From: Jacob Keller <[email protected]> > Sent: Friday, September 25, 2026 4:57 PM > To: Intel Wired LAN <[email protected]>; Machnikowski, Maciej > <[email protected]>; Keller, Jacob E <[email protected]>; > Korba, Przemyslaw <[email protected]>; Nguyen, Anthony L > <[email protected]>; Nitka, Grzegorz <[email protected]>; > Kubalewski, Arkadiusz <[email protected]> > Cc: Keller, Jacob E <[email protected]> > Subject: [PATCH iwl-net v3 01/15] ice: fix removal of PTP timestamp tracker > during reset > > Commit 7a25fe5cd5fb ("ice: stop destroying and reinitalizing Tx tracker > during reset") intended to modify the PTP reset flow of the driver so that it > stopped calling ice_ptp_reset_tx_tracker() during teardown and stopped > calling ice_ptp_init_tx_*() during rebuild. > > Unfortunately, the commit only removed the calls to ice_ptp_init_tx_*(). > This fixed a memory leak in PF reset. However, now a CORE, GLOBAL, or EMP > reset will leave the device unable to initiate Tx timestamp requests > indefinitely. > > In practice the CORE and GLOBAL resets rarely happen in production > environments, while EMP resets happen after a firmware update that is often > followed by a platform reboot. This explains why this has not been caught > until now. However, it is trivial to verify by triggering the reset from > userspace via ethtool. For ice the following command will trigger a GLOBAL > reset: > > $ ethtool --reset eno8303np0 irq-shared dma-shared filter-shared \ > offload-shared ram-shared mac-shared phy-shared > > Remove the call of ice_ptp_release_tx_tracker() from > ice_ptp_prepare_for_reset(), to keep the tracker memory in place so that > timestamping can resume after a reset. > > During review of a previous version of this change, sashiko pointed out that > the teardown flows for ice_ptp_init() and ice_ptp_release() could potentially > leak the PTP timestamp tracker. > > Fix ice_ptp_init() so that it allocates the tracker before adding the port to > the port list, and properly calls ice_ptp_release_tx_tracker() as part of its > cleanup on error. Ensure the ps_lock mutex isn't destroyed until the PF has > been cleared from the port list. > > Fix ice_ptp_release() so that it handles the cleanup if PTP is in the error > state by cancelling the kworker items and releasing the Tx tracker as > appropriate. > > This was found by Sashiko review during feedback for an unrelated change, and > iterated based on further feedback from Sashiko after the initial fix to > remove the call to ice_ptp_release_tx_tracker(); > > Closes: > https://sashiko.dev/#/patchset/20260821-jk-e825c-minimized-fixes-v1-0-9d0731eb4858%40intel.com?part=8 > Closes: > https://lore.kernel.org/netdev/[email protected]/ > Fixes: 7a25fe5cd5fb ("ice: stop destroying and reinitalizing Tx tracker > during reset") > Signed-off-by: Jacob Keller <[email protected]> > --- > drivers/net/ethernet/intel/ice/ice_ptp.c | 31 ++++++++++++++++++++----------- > 1 file changed, 20 insertions(+), 11 deletions(-)
Tested-by: Alexander Nowlin <[email protected]>
