This series fixes several PTP timestamp handling issues in the ice driver that manifest during link state transitions on E82x devices. Together, these issues can cause Tx timestamp timeouts, ptp4l service disruptions, and on PREEMPT_RT kernels, a system livelock requiring a hard reboot.
The root cause is a set of race conditions in the PTP link change path. When taking the link down (ice_down) or bringing it up (ice_up_complete), the PTP recalibration and cleanup were not properly synchronized with actual physical link transitions. This allowed Tx timestamp requests to be queued against uncalibrated or stopped PHY hardware, producing orphaned timestamp ready bits in the PHY registers. On E82x, the PHY will not generate a new timestamp interrupt until all outstanding ready bits have been read. Orphaned bits — set for slots with no matching software tracker entry — are never read, permanently blocking new timestamp interrupts. The existing periodic work detects this symptom and re-triggers the interrupt, but without clearing the stale bits, this creates an infinite trigger loop. On PREEMPT_RT kernels, the resulting interrupt storm causes RCU stalls and eventually a full system livelock. Arkadiusz Kubalewski (1): ice: call PTP link change only from link events Jacob Keller (1): ice: clear unexpected Tx timestamp ready bits to prevent stuck PHY Karol Kolacinski (2): ice: keep Tx timestamps disabled until offset calibration completes ice: cancel E82x offset verification work during reset preparation drivers/net/ethernet/intel/ice/ice_main.c | 3 +- drivers/net/ethernet/intel/ice/ice_ptp.c | 155 +++++++++++++++++--- drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 89 +++++++++-- drivers/net/ethernet/intel/ice/ice_ptp_hw.h | 1 + drivers/net/ethernet/intel/ice/ice_type.h | 7 + 5 files changed, 219 insertions(+), 36 deletions(-) -- 2.43.0
