> -----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]>

Reply via email to