Message ID | 20180108101311.23581-1-yangbo.lu@nxp.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
Series | net: gianfar_ptp: move set_fipers() to spinlock protecting area | expand |
On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <yangbo.lu@nxp.com> wrote: > set_fipers() calling should be protected by spinlock. > This patch is to move set_fipers() to spinlock protecting > area in ptp_gianfar_adjtime() function. It would be nice to explay why. Thanks
> -----Original Message----- > From: Fabio Estevam [mailto:festevam@gmail.com] > Sent: 2018年1月8日 20:54 > To: Y.b. Lu <yangbo.lu@nxp.com> > Cc: Claudiu Manoil <claudiu.manoil@nxp.com>; Richard Cochran > <richardcochran@gmail.com>; netdev@vger.kernel.org; linux-kernel > <linux-kernel@vger.kernel.org> > Subject: Re: [PATCH] net: gianfar_ptp: move set_fipers() to spinlock protecting > area > > On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <yangbo.lu@nxp.com> wrote: > > set_fipers() calling should be protected by spinlock. > > This patch is to move set_fipers() to spinlock protecting area in > > ptp_gianfar_adjtime() function. > > It would be nice to explay why. [Y.b. Lu] Sent out v2 patch and explained in commit message :) Thanks. > > Thanks
On Mon, Jan 08, 2018 at 10:53:40AM -0200, Fabio Estevam wrote: > On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <yangbo.lu@nxp.com> wrote: > > set_fipers() calling should be protected by spinlock. > > This patch is to move set_fipers() to spinlock protecting > > area in ptp_gianfar_adjtime() function. > > It would be nice to explay why. Maybe this is important? /* Caller must hold etsects->lock. */ static void set_fipers(struct etsects *etsects) { set_alarm(etsects); gfar_write(&etsects->regs->tmr_fiper1, etsects->tmr_fiper1); gfar_write(&etsects->regs->tmr_fiper2, etsects->tmr_fiper2); } Thanks, Richard
diff --git a/drivers/net/ethernet/freescale/gianfar_ptp.c b/drivers/net/ethernet/freescale/gianfar_ptp.c index 5441142..9f8d4f8 100644 --- a/drivers/net/ethernet/freescale/gianfar_ptp.c +++ b/drivers/net/ethernet/freescale/gianfar_ptp.c @@ -319,11 +319,10 @@ static int ptp_gianfar_adjtime(struct ptp_clock_info *ptp, s64 delta) now = tmr_cnt_read(etsects); now += delta; tmr_cnt_write(etsects, now); + set_fipers(etsects); spin_unlock_irqrestore(&etsects->lock, flags); - set_fipers(etsects); - return 0; }
set_fipers() calling should be protected by spinlock. This patch is to move set_fipers() to spinlock protecting area in ptp_gianfar_adjtime() function. Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com> --- drivers/net/ethernet/freescale/gianfar_ptp.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-)