Message ID | 20240607-iep-v3-2-4824224105bc@siemens.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Enable PTP timestamping/PPS for AM65x SR1.0 devices | expand |
On Fri, Jun 07, 2024 at 02:02:43PM +0100, Diogo Ivo wrote: > As all sources of concurrency in hardware register access occur in > non-interrupt context eliminate spinlock-based synchronization and > rely on the mutex-based synchronization that is already present. > > Signed-off-by: Diogo Ivo <diogo.ivo@siemens.com> > --- > drivers/net/ethernet/ti/icssg/icss_iep.c | 10 ---------- > 1 file changed, 10 deletions(-) > > diff --git a/drivers/net/ethernet/ti/icssg/icss_iep.c b/drivers/net/ethernet/ti/icssg/icss_iep.c > index 3025e9c18970..1d6ccdf2583f 100644 > --- a/drivers/net/ethernet/ti/icssg/icss_iep.c > +++ b/drivers/net/ethernet/ti/icssg/icss_iep.c > @@ -110,7 +110,6 @@ struct icss_iep { > struct ptp_clock_info ptp_info; > struct ptp_clock *ptp_clock; > struct mutex ptp_clk_mutex; /* PHC access serializer */ > - spinlock_t irq_lock; /* CMP IRQ vs icss_iep_ptp_enable access */ > u32 def_inc; > s16 slow_cmp_inc; > u32 slow_cmp_count; > @@ -199,7 +198,6 @@ static void icss_iep_settime(struct icss_iep *iep, u64 ns) > return; > } > > - spin_lock_irqsave(&iep->irq_lock, flags); > if (iep->pps_enabled || iep->perout_enabled) > writel(0, iep->base + iep->plat_data->reg_offs[ICSS_IEP_SYNC_CTRL_REG]); > > @@ -210,7 +208,6 @@ static void icss_iep_settime(struct icss_iep *iep, u64 ns) > writel(IEP_SYNC_CTRL_SYNC_N_EN(0) | IEP_SYNC_CTRL_SYNC_EN, > iep->base + iep->plat_data->reg_offs[ICSS_IEP_SYNC_CTRL_REG]); > } > - spin_unlock_irqrestore(&iep->irq_lock, flags); > } > > /** Hi Diogo, This is not a full review, but flags is now unused in icss_iep_settime() and should be removed. Likewise in icss_iep_perout_enable() and icss_iep_pps_enable(). Flagged by W=1 builds with gcc-13 and clang-18. ...
diff --git a/drivers/net/ethernet/ti/icssg/icss_iep.c b/drivers/net/ethernet/ti/icssg/icss_iep.c index 3025e9c18970..1d6ccdf2583f 100644 --- a/drivers/net/ethernet/ti/icssg/icss_iep.c +++ b/drivers/net/ethernet/ti/icssg/icss_iep.c @@ -110,7 +110,6 @@ struct icss_iep { struct ptp_clock_info ptp_info; struct ptp_clock *ptp_clock; struct mutex ptp_clk_mutex; /* PHC access serializer */ - spinlock_t irq_lock; /* CMP IRQ vs icss_iep_ptp_enable access */ u32 def_inc; s16 slow_cmp_inc; u32 slow_cmp_count; @@ -199,7 +198,6 @@ static void icss_iep_settime(struct icss_iep *iep, u64 ns) return; } - spin_lock_irqsave(&iep->irq_lock, flags); if (iep->pps_enabled || iep->perout_enabled) writel(0, iep->base + iep->plat_data->reg_offs[ICSS_IEP_SYNC_CTRL_REG]); @@ -210,7 +208,6 @@ static void icss_iep_settime(struct icss_iep *iep, u64 ns) writel(IEP_SYNC_CTRL_SYNC_N_EN(0) | IEP_SYNC_CTRL_SYNC_EN, iep->base + iep->plat_data->reg_offs[ICSS_IEP_SYNC_CTRL_REG]); } - spin_unlock_irqrestore(&iep->irq_lock, flags); } /** @@ -559,11 +556,9 @@ static int icss_iep_perout_enable(struct icss_iep *iep, if (iep->perout_enabled == !!on) goto exit; - spin_lock_irqsave(&iep->irq_lock, flags); ret = icss_iep_perout_enable_hw(iep, req, on); if (!ret) iep->perout_enabled = !!on; - spin_unlock_irqrestore(&iep->irq_lock, flags); exit: mutex_unlock(&iep->ptp_clk_mutex); @@ -589,8 +584,6 @@ static int icss_iep_pps_enable(struct icss_iep *iep, int on) if (iep->pps_enabled == !!on) goto exit; - spin_lock_irqsave(&iep->irq_lock, flags); - rq.perout.index = 0; if (on) { ns = icss_iep_gettime(iep, NULL); @@ -607,8 +600,6 @@ static int icss_iep_pps_enable(struct icss_iep *iep, int on) if (!ret) iep->pps_enabled = !!on; - spin_unlock_irqrestore(&iep->irq_lock, flags); - exit: mutex_unlock(&iep->ptp_clk_mutex); @@ -853,7 +844,6 @@ static int icss_iep_probe(struct platform_device *pdev) iep->ptp_info = icss_iep_ptp_info; mutex_init(&iep->ptp_clk_mutex); - spin_lock_init(&iep->irq_lock); dev_set_drvdata(dev, iep); icss_iep_disable(iep);
As all sources of concurrency in hardware register access occur in non-interrupt context eliminate spinlock-based synchronization and rely on the mutex-based synchronization that is already present. Signed-off-by: Diogo Ivo <diogo.ivo@siemens.com> --- drivers/net/ethernet/ti/icssg/icss_iep.c | 10 ---------- 1 file changed, 10 deletions(-)