DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] eal: initialize alarms early
@ 2019-03-26 18:43 Darek Stojaczyk
  2019-03-26 18:43 ` Darek Stojaczyk
                   ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Darek Stojaczyk @ 2019-03-26 18:43 UTC (permalink / raw)
  To: dev; +Cc: Darek Stojaczyk, Qi Zhang, Anatoly Burakov, stable

We currently initialize rte_alarms after starting
to listen for IPC hotplug requests, which gives
us a data race window. Upon receiving such hotplug
request we always try to set an alarm and this
obviously doesn't work if the alarms weren't
initialized yet.

To fix it, we initialize alarms before starting
to listen for IPC hotplug messages. Specifically,
we move rte_eal_alarm_init() right after
rte_eal_intr_init() as it makes some sense to
keep those two close to each other.

Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
Cc: Qi Zhang <qi.z.zhang@intel.com>
Cc: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: stable@dpdk.org

Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
---
 lib/librte_eal/linux/eal/eal.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c
index 13f401684..75ed0cf10 100644
--- a/lib/librte_eal/linux/eal/eal.c
+++ b/lib/librte_eal/linux/eal/eal.c
@@ -1005,6 +1005,12 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
+	if (rte_eal_alarm_init() < 0) {
+		rte_eal_init_alert("Cannot init interrupt-handling thread");
+		/* rte_eal_alarm_init sets rte_errno on failure. */
+		return -1;
+	}
+
 	/* Put mp channel init before bus scan so that we can init the vdev
 	 * bus through mp channel in the secondary process before the bus scan.
 	 */
@@ -1125,12 +1131,6 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
-	if (rte_eal_alarm_init() < 0) {
-		rte_eal_init_alert("Cannot init interrupt-handling thread");
-		/* rte_eal_alarm_init sets rte_errno on failure. */
-		return -1;
-	}
-
 	if (rte_eal_timer_init() < 0) {
 		rte_eal_init_alert("Cannot init HPET or TSC timers");
 		rte_errno = ENOTSUP;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-26 18:43 [dpdk-dev] [PATCH] eal: initialize alarms early Darek Stojaczyk
@ 2019-03-26 18:43 ` Darek Stojaczyk
  2019-03-27 18:11 ` Thomas Monjalon
  2019-04-01 14:18 ` [dpdk-dev] [PATCH v2] " Darek Stojaczyk
  2 siblings, 0 replies; 20+ messages in thread
From: Darek Stojaczyk @ 2019-03-26 18:43 UTC (permalink / raw)
  To: dev; +Cc: Darek Stojaczyk, Qi Zhang, Anatoly Burakov, stable

We currently initialize rte_alarms after starting
to listen for IPC hotplug requests, which gives
us a data race window. Upon receiving such hotplug
request we always try to set an alarm and this
obviously doesn't work if the alarms weren't
initialized yet.

To fix it, we initialize alarms before starting
to listen for IPC hotplug messages. Specifically,
we move rte_eal_alarm_init() right after
rte_eal_intr_init() as it makes some sense to
keep those two close to each other.

Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
Cc: Qi Zhang <qi.z.zhang@intel.com>
Cc: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: stable@dpdk.org

Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
---
 lib/librte_eal/linux/eal/eal.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c
index 13f401684..75ed0cf10 100644
--- a/lib/librte_eal/linux/eal/eal.c
+++ b/lib/librte_eal/linux/eal/eal.c
@@ -1005,6 +1005,12 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
+	if (rte_eal_alarm_init() < 0) {
+		rte_eal_init_alert("Cannot init interrupt-handling thread");
+		/* rte_eal_alarm_init sets rte_errno on failure. */
+		return -1;
+	}
+
 	/* Put mp channel init before bus scan so that we can init the vdev
 	 * bus through mp channel in the secondary process before the bus scan.
 	 */
@@ -1125,12 +1131,6 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
-	if (rte_eal_alarm_init() < 0) {
-		rte_eal_init_alert("Cannot init interrupt-handling thread");
-		/* rte_eal_alarm_init sets rte_errno on failure. */
-		return -1;
-	}
-
 	if (rte_eal_timer_init() < 0) {
 		rte_eal_init_alert("Cannot init HPET or TSC timers");
 		rte_errno = ENOTSUP;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-26 18:43 [dpdk-dev] [PATCH] eal: initialize alarms early Darek Stojaczyk
  2019-03-26 18:43 ` Darek Stojaczyk
@ 2019-03-27 18:11 ` Thomas Monjalon
  2019-03-27 18:11   ` Thomas Monjalon
  2019-03-27 20:33   ` Stojaczyk, Dariusz
  2019-04-01 14:18 ` [dpdk-dev] [PATCH v2] " Darek Stojaczyk
  2 siblings, 2 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-03-27 18:11 UTC (permalink / raw)
  To: Darek Stojaczyk; +Cc: dev, Qi Zhang, Anatoly Burakov, stable

26/03/2019 19:43, Darek Stojaczyk:
> We currently initialize rte_alarms after starting
> to listen for IPC hotplug requests, which gives
> us a data race window. Upon receiving such hotplug
> request we always try to set an alarm and this
> obviously doesn't work if the alarms weren't
> initialized yet.
> 
> To fix it, we initialize alarms before starting
> to listen for IPC hotplug messages. Specifically,
> we move rte_eal_alarm_init() right after
> rte_eal_intr_init() as it makes some sense to
> keep those two close to each other.

I wonder which regression it will bring :)
The experience shows that we cannot touch this function
without introducing a regression. Please check twice.

> Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> Cc: Qi Zhang <qi.z.zhang@intel.com>
> Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> Cc: stable@dpdk.org
> 
> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> ---
>  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)

You probably need to update the FreeBSD version too.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-27 18:11 ` Thomas Monjalon
@ 2019-03-27 18:11   ` Thomas Monjalon
  2019-03-27 20:33   ` Stojaczyk, Dariusz
  1 sibling, 0 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-03-27 18:11 UTC (permalink / raw)
  To: Darek Stojaczyk; +Cc: dev, Qi Zhang, Anatoly Burakov, stable

26/03/2019 19:43, Darek Stojaczyk:
> We currently initialize rte_alarms after starting
> to listen for IPC hotplug requests, which gives
> us a data race window. Upon receiving such hotplug
> request we always try to set an alarm and this
> obviously doesn't work if the alarms weren't
> initialized yet.
> 
> To fix it, we initialize alarms before starting
> to listen for IPC hotplug messages. Specifically,
> we move rte_eal_alarm_init() right after
> rte_eal_intr_init() as it makes some sense to
> keep those two close to each other.

I wonder which regression it will bring :)
The experience shows that we cannot touch this function
without introducing a regression. Please check twice.

> Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> Cc: Qi Zhang <qi.z.zhang@intel.com>
> Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> Cc: stable@dpdk.org
> 
> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> ---
>  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)

You probably need to update the FreeBSD version too.



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-27 18:11 ` Thomas Monjalon
  2019-03-27 18:11   ` Thomas Monjalon
@ 2019-03-27 20:33   ` Stojaczyk, Dariusz
  2019-03-27 20:33     ` Stojaczyk, Dariusz
                       ` (2 more replies)
  1 sibling, 3 replies; 20+ messages in thread
From: Stojaczyk, Dariusz @ 2019-03-27 20:33 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Zhang, Qi Z, Burakov, Anatoly, stable



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Wednesday, March 27, 2019 7:12 PM
> To: Stojaczyk, Dariusz <dariusz.stojaczyk@intel.com>
> Cc: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Burakov, Anatoly
> <anatoly.burakov@intel.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] eal: initialize alarms early
> 
> 26/03/2019 19:43, Darek Stojaczyk:
> > We currently initialize rte_alarms after starting
> > to listen for IPC hotplug requests, which gives
> > us a data race window. Upon receiving such hotplug
> > request we always try to set an alarm and this
> > obviously doesn't work if the alarms weren't
> > initialized yet.
> >
> > To fix it, we initialize alarms before starting
> > to listen for IPC hotplug messages. Specifically,
> > we move rte_eal_alarm_init() right after
> > rte_eal_intr_init() as it makes some sense to
> > keep those two close to each other.
> 
> I wonder which regression it will bring :)
> The experience shows that we cannot touch this function
> without introducing a regression. Please check twice.

Hah, ok - I'll check again the possible outcomes of this.

> 
> > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > ---
> >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> You probably need to update the FreeBSD version too.
> 

Oh, that I cannot do. First of all, in bsd code I don't see
rte_mp_dev_hotplug_init() called anywhere, as if bsd
did not listen for IPC hotplug messages at all and hence did
not have any data race in this area. Second, I would be
afraid to touch any bsd code as I'm not running any bsd
system.

D.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-27 20:33   ` Stojaczyk, Dariusz
@ 2019-03-27 20:33     ` Stojaczyk, Dariusz
  2019-03-27 22:42     ` Thomas Monjalon
  2019-04-01 14:22     ` Stojaczyk, Dariusz
  2 siblings, 0 replies; 20+ messages in thread
From: Stojaczyk, Dariusz @ 2019-03-27 20:33 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Zhang, Qi Z, Burakov, Anatoly, stable



> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> Sent: Wednesday, March 27, 2019 7:12 PM
> To: Stojaczyk, Dariusz <dariusz.stojaczyk@intel.com>
> Cc: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Burakov, Anatoly
> <anatoly.burakov@intel.com>; stable@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH] eal: initialize alarms early
> 
> 26/03/2019 19:43, Darek Stojaczyk:
> > We currently initialize rte_alarms after starting
> > to listen for IPC hotplug requests, which gives
> > us a data race window. Upon receiving such hotplug
> > request we always try to set an alarm and this
> > obviously doesn't work if the alarms weren't
> > initialized yet.
> >
> > To fix it, we initialize alarms before starting
> > to listen for IPC hotplug messages. Specifically,
> > we move rte_eal_alarm_init() right after
> > rte_eal_intr_init() as it makes some sense to
> > keep those two close to each other.
> 
> I wonder which regression it will bring :)
> The experience shows that we cannot touch this function
> without introducing a regression. Please check twice.

Hah, ok - I'll check again the possible outcomes of this.

> 
> > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > Cc: stable@dpdk.org
> >
> > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > ---
> >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> >  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> You probably need to update the FreeBSD version too.
> 

Oh, that I cannot do. First of all, in bsd code I don't see
rte_mp_dev_hotplug_init() called anywhere, as if bsd
did not listen for IPC hotplug messages at all and hence did
not have any data race in this area. Second, I would be
afraid to touch any bsd code as I'm not running any bsd
system.

D.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-27 20:33   ` Stojaczyk, Dariusz
  2019-03-27 20:33     ` Stojaczyk, Dariusz
@ 2019-03-27 22:42     ` Thomas Monjalon
  2019-03-27 22:42       ` Thomas Monjalon
  2019-03-28 10:43       ` Bruce Richardson
  2019-04-01 14:22     ` Stojaczyk, Dariusz
  2 siblings, 2 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-03-27 22:42 UTC (permalink / raw)
  To: Stojaczyk, Dariusz
  Cc: dev, Zhang, Qi Z, Burakov, Anatoly, stable, bruce.richardson

27/03/2019 21:33, Stojaczyk, Dariusz:
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > 26/03/2019 19:43, Darek Stojaczyk:
> > > We currently initialize rte_alarms after starting
> > > to listen for IPC hotplug requests, which gives
> > > us a data race window. Upon receiving such hotplug
> > > request we always try to set an alarm and this
> > > obviously doesn't work if the alarms weren't
> > > initialized yet.
> > >
> > > To fix it, we initialize alarms before starting
> > > to listen for IPC hotplug messages. Specifically,
> > > we move rte_eal_alarm_init() right after
> > > rte_eal_intr_init() as it makes some sense to
> > > keep those two close to each other.
> > 
> > I wonder which regression it will bring :)
> > The experience shows that we cannot touch this function
> > without introducing a regression. Please check twice.
> 
> Hah, ok - I'll check again the possible outcomes of this.
> 
> > 
> > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > ---
> > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > >  1 file changed, 6 insertions(+), 6 deletions(-)
> > 
> > You probably need to update the FreeBSD version too.
> > 
> 
> Oh, that I cannot do. First of all, in bsd code I don't see
> rte_mp_dev_hotplug_init() called anywhere, as if bsd
> did not listen for IPC hotplug messages at all and hence did
> not have any data race in this area. Second, I would be
> afraid to touch any bsd code as I'm not running any bsd
> system.

The problem is the consistency between OSes.
May you ask help here? Bruce is maintaining the FreeBSD side.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-27 22:42     ` Thomas Monjalon
@ 2019-03-27 22:42       ` Thomas Monjalon
  2019-03-28 10:43       ` Bruce Richardson
  1 sibling, 0 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-03-27 22:42 UTC (permalink / raw)
  To: Stojaczyk, Dariusz
  Cc: dev, Zhang, Qi Z, Burakov, Anatoly, stable, bruce.richardson

