mirror of
https://github.com/torvalds/linux.git
synced 2026-05-24 07:03:03 +02:00
ice: ptp: use primary NAC semaphore on E825
For E825 2xNAC configurations, PTP semaphore operations must hit the primary NAC register block so both sides coordinate on the same lock. Commite2193f9f9e("ice: enable timesync operation on 2xNAC E825 devices") updated other primary-only PTP register accesses to use the primary NAC on non-primary functions, but left ice_ptp_lock() and ice_ptp_unlock() operating on the local NAC. As a result, secondary NAC PTP paths can take a different semaphore than the primary side. Select the primary hardware in ice_ptp_lock() and ice_ptp_unlock() when the current function is not primary, keeping semaphore operations symmetric and consistent with the rest of the 2xNAC PTP register access path. Fixes:e2193f9f9e("ice: enable timesync operation on 2xNAC E825 devices") Reviewed-by: Arkadiusz Kubalewski <Arkadiusz.kubalewski@intel.com> Signed-off-by: Grzegorz Nitka <grzegorz.nitka@intel.com> Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Tested-by: Alexander Nowlin <alexander.nowlin@intel.com> Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Link: https://patch.msgid.link/20260515182419.1597859-6-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
781ff8f2d5
commit
7b28523546
|
|
@ -5264,9 +5264,13 @@ static void ice_ptp_init_phy_e830(struct ice_ptp_hw *ptp)
|
|||
*/
|
||||
bool ice_ptp_lock(struct ice_hw *hw)
|
||||
{
|
||||
struct ice_pf *pf = container_of(hw, struct ice_pf, hw);
|
||||
u32 hw_lock;
|
||||
int i;
|
||||
|
||||
if (!ice_is_primary(hw))
|
||||
hw = ice_get_primary_hw(pf);
|
||||
|
||||
#define MAX_TRIES 15
|
||||
|
||||
for (i = 0; i < MAX_TRIES; i++) {
|
||||
|
|
@ -5293,6 +5297,11 @@ bool ice_ptp_lock(struct ice_hw *hw)
|
|||
*/
|
||||
void ice_ptp_unlock(struct ice_hw *hw)
|
||||
{
|
||||
struct ice_pf *pf = container_of(hw, struct ice_pf, hw);
|
||||
|
||||
if (!ice_is_primary(hw))
|
||||
hw = ice_get_primary_hw(pf);
|
||||
|
||||
wr32(hw, PFTSYN_SEM + (PFTSYN_SEM_BYTES * hw->pf_id), 0);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user