2018-01-08 10:32:33

by Yangbo Lu

[permalink] [raw]
Subject: [PATCH] net: gianfar_ptp: move set_fipers() to spinlock protecting area

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 <[email protected]>
---
drivers/net/ethernet/freescale/gianfar_ptp.c | 3 +--
1 files changed, 1 insertions(+), 2 deletions(-)

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;
}

--
1.7.1


2018-01-08 12:53:45

by Fabio Estevam

[permalink] [raw]
Subject: Re: [PATCH] net: gianfar_ptp: move set_fipers() to spinlock protecting area

On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <[email protected]> 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

2018-01-09 03:23:46

by Yangbo Lu

[permalink] [raw]
Subject: RE: [PATCH] net: gianfar_ptp: move set_fipers() to spinlock protecting area



> -----Original Message-----
> From: Fabio Estevam [mailto:[email protected]]
> Sent: 2018年1月8日 20:54
> To: Y.b. Lu <[email protected]>
> Cc: Claudiu Manoil <[email protected]>; Richard Cochran
> <[email protected]>; [email protected]; linux-kernel
> <[email protected]>
> Subject: Re: [PATCH] net: gianfar_ptp: move set_fipers() to spinlock protecting
> area
>
> On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <[email protected]> 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

2018-01-09 03:39:23

by Richard Cochran

[permalink] [raw]
Subject: Re: [PATCH] net: gianfar_ptp: move set_fipers() to spinlock protecting area

On Mon, Jan 08, 2018 at 10:53:40AM -0200, Fabio Estevam wrote:
> On Mon, Jan 8, 2018 at 8:13 AM, Yangbo Lu <[email protected]> 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