27/03/2019 21:33, Stojaczyk, Dariusz:
> From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > 26/03/2019 19:43, Darek Stojaczyk:
> > > We currently initialize rte_alarms after starting
> > > to listen for IPC hotplug requests, which gives
> > > us a data race window. Upon receiving such hotplug
> > > request we always try to set an alarm and this
> > > obviously doesn't work if the alarms weren't
> > > initialized yet.
> > >
> > > To fix it, we initialize alarms before starting
> > > to listen for IPC hotplug messages. Specifically,
> > > we move rte_eal_alarm_init() right after
> > > rte_eal_intr_init() as it makes some sense to
> > > keep those two close to each other.
> > 
> > I wonder which regression it will bring :)
> > The experience shows that we cannot touch this function
> > without introducing a regression. Please check twice.
> 
> Hah, ok - I'll check again the possible outcomes of this.
> 
> > 
> > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > ---
> > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > >  1 file changed, 6 insertions(+), 6 deletions(-)
> > 
> > You probably need to update the FreeBSD version too.
> > 
> 
> Oh, that I cannot do. First of all, in bsd code I don't see
> rte_mp_dev_hotplug_init() called anywhere, as if bsd
> did not listen for IPC hotplug messages at all and hence did
> not have any data race in this area. Second, I would be
> afraid to touch any bsd code as I'm not running any bsd
> system.

The problem is the consistency between OSes.
May you ask help here? Bruce is maintaining the FreeBSD side.



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-27 22:42     ` Thomas Monjalon
  2019-03-27 22:42       ` Thomas Monjalon
@ 2019-03-28 10:43       ` Bruce Richardson
  2019-03-28 10:43         ` Bruce Richardson
  2019-03-28 10:46         ` Thomas Monjalon
  1 sibling, 2 replies; 20+ messages in thread
From: Bruce Richardson @ 2019-03-28 10:43 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Stojaczyk, Dariusz, dev, Zhang, Qi Z, Burakov, Anatoly, stable

On Wed, Mar 27, 2019 at 11:42:40PM +0100, Thomas Monjalon wrote:
> 27/03/2019 21:33, Stojaczyk, Dariusz:
> > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > 26/03/2019 19:43, Darek Stojaczyk:
> > > > We currently initialize rte_alarms after starting
> > > > to listen for IPC hotplug requests, which gives
> > > > us a data race window. Upon receiving such hotplug
> > > > request we always try to set an alarm and this
> > > > obviously doesn't work if the alarms weren't
> > > > initialized yet.
> > > >
> > > > To fix it, we initialize alarms before starting
> > > > to listen for IPC hotplug messages. Specifically,
> > > > we move rte_eal_alarm_init() right after
> > > > rte_eal_intr_init() as it makes some sense to
> > > > keep those two close to each other.
> > > 
> > > I wonder which regression it will bring :)
> > > The experience shows that we cannot touch this function
> > > without introducing a regression. Please check twice.
> > 
> > Hah, ok - I'll check again the possible outcomes of this.
> > 
> > > 
> > > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > > ---
> > > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > > >  1 file changed, 6 insertions(+), 6 deletions(-)
> > > 
> > > You probably need to update the FreeBSD version too.
> > > 
> > 
> > Oh, that I cannot do. First of all, in bsd code I don't see
> > rte_mp_dev_hotplug_init() called anywhere, as if bsd
> > did not listen for IPC hotplug messages at all and hence did
> > not have any data race in this area. Second, I would be
> > afraid to touch any bsd code as I'm not running any bsd
> > system.
> 
> The problem is the consistency between OSes.
> May you ask help here? Bruce is maintaining the FreeBSD side.
> 
I don't think we support IPC or hotplug on BSD, so I don't think this patch
is relevant on the BSD side.

/Bruce

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-28 10:43       ` Bruce Richardson
@ 2019-03-28 10:43         ` Bruce Richardson
  2019-03-28 10:46         ` Thomas Monjalon
  1 sibling, 0 replies; 20+ messages in thread
From: Bruce Richardson @ 2019-03-28 10:43 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Stojaczyk, Dariusz, dev, Zhang, Qi Z, Burakov, Anatoly, stable

On Wed, Mar 27, 2019 at 11:42:40PM +0100, Thomas Monjalon wrote:
> 27/03/2019 21:33, Stojaczyk, Dariusz:
> > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > 26/03/2019 19:43, Darek Stojaczyk:
> > > > We currently initialize rte_alarms after starting
> > > > to listen for IPC hotplug requests, which gives
> > > > us a data race window. Upon receiving such hotplug
> > > > request we always try to set an alarm and this
> > > > obviously doesn't work if the alarms weren't
> > > > initialized yet.
> > > >
> > > > To fix it, we initialize alarms before starting
> > > > to listen for IPC hotplug messages. Specifically,
> > > > we move rte_eal_alarm_init() right after
> > > > rte_eal_intr_init() as it makes some sense to
> > > > keep those two close to each other.
> > > 
> > > I wonder which regression it will bring :)
> > > The experience shows that we cannot touch this function
> > > without introducing a regression. Please check twice.
> > 
> > Hah, ok - I'll check again the possible outcomes of this.
> > 
> > > 
> > > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > > Cc: stable@dpdk.org
> > > >
> > > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > > ---
> > > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > > >  1 file changed, 6 insertions(+), 6 deletions(-)
> > > 
> > > You probably need to update the FreeBSD version too.
> > > 
> > 
> > Oh, that I cannot do. First of all, in bsd code I don't see
> > rte_mp_dev_hotplug_init() called anywhere, as if bsd
> > did not listen for IPC hotplug messages at all and hence did
> > not have any data race in this area. Second, I would be
> > afraid to touch any bsd code as I'm not running any bsd
> > system.
> 
> The problem is the consistency between OSes.
> May you ask help here? Bruce is maintaining the FreeBSD side.
> 
I don't think we support IPC or hotplug on BSD, so I don't think this patch
is relevant on the BSD side.

/Bruce

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-28 10:43       ` Bruce Richardson
  2019-03-28 10:43         ` Bruce Richardson
@ 2019-03-28 10:46         ` Thomas Monjalon
  2019-03-28 10:46           ` Thomas Monjalon
  2019-03-28 13:14           ` Burakov, Anatoly
  1 sibling, 2 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-03-28 10:46 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: Stojaczyk, Dariusz, dev, Zhang, Qi Z, Burakov, Anatoly, stable

28/03/2019 11:43, Bruce Richardson:
> On Wed, Mar 27, 2019 at 11:42:40PM +0100, Thomas Monjalon wrote:
> > 27/03/2019 21:33, Stojaczyk, Dariusz:
> > > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > > 26/03/2019 19:43, Darek Stojaczyk:
> > > > > We currently initialize rte_alarms after starting
> > > > > to listen for IPC hotplug requests, which gives
> > > > > us a data race window. Upon receiving such hotplug
> > > > > request we always try to set an alarm and this
> > > > > obviously doesn't work if the alarms weren't
> > > > > initialized yet.
> > > > >
> > > > > To fix it, we initialize alarms before starting
> > > > > to listen for IPC hotplug messages. Specifically,
> > > > > we move rte_eal_alarm_init() right after
> > > > > rte_eal_intr_init() as it makes some sense to
> > > > > keep those two close to each other.
> > > > 
> > > > I wonder which regression it will bring :)
> > > > The experience shows that we cannot touch this function
> > > > without introducing a regression. Please check twice.
> > > 
> > > Hah, ok - I'll check again the possible outcomes of this.
> > > 
> > > > 
> > > > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > > > Cc: stable@dpdk.org
> > > > >
> > > > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > > > ---
> > > > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > > > >  1 file changed, 6 insertions(+), 6 deletions(-)
> > > > 
> > > > You probably need to update the FreeBSD version too.
> > > > 
> > > 
> > > Oh, that I cannot do. First of all, in bsd code I don't see
> > > rte_mp_dev_hotplug_init() called anywhere, as if bsd
> > > did not listen for IPC hotplug messages at all and hence did
> > > not have any data race in this area. Second, I would be
> > > afraid to touch any bsd code as I'm not running any bsd
> > > system.
> > 
> > The problem is the consistency between OSes.
> > May you ask help here? Bruce is maintaining the FreeBSD side.
> > 
> I don't think we support IPC or hotplug on BSD, so I don't think this patch
> is relevant on the BSD side.

Yes, but then, the initialization order is different on Linux and BSD.
I'm thinking about consistency and maintenance ease.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-28 10:46         ` Thomas Monjalon
@ 2019-03-28 10:46           ` Thomas Monjalon
  2019-03-28 13:14           ` Burakov, Anatoly
  1 sibling, 0 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-03-28 10:46 UTC (permalink / raw)
  To: Bruce Richardson
  Cc: Stojaczyk, Dariusz, dev, Zhang, Qi Z, Burakov, Anatoly, stable

28/03/2019 11:43, Bruce Richardson:
> On Wed, Mar 27, 2019 at 11:42:40PM +0100, Thomas Monjalon wrote:
> > 27/03/2019 21:33, Stojaczyk, Dariusz:
> > > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > > > 26/03/2019 19:43, Darek Stojaczyk:
> > > > > We currently initialize rte_alarms after starting
> > > > > to listen for IPC hotplug requests, which gives
> > > > > us a data race window. Upon receiving such hotplug
> > > > > request we always try to set an alarm and this
> > > > > obviously doesn't work if the alarms weren't
> > > > > initialized yet.
> > > > >
> > > > > To fix it, we initialize alarms before starting
> > > > > to listen for IPC hotplug messages. Specifically,
> > > > > we move rte_eal_alarm_init() right after
> > > > > rte_eal_intr_init() as it makes some sense to
> > > > > keep those two close to each other.
> > > > 
> > > > I wonder which regression it will bring :)
> > > > The experience shows that we cannot touch this function
> > > > without introducing a regression. Please check twice.
> > > 
> > > Hah, ok - I'll check again the possible outcomes of this.
> > > 
> > > > 
> > > > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > > > Cc: stable@dpdk.org
> > > > >
> > > > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > > > ---
> > > > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > > > >  1 file changed, 6 insertions(+), 6 deletions(-)
> > > > 
> > > > You probably need to update the FreeBSD version too.
> > > > 
> > > 
> > > Oh, that I cannot do. First of all, in bsd code I don't see
> > > rte_mp_dev_hotplug_init() called anywhere, as if bsd
> > > did not listen for IPC hotplug messages at all and hence did
> > > not have any data race in this area. Second, I would be
> > > afraid to touch any bsd code as I'm not running any bsd
> > > system.
> > 
> > The problem is the consistency between OSes.
> > May you ask help here? Bruce is maintaining the FreeBSD side.
> > 
> I don't think we support IPC or hotplug on BSD, so I don't think this patch
> is relevant on the BSD side.

Yes, but then, the initialization order is different on Linux and BSD.
I'm thinking about consistency and maintenance ease.



^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-28 10:46         ` Thomas Monjalon
  2019-03-28 10:46           ` Thomas Monjalon
@ 2019-03-28 13:14           ` Burakov, Anatoly
  2019-03-28 13:14             ` Burakov, Anatoly
  1 sibling, 1 reply; 20+ messages in thread
From: Burakov, Anatoly @ 2019-03-28 13:14 UTC (permalink / raw)
  To: Thomas Monjalon, Bruce Richardson
  Cc: Stojaczyk, Dariusz, dev, Zhang, Qi Z, stable

On 28-Mar-19 10:46 AM, Thomas Monjalon wrote:
> 28/03/2019 11:43, Bruce Richardson:
>> On Wed, Mar 27, 2019 at 11:42:40PM +0100, Thomas Monjalon wrote:
>>> 27/03/2019 21:33, Stojaczyk, Dariusz:
>>>> From: Thomas Monjalon [mailto:thomas@monjalon.net]
>>>>> 26/03/2019 19:43, Darek Stojaczyk:
>>>>>> We currently initialize rte_alarms after starting
>>>>>> to listen for IPC hotplug requests, which gives
>>>>>> us a data race window. Upon receiving such hotplug
>>>>>> request we always try to set an alarm and this
>>>>>> obviously doesn't work if the alarms weren't
>>>>>> initialized yet.
>>>>>>
>>>>>> To fix it, we initialize alarms before starting
>>>>>> to listen for IPC hotplug messages. Specifically,
>>>>>> we move rte_eal_alarm_init() right after
>>>>>> rte_eal_intr_init() as it makes some sense to
>>>>>> keep those two close to each other.
>>>>>
>>>>> I wonder which regression it will bring :)
>>>>> The experience shows that we cannot touch this function
>>>>> without introducing a regression. Please check twice.
>>>>
>>>> Hah, ok - I'll check again the possible outcomes of this.
>>>>
>>>>>
>>>>>> Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
>>>>>> Cc: Qi Zhang <qi.z.zhang@intel.com>
>>>>>> Cc: Anatoly Burakov <anatoly.burakov@intel.com>
>>>>>> Cc: stable@dpdk.org
>>>>>>
>>>>>> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
>>>>>> ---
>>>>>>   lib/librte_eal/linux/eal/eal.c | 12 ++++++------
>>>>>>   1 file changed, 6 insertions(+), 6 deletions(-)
>>>>>
>>>>> You probably need to update the FreeBSD version too.
>>>>>
>>>>
>>>> Oh, that I cannot do. First of all, in bsd code I don't see
>>>> rte_mp_dev_hotplug_init() called anywhere, as if bsd
>>>> did not listen for IPC hotplug messages at all and hence did
>>>> not have any data race in this area. Second, I would be
>>>> afraid to touch any bsd code as I'm not running any bsd
>>>> system.
>>>
>>> The problem is the consistency between OSes.
>>> May you ask help here? Bruce is maintaining the FreeBSD side.
>>>
>> I don't think we support IPC or hotplug on BSD, so I don't think this patch
>> is relevant on the BSD side.
> 
> Yes, but then, the initialization order is different on Linux and BSD.
> I'm thinking about consistency and maintenance ease.
> 

 From my cursory inspection, nothing should be broken on FreeBSD as a 
result of moving alarm API init earlier.

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-28 13:14           ` Burakov, Anatoly
@ 2019-03-28 13:14             ` Burakov, Anatoly
  0 siblings, 0 replies; 20+ messages in thread
From: Burakov, Anatoly @ 2019-03-28 13:14 UTC (permalink / raw)
  To: Thomas Monjalon, Bruce Richardson
  Cc: Stojaczyk, Dariusz, dev, Zhang, Qi Z, stable

On 28-Mar-19 10:46 AM, Thomas Monjalon wrote:
> 28/03/2019 11:43, Bruce Richardson:
>> On Wed, Mar 27, 2019 at 11:42:40PM +0100, Thomas Monjalon wrote:
>>> 27/03/2019 21:33, Stojaczyk, Dariusz:
>>>> From: Thomas Monjalon [mailto:thomas@monjalon.net]
>>>>> 26/03/2019 19:43, Darek Stojaczyk:
>>>>>> We currently initialize rte_alarms after starting
>>>>>> to listen for IPC hotplug requests, which gives
>>>>>> us a data race window. Upon receiving such hotplug
>>>>>> request we always try to set an alarm and this
>>>>>> obviously doesn't work if the alarms weren't
>>>>>> initialized yet.
>>>>>>
>>>>>> To fix it, we initialize alarms before starting
>>>>>> to listen for IPC hotplug messages. Specifically,
>>>>>> we move rte_eal_alarm_init() right after
>>>>>> rte_eal_intr_init() as it makes some sense to
>>>>>> keep those two close to each other.
>>>>>
>>>>> I wonder which regression it will bring :)
>>>>> The experience shows that we cannot touch this function
>>>>> without introducing a regression. Please check twice.
>>>>
>>>> Hah, ok - I'll check again the possible outcomes of this.
>>>>
>>>>>
>>>>>> Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
>>>>>> Cc: Qi Zhang <qi.z.zhang@intel.com>
>>>>>> Cc: Anatoly Burakov <anatoly.burakov@intel.com>
>>>>>> Cc: stable@dpdk.org
>>>>>>
>>>>>> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
>>>>>> ---
>>>>>>   lib/librte_eal/linux/eal/eal.c | 12 ++++++------
>>>>>>   1 file changed, 6 insertions(+), 6 deletions(-)
>>>>>
>>>>> You probably need to update the FreeBSD version too.
>>>>>
>>>>
>>>> Oh, that I cannot do. First of all, in bsd code I don't see
>>>> rte_mp_dev_hotplug_init() called anywhere, as if bsd
>>>> did not listen for IPC hotplug messages at all and hence did
>>>> not have any data race in this area. Second, I would be
>>>> afraid to touch any bsd code as I'm not running any bsd
>>>> system.
>>>
>>> The problem is the consistency between OSes.
>>> May you ask help here? Bruce is maintaining the FreeBSD side.
>>>
>> I don't think we support IPC or hotplug on BSD, so I don't think this patch
>> is relevant on the BSD side.
> 
> Yes, but then, the initialization order is different on Linux and BSD.
> I'm thinking about consistency and maintenance ease.
> 

 From my cursory inspection, nothing should be broken on FreeBSD as a 
result of moving alarm API init earlier.

-- 
Thanks,
Anatoly

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [PATCH v2] eal: initialize alarms early
  2019-03-26 18:43 [dpdk-dev] [PATCH] eal: initialize alarms early Darek Stojaczyk
  2019-03-26 18:43 ` Darek Stojaczyk
  2019-03-27 18:11 ` Thomas Monjalon
@ 2019-04-01 14:18 ` Darek Stojaczyk
  2019-04-01 14:18   ` Darek Stojaczyk
  2019-04-02 13:01   ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
  2 siblings, 2 replies; 20+ messages in thread
From: Darek Stojaczyk @ 2019-04-01 14:18 UTC (permalink / raw)
  To: dev
  Cc: thomas, bruce.richardson, Darek Stojaczyk, Qi Zhang,
	Anatoly Burakov, stable

On linux, we currently initialize rte_alarms after
starting to listen for IPC hotplug requests, which gives
us a data race window. Upon receiving such hotplug
request we always try to set an alarm and this obviously
doesn't work if the alarms weren't initialized yet.

To fix it, we initialize alarms before starting to
listen for IPC hotplug messages. Specifically, we move
rte_eal_alarm_init() right after rte_eal_intr_init() as
it makes some sense to keep those two close to each other.

We update the bsd code as well to keep the initialization
order the same in both eal implementations.

Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
Cc: Qi Zhang <qi.z.zhang@intel.com>
Cc: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: stable@dpdk.org

Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
---
v2:
 - updated the bsd code as well (Thomas)


 lib/librte_eal/freebsd/eal/eal.c | 12 ++++++------
 lib/librte_eal/linux/eal/eal.c   | 12 ++++++------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/lib/librte_eal/freebsd/eal/eal.c b/lib/librte_eal/freebsd/eal/eal.c
index 4e86b10b1..790c6afa7 100644
--- a/lib/librte_eal/freebsd/eal/eal.c
+++ b/lib/librte_eal/freebsd/eal/eal.c
@@ -662,6 +662,12 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
+	if (rte_eal_alarm_init() < 0) {
+		rte_eal_init_alert("Cannot init interrupt-handling thread");
+		/* rte_eal_alarm_init sets rte_errno on failure. */
+		return -1;
+	}
+
 	/* Put mp channel init before bus scan so that we can init the vdev
 	 * bus through mp channel in the secondary process before the bus scan.
 	 */
