e1000e: PTP lock in e1000e_phc_adjustfreq
Add lock in e1000e_phc_adjfreq to prevent concurrent changes to TIMINCA and SYSTIMH/L. Signed-off-by: Todd Fujinaka <todd.fujinaka@intel.com> Tested-by: Jeff Pieper <jeffrey.e.pieper@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
37147652cf
commit
6c2ed39c1c
|
@ -47,6 +47,7 @@ static int e1000e_phc_adjfreq(struct ptp_clock_info *ptp, s32 delta)
|
|||
ptp_clock_info);
|
||||
struct e1000_hw *hw = &adapter->hw;
|
||||
bool neg_adj = false;
|
||||
unsigned long flags;
|
||||
u64 adjustment;
|
||||
u32 timinca, incvalue;
|
||||
s32 ret_val;
|
||||
|
@ -64,6 +65,8 @@ static int e1000e_phc_adjfreq(struct ptp_clock_info *ptp, s32 delta)
|
|||
if (ret_val)
|
||||
return ret_val;
|
||||
|
||||
spin_lock_irqsave(&adapter->systim_lock, flags);
|
||||
|
||||
incvalue = timinca & E1000_TIMINCA_INCVALUE_MASK;
|
||||
|
||||
adjustment = incvalue;
|
||||
|
@ -77,6 +80,8 @@ static int e1000e_phc_adjfreq(struct ptp_clock_info *ptp, s32 delta)
|
|||
|
||||
ew32(TIMINCA, timinca);
|
||||
|
||||
spin_unlock_irqrestore(&adapter->systim_lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue