All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] spinlock: Move constructor function out of header file
@ 2016-07-14 13:27 damarion
  2016-07-14 18:03 ` Jan Viktorin
  0 siblings, 1 reply; 12+ messages in thread
From: damarion @ 2016-07-14 13:27 UTC (permalink / raw)
  To: dev; +Cc: Damjan Marion

From: Damjan Marion <damarion@cisco.com>

Having constructor function in the header gile is generaly
bad idea, as it will eventually be implanted to 3rd party
library.

In this case it is causing linking issues with 3rd party
libraries when application is not linked to dpdk, due to missing
symbol called by constructor.

Signed-off-by: Damjan Marion <damarion@cisco.com>
---
 lib/librte_eal/common/arch/x86/rte_spinlock.c      | 45 ++++++++++++++++++++++
 .../common/include/arch/x86/rte_spinlock.h         | 13 ++-----
 lib/librte_eal/linuxapp/eal/Makefile               |  1 +
 3 files changed, 49 insertions(+), 10 deletions(-)
 create mode 100644 lib/librte_eal/common/arch/x86/rte_spinlock.c

diff --git a/lib/librte_eal/common/arch/x86/rte_spinlock.c b/lib/librte_eal/common/arch/x86/rte_spinlock.c
new file mode 100644
index 0000000..ad8cc5a
--- /dev/null
+++ b/lib/librte_eal/common/arch/x86/rte_spinlock.c
@@ -0,0 +1,45 @@
+/*-
+ *   BSD LICENSE
+ *
+ *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ *   All rights reserved.
+ *
+ *   Redistribution and use in source and binary forms, with or without
+ *   modification, are permitted provided that the following conditions
+ *   are met:
+ *
+ *     * Redistributions of source code must retain the above copyright
+ *       notice, this list of conditions and the following disclaimer.
+ *     * Redistributions in binary form must reproduce the above copyright
+ *       notice, this list of conditions and the following disclaimer in
+ *       the documentation and/or other materials provided with the
+ *       distribution.
+ *     * Neither the name of Intel Corporation nor the names of its
+ *       contributors may be used to endorse or promote products derived
+ *       from this software without specific prior written permission.
+ *
+ *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "rte_cpuflags.h"
+
+#include <stdint.h>
+
+uint8_t rte_rtm_supported; /* cache the flag to avoid the overhead
+			      of the rte_cpu_get_flag_enabled function */
+
+static void __attribute__((constructor))
+rte_rtm_init(void)
+{
+	rte_rtm_supported = rte_cpu_get_flag_enabled(RTE_CPUFLAG_RTM);
+}
diff --git a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
index 02f95cb..8e630c2 100644
--- a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
+++ b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
@@ -94,24 +94,17 @@ rte_spinlock_trylock (rte_spinlock_t *sl)
 }
 #endif
 
-static uint8_t rtm_supported; /* cache the flag to avoid the overhead
-				 of the rte_cpu_get_flag_enabled function */
-
-static inline void __attribute__((constructor))
-rte_rtm_init(void)
-{
-	rtm_supported = rte_cpu_get_flag_enabled(RTE_CPUFLAG_RTM);
-}
+extern uint8_t rte_rtm_supported;
 
 static inline int rte_tm_supported(void)
 {
-	return rtm_supported;
+	return rte_rtm_supported;
 }
 
 static inline int
 rte_try_tm(volatile int *lock)
 {
-	if (!rtm_supported)
+	if (!rte_rtm_supported)
 		return 0;
 
 	int retries = RTE_RTM_MAX_RETRIES;
diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
index 1a97693..7287d13 100644
--- a/lib/librte_eal/linuxapp/eal/Makefile
+++ b/lib/librte_eal/linuxapp/eal/Makefile
@@ -106,6 +106,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
 
 # from arch dir
 SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c
+SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
 
 CFLAGS_eal_common_cpuflags.o := $(CPUFLAGS_LIST)
 
-- 
2.7.4

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

* Re: spinlock: Move constructor function out of header file
  2016-07-14 13:27 [PATCH] spinlock: Move constructor function out of header file damarion
@ 2016-07-14 18:03 ` Jan Viktorin
  2016-07-14 18:10   ` Damjan Marion (damarion)
  2016-07-15 14:37   ` Thomas Monjalon
  0 siblings, 2 replies; 12+ messages in thread
From: Jan Viktorin @ 2016-07-14 18:03 UTC (permalink / raw)
  To: damarion; +Cc: dev, Bruce Richardson, Konstantin Ananyev, David Marchand

Hello Damjan,

thank you for the patch. It makes sense to me.

Next time, please CC the appropriate maintainers.
(See the MAINTAINERS file in the root of the DPDK source tree.)

In the subject after "spinlock:" you should start with a lower case
letter, so "move constructor..."

On Thu, 14 Jul 2016 15:27:29 +0200
damarion@cisco.com wrote:

> From: Damjan Marion <damarion@cisco.com>
> 
> Having constructor function in the header gile is generaly

I'd write:

Having constructor functions in header files is generally a bad idea.

Anyway:

s/gile/file/

> bad idea, as it will eventually be implanted to 3rd party
> library.
> 
> In this case it is causing linking issues with 3rd party

it causes linking issues

> libraries when application is not linked to dpdk, due to missing

an application

to dpdk due to a missing gymbol (no comma)

> symbol called by constructor.

Please include the following line:

Fixes: ba7468997ea6 ("spinlock: add HTM lock elision for x86")

> 
> Signed-off-by: Damjan Marion <damarion@cisco.com>
> 
> ---
> lib/librte_eal/common/arch/x86/rte_spinlock.c      | 45 ++++++++++++++++++++++
>  .../common/include/arch/x86/rte_spinlock.h         | 13 ++-----
>  lib/librte_eal/linuxapp/eal/Makefile               |  1 +
>  3 files changed, 49 insertions(+), 10 deletions(-)
>  create mode 100644 lib/librte_eal/common/arch/x86/rte_spinlock.c
> 
> diff --git a/lib/librte_eal/common/arch/x86/rte_spinlock.c b/lib/librte_eal/common/arch/x86/rte_spinlock.c
> new file mode 100644
> index 0000000..ad8cc5a
> --- /dev/null
> +++ b/lib/librte_eal/common/arch/x86/rte_spinlock.c
> @@ -0,0 +1,45 @@
> +/*-
> + *   BSD LICENSE
> + *
> + *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
> + *   All rights reserved.
> + *
> + *   Redistribution and use in source and binary forms, with or without
> + *   modification, are permitted provided that the following conditions
> + *   are met:
> + *
> + *     * Redistributions of source code must retain the above copyright
> + *       notice, this list of conditions and the following disclaimer.
> + *     * Redistributions in binary form must reproduce the above copyright
> + *       notice, this list of conditions and the following disclaimer in
> + *       the documentation and/or other materials provided with the
> + *       distribution.
> + *     * Neither the name of Intel Corporation nor the names of its
> + *       contributors may be used to endorse or promote products derived
> + *       from this software without specific prior written permission.
> + *
> + *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
> + *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
> + *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
> + *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
> + *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
> + *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
> + *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
> + *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
> + *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
> + *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
> + *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
> + */
> +
> +#include "rte_cpuflags.h"
> +
> +#include <stdint.h>

According to:
http://dpdk.org/doc/guides-16.04/contributing/coding_style.html#coding-style

you should change the order of these includes.

> +
> +uint8_t rte_rtm_supported; /* cache the flag to avoid the overhead
> +			      of the rte_cpu_get_flag_enabled function */

The comment should be placed before the declaration or use the /**< */
Doxygen style. I'd prefer to placed it before. Can you fix it with this
patch?

> +
> +static void __attribute__((constructor))
> +rte_rtm_init(void)
> +{
> +	rte_rtm_supported = rte_cpu_get_flag_enabled(RTE_CPUFLAG_RTM);
> +}
> diff --git a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
> index 02f95cb..8e630c2 100644
> --- a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
> +++ b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
> @@ -94,24 +94,17 @@ rte_spinlock_trylock (rte_spinlock_t *sl)
>  }
>  #endif
>  
> -static uint8_t rtm_supported; /* cache the flag to avoid the overhead
> -				 of the rte_cpu_get_flag_enabled function */
> -
> -static inline void __attribute__((constructor))
> -rte_rtm_init(void)
> -{
> -	rtm_supported = rte_cpu_get_flag_enabled(RTE_CPUFLAG_RTM);
> -}
> +extern uint8_t rte_rtm_supported;
>  
>  static inline int rte_tm_supported(void)
>  {
> -	return rtm_supported;
> +	return rte_rtm_supported;
>  }
>  
>  static inline int
>  rte_try_tm(volatile int *lock)
>  {
> -	if (!rtm_supported)
> +	if (!rte_rtm_supported)
>  		return 0;
>  
>  	int retries = RTE_RTM_MAX_RETRIES;
> diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
> index 1a97693..7287d13 100644
> --- a/lib/librte_eal/linuxapp/eal/Makefile
> +++ b/lib/librte_eal/linuxapp/eal/Makefile
> @@ -106,6 +106,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
>  
>  # from arch dir
>  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c
> +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c

This is not good, you provide rte_spinlock.c only for x86. Building
for any other arch would fail to find this file.
  
Moreover, the bsdapp/eal/Makefile should reflect this situation as
well.

Regards
Jan

>  
>  CFLAGS_eal_common_cpuflags.o := $(CPUFLAGS_LIST)
>

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

* Re: spinlock: Move constructor function out of header file
  2016-07-14 18:03 ` Jan Viktorin
@ 2016-07-14 18:10   ` Damjan Marion (damarion)
  2016-07-14 22:06     ` Thomas Monjalon
  2016-07-15 14:37   ` Thomas Monjalon
  1 sibling, 1 reply; 12+ messages in thread
From: Damjan Marion (damarion) @ 2016-07-14 18:10 UTC (permalink / raw)
  To: Jan Viktorin; +Cc: dev, Bruce Richardson, Konstantin Ananyev, David Marchand


Dear Jan,

Thank you for your comments. A bit too much overhead to submit simple patch
so let’s forget about it. I will just add it as it is to our private
collection of patches.

If anybody wants to pick it from here, please do...

Thanks,

Damjan


> On 14 Jul 2016, at 20:03, Jan Viktorin <viktorin@rehivetech.com> wrote:
> 
> Hello Damjan,
> 
> thank you for the patch. It makes sense to me.
> 
> Next time, please CC the appropriate maintainers.
> (See the MAINTAINERS file in the root of the DPDK source tree.)
> 
> In the subject after "spinlock:" you should start with a lower case
> letter, so "move constructor..."
> 
> On Thu, 14 Jul 2016 15:27:29 +0200
> damarion@cisco.com wrote:
> 
>> From: Damjan Marion <damarion@cisco.com>
>> 
>> Having constructor function in the header gile is generaly
> 
> I'd write:
> 
> Having constructor functions in header files is generally a bad idea.
> 
> Anyway:
> 
> s/gile/file/
> 
>> bad idea, as it will eventually be implanted to 3rd party
>> library.
>> 
>> In this case it is causing linking issues with 3rd party
> 
> it causes linking issues
> 
>> libraries when application is not linked to dpdk, due to missing
> 
> an application
> 
> to dpdk due to a missing gymbol (no comma)
> 
>> symbol called by constructor.
> 
> Please include the following line:
> 
> Fixes: ba7468997ea6 ("spinlock: add HTM lock elision for x86")
> 
>> 
>> Signed-off-by: Damjan Marion <damarion@cisco.com>
>> 
>> ---
>> lib/librte_eal/common/arch/x86/rte_spinlock.c      | 45 ++++++++++++++++++++++
>> .../common/include/arch/x86/rte_spinlock.h         | 13 ++-----
>> lib/librte_eal/linuxapp/eal/Makefile               |  1 +
>> 3 files changed, 49 insertions(+), 10 deletions(-)
>> create mode 100644 lib/librte_eal/common/arch/x86/rte_spinlock.c
>> 
>> diff --git a/lib/librte_eal/common/arch/x86/rte_spinlock.c b/lib/librte_eal/common/arch/x86/rte_spinlock.c
>> new file mode 100644
>> index 0000000..ad8cc5a
>> --- /dev/null
>> +++ b/lib/librte_eal/common/arch/x86/rte_spinlock.c
>> @@ -0,0 +1,45 @@
>> +/*-
>> + *   BSD LICENSE
>> + *
>> + *   Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
>> + *   All rights reserved.
>> + *
>> + *   Redistribution and use in source and binary forms, with or without
>> + *   modification, are permitted provided that the following conditions
>> + *   are met:
>> + *
>> + *     * Redistributions of source code must retain the above copyright
>> + *       notice, this list of conditions and the following disclaimer.
>> + *     * Redistributions in binary form must reproduce the above copyright
>> + *       notice, this list of conditions and the following disclaimer in
>> + *       the documentation and/or other materials provided with the
>> + *       distribution.
>> + *     * Neither the name of Intel Corporation nor the names of its
>> + *       contributors may be used to endorse or promote products derived
>> + *       from this software without specific prior written permission.
>> + *
>> + *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
>> + *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
>> + *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
>> + *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
>> + *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
>> + *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
>> + *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
>> + *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
>> + *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
>> + *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
>> + *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
>> + */
>> +
>> +#include "rte_cpuflags.h"
>> +
>> +#include <stdint.h>
> 
> According to:
> http://dpdk.org/doc/guides-16.04/contributing/coding_style.html#coding-style
> 
> you should change the order of these includes.
> 
>> +
>> +uint8_t rte_rtm_supported; /* cache the flag to avoid the overhead
>> +			      of the rte_cpu_get_flag_enabled function */
> 
> The comment should be placed before the declaration or use the /**< */
> Doxygen style. I'd prefer to placed it before. Can you fix it with this
> patch?
> 
>> +
>> +static void __attribute__((constructor))
>> +rte_rtm_init(void)
>> +{
>> +	rte_rtm_supported = rte_cpu_get_flag_enabled(RTE_CPUFLAG_RTM);
>> +}
>> diff --git a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
>> index 02f95cb..8e630c2 100644
>> --- a/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
>> +++ b/lib/librte_eal/common/include/arch/x86/rte_spinlock.h
>> @@ -94,24 +94,17 @@ rte_spinlock_trylock (rte_spinlock_t *sl)
>> }
>> #endif
>> 
>> -static uint8_t rtm_supported; /* cache the flag to avoid the overhead
>> -				 of the rte_cpu_get_flag_enabled function */
>> -
>> -static inline void __attribute__((constructor))
>> -rte_rtm_init(void)
>> -{
>> -	rtm_supported = rte_cpu_get_flag_enabled(RTE_CPUFLAG_RTM);
>> -}
>> +extern uint8_t rte_rtm_supported;
>> 
>> static inline int rte_tm_supported(void)
>> {
>> -	return rtm_supported;
>> +	return rte_rtm_supported;
>> }
>> 
>> static inline int
>> rte_try_tm(volatile int *lock)
>> {
>> -	if (!rtm_supported)
>> +	if (!rte_rtm_supported)
>> 		return 0;
>> 
>> 	int retries = RTE_RTM_MAX_RETRIES;
>> diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
>> index 1a97693..7287d13 100644
>> --- a/lib/librte_eal/linuxapp/eal/Makefile
>> +++ b/lib/librte_eal/linuxapp/eal/Makefile
>> @@ -106,6 +106,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
>> 
>> # from arch dir
>> SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c
>> +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
> 
> This is not good, you provide rte_spinlock.c only for x86. Building
> for any other arch would fail to find this file.
> 
> Moreover, the bsdapp/eal/Makefile should reflect this situation as
> well.
> 
> Regards
> Jan
> 
>> 
>> CFLAGS_eal_common_cpuflags.o := $(CPUFLAGS_LIST)


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

* Re: spinlock: Move constructor function out of header file
  2016-07-14 18:10   ` Damjan Marion (damarion)
@ 2016-07-14 22:06     ` Thomas Monjalon
  2016-07-14 22:20       ` Damjan Marion (damarion)
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2016-07-14 22:06 UTC (permalink / raw)
  To: Damjan Marion (damarion)
  Cc: dev, Jan Viktorin, Bruce Richardson, Konstantin Ananyev, David Marchand

2016-07-14 18:10, Damjan Marion:
> Dear Jan,
> 
> Thank you for your comments. A bit too much overhead to submit simple patch
> so let’s forget about it. I will just add it as it is to our private
> collection of patches.

These are changes trivial to fix when applying.
I strongly prefer that you upstream patches instead of keeping patches
in the VPP repository. I will help you in this task.
Thanks for the effort.

> If anybody wants to pick it from here, please do...

I can update the bsdapp Makefile and do the trivial changes for you,
if we agree that we do not need to touch to other archs (see below).


> > On 14 Jul 2016, at 20:03, Jan Viktorin <viktorin@rehivetech.com> wrote:
> >> --- a/lib/librte_eal/linuxapp/eal/Makefile
> >> +++ b/lib/librte_eal/linuxapp/eal/Makefile
> >> @@ -106,6 +106,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
> >> 
> >> # from arch dir
> >> SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c
> >> +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
> > 
> > This is not good, you provide rte_spinlock.c only for x86. Building
> > for any other arch would fail to find this file.

It is not used in other archs. It is really x86 specific.

> > Moreover, the bsdapp/eal/Makefile should reflect this situation as
> > well.

Good catch.

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

* Re: spinlock: Move constructor function out of header file
  2016-07-14 22:06     ` Thomas Monjalon
@ 2016-07-14 22:20       ` Damjan Marion (damarion)
  2016-07-15  8:31         ` Thomas Monjalon
  0 siblings, 1 reply; 12+ messages in thread
From: Damjan Marion (damarion) @ 2016-07-14 22:20 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Jan Viktorin, Bruce Richardson, Konstantin Ananyev, David Marchand


> On 15 Jul 2016, at 00:06, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
> 
> 2016-07-14 18:10, Damjan Marion:
>> Dear Jan,
>> 
>> Thank you for your comments. A bit too much overhead to submit simple patch
>> so let’s forget about it. I will just add it as it is to our private
>> collection of patches.
> 
> These are changes trivial to fix when applying.
> I strongly prefer that you upstream patches instead of keeping patches
> in the VPP repository. I will help you in this task.
> Thanks for the effort.

Yeah, I agree with you, unfortunately it is all about time,
for me it is still cheaper to rebase them.

I respect your rules, but I just don’t have enough free cycles
to spend learning all of them, for my occasional patch submission.

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

* Re: spinlock: Move constructor function out of header file
  2016-07-14 22:20       ` Damjan Marion (damarion)
@ 2016-07-15  8:31         ` Thomas Monjalon
  2016-07-15  9:54           ` Damjan Marion (damarion)
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2016-07-15  8:31 UTC (permalink / raw)
  To: Damjan Marion (damarion)
  Cc: dev, Jan Viktorin, Bruce Richardson, Konstantin Ananyev, David Marchand

2016-07-14 22:20, Damjan Marion:
> 
> > On 15 Jul 2016, at 00:06, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
> > 
> > 2016-07-14 18:10, Damjan Marion:
> >> Dear Jan,
> >> 
> >> Thank you for your comments. A bit too much overhead to submit simple patch
> >> so let’s forget about it. I will just add it as it is to our private
> >> collection of patches.
> > 
> > These are changes trivial to fix when applying.
> > I strongly prefer that you upstream patches instead of keeping patches
> > in the VPP repository. I will help you in this task.
> > Thanks for the effort.
> 
> Yeah, I agree with you, unfortunately it is all about time,
> for me it is still cheaper to rebase them.
> 
> I respect your rules, but I just don’t have enough free cycles
> to spend learning all of them, for my occasional patch submission.

We know there is a learning curve for the submission process.
That's why we do not expect it to be fully satisfied, especially
from occasional contributors.
I am used to do some not significant changes before applying to
help newcomers patches being accepted. That's what I will do in
your case.
As I said previously I will help you to drop your local patches.

Please continue sending other patches with a detailed explanation
and we will take care of them.

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

* Re: spinlock: Move constructor function out of header file
  2016-07-15  8:31         ` Thomas Monjalon
@ 2016-07-15  9:54           ` Damjan Marion (damarion)
  2016-07-15 10:09             ` Thomas Monjalon
  0 siblings, 1 reply; 12+ messages in thread
From: Damjan Marion (damarion) @ 2016-07-15  9:54 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Jan Viktorin, Bruce Richardson, Konstantin Ananyev, David Marchand


> On 15 Jul 2016, at 10:31, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
> 
> 2016-07-14 22:20, Damjan Marion:
>> 
>>> On 15 Jul 2016, at 00:06, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
>>> 
>>> 2016-07-14 18:10, Damjan Marion:
>>>> Dear Jan,
>>>> 
>>>> Thank you for your comments. A bit too much overhead to submit simple patch
>>>> so let’s forget about it. I will just add it as it is to our private
>>>> collection of patches.
>>> 
>>> These are changes trivial to fix when applying.
>>> I strongly prefer that you upstream patches instead of keeping patches
>>> in the VPP repository. I will help you in this task.
>>> Thanks for the effort.
>> 
>> Yeah, I agree with you, unfortunately it is all about time,
>> for me it is still cheaper to rebase them.
>> 
>> I respect your rules, but I just don’t have enough free cycles
>> to spend learning all of them, for my occasional patch submission.
> 
> We know there is a learning curve for the submission process.
> That's why we do not expect it to be fully satisfied, especially
> from occasional contributors.
> I am used to do some not significant changes before applying to
> help newcomers patches being accepted. That's what I will do in
> your case.
> As I said previously I will help you to drop your local patches.
> 
> Please continue sending other patches with a detailed explanation
> and we will take care of them.

Ok, Thanks!

So we don’t have much pending beside 2 patches for i40e which 
Jeff submitted yesterday and they will i guess need to wait for 16.11.

Only one which I have on my mind is:

https://git.fd.io/cgit/vpp/tree/dpdk/dpdk-16.04_patches/0005-Allow-applications-to-override-rte_delay_us.patch

This is big issue for us when running single-core, as some
drivers tend to call rte_delay_us for a long time, and that is 
causing packet drops. I.e. if you do stop/start on one interface
and you are running BFD on another one, BFD will fail…

Current patch is hack, it basically allows us to override 
delay function so we can de-schedule it,
do some other useful work while waiting for delay to finish
and then give control back to original function…

Maybe we can fix this by providing a delay callback functionality...

Thanks,

Damjan



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

* Re: spinlock: Move constructor function out of header file
  2016-07-15  9:54           ` Damjan Marion (damarion)
@ 2016-07-15 10:09             ` Thomas Monjalon
  2016-07-16 11:12               ` Damjan Marion (damarion)
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2016-07-15 10:09 UTC (permalink / raw)
  To: Damjan Marion (damarion)
  Cc: dev, Jan Viktorin, Bruce Richardson, Konstantin Ananyev, David Marchand

2016-07-15 09:54, Damjan Marion:
> So we don’t have much pending beside 2 patches for i40e which 
> Jeff submitted yesterday and they will i guess need to wait for 16.11.

Yes these i40e patches will probably have to wait 16.11.

> Only one which I have on my mind is:
> 
> https://git.fd.io/cgit/vpp/tree/dpdk/dpdk-16.04_patches/0005-Allow-applications-to-override-rte_delay_us.patch
> 
> This is big issue for us when running single-core, as some
> drivers tend to call rte_delay_us for a long time, and that is 
> causing packet drops. I.e. if you do stop/start on one interface
> and you are running BFD on another one, BFD will fail…
> 
> Current patch is hack, it basically allows us to override 
> delay function so we can de-schedule it,
> do some other useful work while waiting for delay to finish
> and then give control back to original function…
> 
> Maybe we can fix this by providing a delay callback functionality...

Yes it could be an idea.
Please send a RFC patch.

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

* Re: spinlock: Move constructor function out of header file
  2016-07-14 18:03 ` Jan Viktorin
  2016-07-14 18:10   ` Damjan Marion (damarion)
@ 2016-07-15 14:37   ` Thomas Monjalon
  2016-07-15 15:08     ` Thomas Monjalon
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2016-07-15 14:37 UTC (permalink / raw)
  To: Jan Viktorin, damarion
  Cc: dev, Bruce Richardson, Konstantin Ananyev, David Marchand

I will apply it with trivial changes suggested by Jan and
the small needed changes that I describe below:

2016-07-14 20:03, Jan Viktorin:
> On Thu, 14 Jul 2016 15:27:29 +0200
> damarion@cisco.com wrote:
> > --- /dev/null
> > +++ b/lib/librte_eal/common/arch/x86/rte_spinlock.c
[...]
> > +uint8_t rte_rtm_supported; /* cache the flag to avoid the overhead
> > +			      of the rte_cpu_get_flag_enabled function */

This variable must be exported in the .map file.

> > --- a/lib/librte_eal/linuxapp/eal/Makefile
> > +++ b/lib/librte_eal/linuxapp/eal/Makefile
> > @@ -106,6 +106,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
> >  
> >  # from arch dir
> >  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c
> > +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
> 
> This is not good, you provide rte_spinlock.c only for x86. Building
> for any other arch would fail to find this file.

This change do the trick:

-SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
+SRCS-$(CONFIG_RTE_ARCH_X86) += rte_spinlock.c

(Note that CONFIG_RTE_EXEC_ENV_LINUXAPP check is not needed inside linuxapp EAL)

> Moreover, the bsdapp/eal/Makefile should reflect this situation as
> well.

Yes

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

* Re: spinlock: Move constructor function out of header file
  2016-07-15 14:37   ` Thomas Monjalon
@ 2016-07-15 15:08     ` Thomas Monjalon
  2016-07-16 11:14       ` Damjan Marion (damarion)
  0 siblings, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2016-07-15 15:08 UTC (permalink / raw)
  To: damarion
  Cc: Jan Viktorin, dev, Bruce Richardson, Konstantin Ananyev, David Marchand

2016-07-15 16:37, Thomas Monjalon:
> I will apply it with trivial changes suggested by Jan and
> the small needed changes that I describe below:
> 
> 2016-07-14 20:03, Jan Viktorin:
> > On Thu, 14 Jul 2016 15:27:29 +0200
> > damarion@cisco.com wrote:
> > > --- /dev/null
> > > +++ b/lib/librte_eal/common/arch/x86/rte_spinlock.c
> [...]
> > > +uint8_t rte_rtm_supported; /* cache the flag to avoid the overhead
> > > +			      of the rte_cpu_get_flag_enabled function */
> 
> This variable must be exported in the .map file.
> 
> > > --- a/lib/librte_eal/linuxapp/eal/Makefile
> > > +++ b/lib/librte_eal/linuxapp/eal/Makefile
> > > @@ -106,6 +106,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
> > >  
> > >  # from arch dir
> > >  SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c
> > > +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
> > 
> > This is not good, you provide rte_spinlock.c only for x86. Building
> > for any other arch would fail to find this file.
> 
> This change do the trick:
> 
> -SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
> +SRCS-$(CONFIG_RTE_ARCH_X86) += rte_spinlock.c
> 
> (Note that CONFIG_RTE_EXEC_ENV_LINUXAPP check is not needed inside linuxapp EAL)
> 
> > Moreover, the bsdapp/eal/Makefile should reflect this situation as
> > well.
> 
> Yes

Applied with above changes, thanks

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

* Re: spinlock: Move constructor function out of header file
  2016-07-15 10:09             ` Thomas Monjalon
@ 2016-07-16 11:12               ` Damjan Marion (damarion)
  0 siblings, 0 replies; 12+ messages in thread
From: Damjan Marion (damarion) @ 2016-07-16 11:12 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: dev, Jan Viktorin, Bruce Richardson, Konstantin Ananyev, David Marchand


> On 15 Jul 2016, at 12:09, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
> 
> 2016-07-15 09:54, Damjan Marion:
>> So we don’t have much pending beside 2 patches for i40e which 
>> Jeff submitted yesterday and they will i guess need to wait for 16.11.
> 
> Yes these i40e patches will probably have to wait 16.11.
> 
>> Only one which I have on my mind is:
>> 
>> https://git.fd.io/cgit/vpp/tree/dpdk/dpdk-16.04_patches/0005-Allow-applications-to-override-rte_delay_us.patch
>> 
>> This is big issue for us when running single-core, as some
>> drivers tend to call rte_delay_us for a long time, and that is 
>> causing packet drops. I.e. if you do stop/start on one interface
>> and you are running BFD on another one, BFD will fail…
>> 
>> Current patch is hack, it basically allows us to override 
>> delay function so we can de-schedule it,
>> do some other useful work while waiting for delay to finish
>> and then give control back to original function…
>> 
>> Maybe we can fix this by providing a delay callback functionality...
> 
> Yes it could be an idea.
> Please send a RFC patch.

OK, I will ask one of our guys to work on it...

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

* Re: spinlock: Move constructor function out of header file
  2016-07-15 15:08     ` Thomas Monjalon
@ 2016-07-16 11:14       ` Damjan Marion (damarion)
  0 siblings, 0 replies; 12+ messages in thread
From: Damjan Marion (damarion) @ 2016-07-16 11:14 UTC (permalink / raw)
  To: Thomas Monjalon
  Cc: Jan Viktorin, dev, Bruce Richardson, Konstantin Ananyev, David Marchand


> On 15 Jul 2016, at 17:08, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
> 
> 2016-07-15 16:37, Thomas Monjalon:
>> I will apply it with trivial changes suggested by Jan and
>> the small needed changes that I describe below:
>> 
>> 2016-07-14 20:03, Jan Viktorin:
>>> On Thu, 14 Jul 2016 15:27:29 +0200
>>> damarion@cisco.com wrote:
>>>> --- /dev/null
>>>> +++ b/lib/librte_eal/common/arch/x86/rte_spinlock.c
>> [...]
>>>> +uint8_t rte_rtm_supported; /* cache the flag to avoid the overhead
>>>> +			      of the rte_cpu_get_flag_enabled function */
>> 
>> This variable must be exported in the .map file.
>> 
>>>> --- a/lib/librte_eal/linuxapp/eal/Makefile
>>>> +++ b/lib/librte_eal/linuxapp/eal/Makefile
>>>> @@ -106,6 +106,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c
>>>> 
>>>> # from arch dir
>>>> SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c
>>>> +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
>>> 
>>> This is not good, you provide rte_spinlock.c only for x86. Building
>>> for any other arch would fail to find this file.
>> 
>> This change do the trick:
>> 
>> -SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_spinlock.c
>> +SRCS-$(CONFIG_RTE_ARCH_X86) += rte_spinlock.c
>> 
>> (Note that CONFIG_RTE_EXEC_ENV_LINUXAPP check is not needed inside linuxapp EAL)
>> 
>>> Moreover, the bsdapp/eal/Makefile should reflect this situation as
>>> well.
>> 
>> Yes
> 
> Applied with above changes, thanks

Thanks!

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

end of thread, other threads:[~2016-07-16 11:14 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-14 13:27 [PATCH] spinlock: Move constructor function out of header file damarion
2016-07-14 18:03 ` Jan Viktorin
2016-07-14 18:10   ` Damjan Marion (damarion)
2016-07-14 22:06     ` Thomas Monjalon
2016-07-14 22:20       ` Damjan Marion (damarion)
2016-07-15  8:31         ` Thomas Monjalon
2016-07-15  9:54           ` Damjan Marion (damarion)
2016-07-15 10:09             ` Thomas Monjalon
2016-07-16 11:12               ` Damjan Marion (damarion)
2016-07-15 14:37   ` Thomas Monjalon
2016-07-15 15:08     ` Thomas Monjalon
2016-07-16 11:14       ` Damjan Marion (damarion)

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.