@@ -751,12 +757,6 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
-	if (rte_eal_alarm_init() < 0) {
-		rte_eal_init_alert("Cannot init interrupt-handling thread");
-		/* rte_eal_alarm_init sets rte_errno on failure. */
-		return -1;
-	}
-
 	if (rte_eal_timer_init() < 0) {
 		rte_eal_init_alert("Cannot init HPET or TSC timers");
 		rte_errno = ENOTSUP;
diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c
index 13f401684..75ed0cf10 100644
--- a/lib/librte_eal/linux/eal/eal.c
+++ b/lib/librte_eal/linux/eal/eal.c
@@ -1005,6 +1005,12 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
+	if (rte_eal_alarm_init() < 0) {
+		rte_eal_init_alert("Cannot init interrupt-handling thread");
+		/* rte_eal_alarm_init sets rte_errno on failure. */
+		return -1;
+	}
+
 	/* Put mp channel init before bus scan so that we can init the vdev
 	 * bus through mp channel in the secondary process before the bus scan.
 	 */
@@ -1125,12 +1131,6 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
-	if (rte_eal_alarm_init() < 0) {
-		rte_eal_init_alert("Cannot init interrupt-handling thread");
-		/* rte_eal_alarm_init sets rte_errno on failure. */
-		return -1;
-	}
-
 	if (rte_eal_timer_init() < 0) {
 		rte_eal_init_alert("Cannot init HPET or TSC timers");
 		rte_errno = ENOTSUP;
-- 
2.17.1

^ permalink raw reply	[flat|nested] 20+ messages in thread

* [dpdk-dev] [PATCH v2] eal: initialize alarms early
  2019-04-01 14:18 ` [dpdk-dev] [PATCH v2] " Darek Stojaczyk
@ 2019-04-01 14:18   ` Darek Stojaczyk
  2019-04-02 13:01   ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
  1 sibling, 0 replies; 20+ messages in thread
From: Darek Stojaczyk @ 2019-04-01 14:18 UTC (permalink / raw)
  To: dev
  Cc: thomas, bruce.richardson, Darek Stojaczyk, Qi Zhang,
	Anatoly Burakov, stable

On linux, we currently initialize rte_alarms after
starting to listen for IPC hotplug requests, which gives
us a data race window. Upon receiving such hotplug
request we always try to set an alarm and this obviously
doesn't work if the alarms weren't initialized yet.

To fix it, we initialize alarms before starting to
listen for IPC hotplug messages. Specifically, we move
rte_eal_alarm_init() right after rte_eal_intr_init() as
it makes some sense to keep those two close to each other.

We update the bsd code as well to keep the initialization
order the same in both eal implementations.

Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
Cc: Qi Zhang <qi.z.zhang@intel.com>
Cc: Anatoly Burakov <anatoly.burakov@intel.com>
Cc: stable@dpdk.org

Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
---
v2:
 - updated the bsd code as well (Thomas)


 lib/librte_eal/freebsd/eal/eal.c | 12 ++++++------
 lib/librte_eal/linux/eal/eal.c   | 12 ++++++------
 2 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/lib/librte_eal/freebsd/eal/eal.c b/lib/librte_eal/freebsd/eal/eal.c
index 4e86b10b1..790c6afa7 100644
--- a/lib/librte_eal/freebsd/eal/eal.c
+++ b/lib/librte_eal/freebsd/eal/eal.c
@@ -662,6 +662,12 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
+	if (rte_eal_alarm_init() < 0) {
+		rte_eal_init_alert("Cannot init interrupt-handling thread");
+		/* rte_eal_alarm_init sets rte_errno on failure. */
+		return -1;
+	}
+
 	/* Put mp channel init before bus scan so that we can init the vdev
 	 * bus through mp channel in the secondary process before the bus scan.
 	 */
@@ -751,12 +757,6 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
-	if (rte_eal_alarm_init() < 0) {
-		rte_eal_init_alert("Cannot init interrupt-handling thread");
-		/* rte_eal_alarm_init sets rte_errno on failure. */
-		return -1;
-	}
-
 	if (rte_eal_timer_init() < 0) {
 		rte_eal_init_alert("Cannot init HPET or TSC timers");
 		rte_errno = ENOTSUP;
diff --git a/lib/librte_eal/linux/eal/eal.c b/lib/librte_eal/linux/eal/eal.c
index 13f401684..75ed0cf10 100644
--- a/lib/librte_eal/linux/eal/eal.c
+++ b/lib/librte_eal/linux/eal/eal.c
@@ -1005,6 +1005,12 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
+	if (rte_eal_alarm_init() < 0) {
+		rte_eal_init_alert("Cannot init interrupt-handling thread");
+		/* rte_eal_alarm_init sets rte_errno on failure. */
+		return -1;
+	}
+
 	/* Put mp channel init before bus scan so that we can init the vdev
 	 * bus through mp channel in the secondary process before the bus scan.
 	 */
@@ -1125,12 +1131,6 @@ rte_eal_init(int argc, char **argv)
 		return -1;
 	}
 
-	if (rte_eal_alarm_init() < 0) {
-		rte_eal_init_alert("Cannot init interrupt-handling thread");
-		/* rte_eal_alarm_init sets rte_errno on failure. */
-		return -1;
-	}
-
 	if (rte_eal_timer_init() < 0) {
 		rte_eal_init_alert("Cannot init HPET or TSC timers");
 		rte_errno = ENOTSUP;
-- 
2.17.1


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-03-27 20:33   ` Stojaczyk, Dariusz
  2019-03-27 20:33     ` Stojaczyk, Dariusz
  2019-03-27 22:42     ` Thomas Monjalon
@ 2019-04-01 14:22     ` Stojaczyk, Dariusz
  2019-04-01 14:22       ` Stojaczyk, Dariusz
  2 siblings, 1 reply; 20+ messages in thread
From: Stojaczyk, Dariusz @ 2019-04-01 14:22 UTC (permalink / raw)
  To: 'Thomas Monjalon'
  Cc: 'dev@dpdk.org',
	Zhang, Qi Z, Burakov, Anatoly, 'stable@dpdk.org',
	Richardson, Bruce



> -----Original Message-----
> From: Stojaczyk, Dariusz
> Sent: Wednesday, March 27, 2019 9:34 PM
> To: Thomas Monjalon <thomas@monjalon.net>
> Cc: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Burakov, Anatoly
> <anatoly.burakov@intel.com>; stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH] eal: initialize alarms early
> 
> 
> 
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > Sent: Wednesday, March 27, 2019 7:12 PM
> > To: Stojaczyk, Dariusz <dariusz.stojaczyk@intel.com>
> > Cc: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Burakov, Anatoly
> > <anatoly.burakov@intel.com>; stable@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH] eal: initialize alarms early
> >
> > 26/03/2019 19:43, Darek Stojaczyk:
> > > We currently initialize rte_alarms after starting
> > > to listen for IPC hotplug requests, which gives
> > > us a data race window. Upon receiving such hotplug
> > > request we always try to set an alarm and this
> > > obviously doesn't work if the alarms weren't
> > > initialized yet.
> > >
> > > To fix it, we initialize alarms before starting
> > > to listen for IPC hotplug messages. Specifically,
> > > we move rte_eal_alarm_init() right after
> > > rte_eal_intr_init() as it makes some sense to
> > > keep those two close to each other.
> >
> > I wonder which regression it will bring :)
> > The experience shows that we cannot touch this function
> > without introducing a regression. Please check twice.
> 
> Hah, ok - I'll check again the possible outcomes of this.
> 

Done, I can't see any case I could break.

> >
> > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > ---
> > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > >  1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > You probably need to update the FreeBSD version too.
> >
> 
> Oh, that I cannot do. First of all, in bsd code I don't see
> rte_mp_dev_hotplug_init() called anywhere, as if bsd
> did not listen for IPC hotplug messages at all and hence did
> not have any data race in this area. Second, I would be
> afraid to touch any bsd code as I'm not running any bsd
> system.

Basing on Anatoly's feedback, I pushed a v2 with bsd changes
included as well.

Thanks!
D.

> 
> D.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [PATCH] eal: initialize alarms early
  2019-04-01 14:22     ` Stojaczyk, Dariusz
@ 2019-04-01 14:22       ` Stojaczyk, Dariusz
  0 siblings, 0 replies; 20+ messages in thread
From: Stojaczyk, Dariusz @ 2019-04-01 14:22 UTC (permalink / raw)
  To: 'Thomas Monjalon'
  Cc: 'dev@dpdk.org',
	Zhang, Qi Z, Burakov, Anatoly, 'stable@dpdk.org',
	Richardson, Bruce



> -----Original Message-----
> From: Stojaczyk, Dariusz
> Sent: Wednesday, March 27, 2019 9:34 PM
> To: Thomas Monjalon <thomas@monjalon.net>
> Cc: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Burakov, Anatoly
> <anatoly.burakov@intel.com>; stable@dpdk.org
> Subject: RE: [dpdk-dev] [PATCH] eal: initialize alarms early
> 
> 
> 
> > -----Original Message-----
> > From: Thomas Monjalon [mailto:thomas@monjalon.net]
> > Sent: Wednesday, March 27, 2019 7:12 PM
> > To: Stojaczyk, Dariusz <dariusz.stojaczyk@intel.com>
> > Cc: dev@dpdk.org; Zhang, Qi Z <qi.z.zhang@intel.com>; Burakov, Anatoly
> > <anatoly.burakov@intel.com>; stable@dpdk.org
> > Subject: Re: [dpdk-dev] [PATCH] eal: initialize alarms early
> >
> > 26/03/2019 19:43, Darek Stojaczyk:
> > > We currently initialize rte_alarms after starting
> > > to listen for IPC hotplug requests, which gives
> > > us a data race window. Upon receiving such hotplug
> > > request we always try to set an alarm and this
> > > obviously doesn't work if the alarms weren't
> > > initialized yet.
> > >
> > > To fix it, we initialize alarms before starting
> > > to listen for IPC hotplug messages. Specifically,
> > > we move rte_eal_alarm_init() right after
> > > rte_eal_intr_init() as it makes some sense to
> > > keep those two close to each other.
> >
> > I wonder which regression it will bring :)
> > The experience shows that we cannot touch this function
> > without introducing a regression. Please check twice.
> 
> Hah, ok - I'll check again the possible outcomes of this.
> 

Done, I can't see any case I could break.

> >
> > > Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> > > Cc: Qi Zhang <qi.z.zhang@intel.com>
> > > Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> > > Cc: stable@dpdk.org
> > >
> > > Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> > > ---
> > >  lib/librte_eal/linux/eal/eal.c | 12 ++++++------
> > >  1 file changed, 6 insertions(+), 6 deletions(-)
> >
> > You probably need to update the FreeBSD version too.
> >
> 
> Oh, that I cannot do. First of all, in bsd code I don't see
> rte_mp_dev_hotplug_init() called anywhere, as if bsd
> did not listen for IPC hotplug messages at all and hence did
> not have any data race in this area. Second, I would be
> afraid to touch any bsd code as I'm not running any bsd
> system.

Basing on Anatoly's feedback, I pushed a v2 with bsd changes
included as well.

Thanks!
D.

> 
> D.


^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [dpdk-stable] [PATCH v2] eal: initialize alarms early
  2019-04-01 14:18 ` [dpdk-dev] [PATCH v2] " Darek Stojaczyk
  2019-04-01 14:18   ` Darek Stojaczyk
@ 2019-04-02 13:01   ` Thomas Monjalon
  2019-04-02 13:01     ` Thomas Monjalon
  1 sibling, 1 reply; 20+ messages in thread
From: Thomas Monjalon @ 2019-04-02 13:01 UTC (permalink / raw)
  To: Darek Stojaczyk; +Cc: stable, dev, bruce.richardson, Qi Zhang, Anatoly Burakov

01/04/2019 16:18, Darek Stojaczyk:
> On linux, we currently initialize rte_alarms after
> starting to listen for IPC hotplug requests, which gives
> us a data race window. Upon receiving such hotplug
> request we always try to set an alarm and this obviously
> doesn't work if the alarms weren't initialized yet.
> 
> To fix it, we initialize alarms before starting to
> listen for IPC hotplug messages. Specifically, we move
> rte_eal_alarm_init() right after rte_eal_intr_init() as
> it makes some sense to keep those two close to each other.
> 
> We update the bsd code as well to keep the initialization
> order the same in both eal implementations.
> 
> Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> Cc: Qi Zhang <qi.z.zhang@intel.com>
> Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> Cc: stable@dpdk.org
> 
> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> ---
> v2:
>  - updated the bsd code as well (Thomas)

Applied, thanks

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: [dpdk-dev] [dpdk-stable] [PATCH v2] eal: initialize alarms early
  2019-04-02 13:01   ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
@ 2019-04-02 13:01     ` Thomas Monjalon
  0 siblings, 0 replies; 20+ messages in thread
From: Thomas Monjalon @ 2019-04-02 13:01 UTC (permalink / raw)
  To: Darek Stojaczyk; +Cc: stable, dev, bruce.richardson, Qi Zhang, Anatoly Burakov

01/04/2019 16:18, Darek Stojaczyk:
> On linux, we currently initialize rte_alarms after
> starting to listen for IPC hotplug requests, which gives
> us a data race window. Upon receiving such hotplug
> request we always try to set an alarm and this obviously
> doesn't work if the alarms weren't initialized yet.
> 
> To fix it, we initialize alarms before starting to
> listen for IPC hotplug messages. Specifically, we move
> rte_eal_alarm_init() right after rte_eal_intr_init() as
> it makes some sense to keep those two close to each other.
> 
> We update the bsd code as well to keep the initialization
> order the same in both eal implementations.
> 
> Fixes: 244d5130719c ("eal: enable hotplug on multi-process")
> Cc: Qi Zhang <qi.z.zhang@intel.com>
> Cc: Anatoly Burakov <anatoly.burakov@intel.com>
> Cc: stable@dpdk.org
> 
> Signed-off-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
> ---
> v2:
>  - updated the bsd code as well (Thomas)

Applied, thanks




^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2019-04-02 13:01 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-03-26 18:43 [dpdk-dev] [PATCH] eal: initialize alarms early Darek Stojaczyk
2019-03-26 18:43 ` Darek Stojaczyk
2019-03-27 18:11 ` Thomas Monjalon
2019-03-27 18:11   ` Thomas Monjalon
2019-03-27 20:33   ` Stojaczyk, Dariusz
2019-03-27 20:33     ` Stojaczyk, Dariusz
2019-03-27 22:42     ` Thomas Monjalon
2019-03-27 22:42       ` Thomas Monjalon
2019-03-28 10:43       ` Bruce Richardson
2019-03-28 10:43         ` Bruce Richardson
2019-03-28 10:46         ` Thomas Monjalon
2019-03-28 10:46           ` Thomas Monjalon
2019-03-28 13:14           ` Burakov, Anatoly
2019-03-28 13:14             ` Burakov, Anatoly
2019-04-01 14:22     ` Stojaczyk, Dariusz
2019-04-01 14:22       ` Stojaczyk, Dariusz
2019-04-01 14:18 ` [dpdk-dev] [PATCH v2] " Darek Stojaczyk
2019-04-01 14:18   ` Darek Stojaczyk
2019-04-02 13:01   ` [dpdk-dev] [dpdk-stable] " Thomas Monjalon
2019-04-02 13:01     ` Thomas Monjalon

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).