On 5/4/2026 4:00 AM, Sergey Temerkhanov wrote:
> Rework usage of the control PF pointer in struct ice_adapter, so that
> it is always has a consistent state, since it is global for an adapter.
> Utilize RCU for reading the pointer value and atomic operations for
> changing it. Zero out the ctrl_pf pointer when the control PF is removed.
>
> Sergey Temerkhanov (3):
> ice: Convert ctrl_pf pointer in struct ice_adapter to RCU
> ice: Zero out the PTP control PF pointer at ice_adapter cleanup
> ice: Cache struct ice_hw pointer for split register reads
>
> drivers/net/ethernet/intel/ice/ice.h | 10 ++-
> drivers/net/ethernet/intel/ice/ice_adapter.h | 2 +-
> drivers/net/ethernet/intel/ice/ice_ptp.c | 66 +++++++++++++++++---
> drivers/net/ethernet/intel/ice/ice_ptp_hw.c | 26 ++++++--
> 4 files changed, 89 insertions(+), 15 deletions(-)
>
What base tree did you apply this to? It doesn't apply directly to net,
net-next, or either the tip of dev-queue for iwl-net or iwl-next.
It looks like you have this in your context:
> static void ice_ptp_setup_adapter(struct ice_pf *pf)
> {
> - pf->adapter->ctrl_pf = pf;
> + rcu_assign_pointer(pf->adapter->ctrl_pf, pf);
> }
>
But the ice_ptp_setup_adapter() function has other logic that has been
there since its existence?
Could you please rebase and make a v2 which applies cleanly to the
current tree? I don't want to make a mistake while attempting to resolve
conflicts for a change with this big of a scope.
Thanks,
Jake