DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
@ 2020-11-04 17:03 Conor Walsh
  2020-11-04 18:48 ` Honnappa Nagarahalli
  2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh
  0 siblings, 2 replies; 13+ messages in thread
From: Conor Walsh @ 2020-11-04 17:03 UTC (permalink / raw)
  To: honnappa.nagarahalli, konstantin.ananyev; +Cc: dev, linglix.chen, Conor Walsh

When DPDK is compiled with gcc < 9 with the optimization level set to 1
gcc sees zcd in test_ring.h as possibly being uninitialised. To correct
this error zcd has been initialised to {0} in
test_ring_mt_peek_stress_zc.c.

Signed-off-by: Conor Walsh <conor.walsh@intel.com>
---
 app/test/test_ring_mt_peek_stress_zc.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/app/test/test_ring_mt_peek_stress_zc.c b/app/test/test_ring_mt_peek_stress_zc.c
index 7e0bd511a7..ba0acf237c 100644
--- a/app/test/test_ring_mt_peek_stress_zc.c
+++ b/app/test/test_ring_mt_peek_stress_zc.c
@@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n,
 	uint32_t *avail)
 {
 	uint32_t m;
-	struct rte_ring_zc_data zcd;
+	struct rte_ring_zc_data zcd = {0};
 
 	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
 	n = (m == n) ? n : 0;
@@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n,
 	uint32_t *free)
 {
 	uint32_t m;
-	struct rte_ring_zc_data zcd;
+	struct rte_ring_zc_data zcd = {0};
 
 	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
 	n = (m == n) ? n : 0;
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-04 17:03 [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error Conor Walsh
@ 2020-11-04 18:48 ` Honnappa Nagarahalli
  2020-11-09 16:20   ` Walsh, Conor
  2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh
  1 sibling, 1 reply; 13+ messages in thread
From: Honnappa Nagarahalli @ 2020-11-04 18:48 UTC (permalink / raw)
  To: Conor Walsh, konstantin.ananyev
  Cc: dev, linglix.chen, nd, Honnappa Nagarahalli, nd

Hi Conor,
	Thanks for the patch.

<snip>

> 
> When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc
> sees zcd in test_ring.h as possibly being uninitialised. To correct this error zcd
> has been initialised to {0} in test_ring_mt_peek_stress_zc.c.
> 
> Signed-off-by: Conor Walsh <conor.walsh@intel.com>
> ---
>  app/test/test_ring_mt_peek_stress_zc.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/app/test/test_ring_mt_peek_stress_zc.c
> b/app/test/test_ring_mt_peek_stress_zc.c
> index 7e0bd511a7..ba0acf237c 100644
> --- a/app/test/test_ring_mt_peek_stress_zc.c
> +++ b/app/test/test_ring_mt_peek_stress_zc.c
> @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj,
> uint32_t n,
>  	uint32_t *avail)
>  {
>  	uint32_t m;
> -	struct rte_ring_zc_data zcd;
> +	struct rte_ring_zc_data zcd = {0};
I faced similar problems when I created this test case. I refrained from doing this initialization as it might mask the problems in the library. Is it possible to identify which path in the library is actually resulting in this error? I would prefer to fix that instead.

> 
>  	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
>  	n = (m == n) ? n : 0;
> @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const
> *obj, uint32_t n,
>  	uint32_t *free)
>  {
>  	uint32_t m;
> -	struct rte_ring_zc_data zcd;
> +	struct rte_ring_zc_data zcd = {0};
> 
>  	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
>  	n = (m == n) ? n : 0;
> --
> 2.25.1


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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-04 18:48 ` Honnappa Nagarahalli
@ 2020-11-09 16:20   ` Walsh, Conor
  2020-11-09 16:44     ` Honnappa Nagarahalli
  0 siblings, 1 reply; 13+ messages in thread
From: Walsh, Conor @ 2020-11-09 16:20 UTC (permalink / raw)
  To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd

Hi Honnappa,

Sorry about the delayed reply.
The build error trace is below, the build command used was: CC=gcc meson --optimization=1 --werror build1; ninja -C build1
I am not sure how I could fix this issue without initialising zcd.

[2339/2407] Compiling C object app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl -I../lib/librte_acl -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -I../lib/librte_eal/include -Ilib/librte_eal/linux/include -I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -I../lib/librte_eal/x86/include -Ilib/librte_eal/common -I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci -I../lib/librte_pci -Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -I../lib/librte_bitratestats -Ilib/librte_ethdev -I../lib/librte_ethdev -Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf -Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring -I../lib/librte_ring -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf -I../lib/librte_bpf -Ilib/librte_cfgfile -I../lib/librte_cfgfile -Ilib/librte_cmdline -I../lib/librte_cmdline -Ilib/librte_cryptodev -I../lib/librte_cryptodev -Ilib/librte_distributor -I../lib/librte_distributor -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu -Ilib/librte_eventdev -I../lib/librte_eventdev -Ilib/librte_timer -I../lib/librte_timer -Ilib/librte_fib -I../lib/librte_fib -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -I../lib/librte_flow_classify -Ilib/librte_table -I../lib/librte_table -Ilib/librte_port -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched -Ilib/librte_ip_frag -I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni -Ilib/librte_lpm -I../lib/librte_lpm -Ilib/librte_graph -I../lib/librte_graph -Ilib/librte_ipsec -I../lib/librte_ipsec -Ilib/librte_security -I../lib/librte_security -Ilib/librte_latencystats -I../lib/librte_latencystats -Ilib/librte_member -I../lib/librte_member -Ilib/librte_node -I../lib/librte_node -Ilib/librte_pipeline -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev -Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -I../lib/librte_stack -Idrivers/mempool/ring -I../drivers/mempool/ring -Idrivers/mempool/stack -I../drivers/mempool/stack -Idrivers/event/skeleton -I../drivers/event/skeleton -Idrivers/net/bonding -I../drivers/net/bonding -Idrivers/net/ring -I../drivers/net/ring -Ilib/librte_power -I../lib/librte_power -Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-missing-field-initializers -march=native -mno-avx512f -DALLOW_EXPERIMENTAL_API -Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o -c ../app/test/test_ring_mt_peek_stress_zc.c
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring_stress_impl.h: In function 'test_worker':
../app/test/test_ring.h:82:3: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
   test_ring_mem_copy(zcd->ptr2, src,
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      esize, num - zcd->n1);
      ~~~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void *)&zcd+8)' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:63:11: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  sz = num * sizeof(void *);
       ~~~~^~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd.n1' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: '*((void *)&zcd+8)' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
cc1: all warnings being treated as errors
[2340/2407] Compiling C object drivers/libtmp_...ontx2.a.p/event_octeontx2_otx2_worker_dual.c.o
ninja: build stopped: subcommand failed.

Thanks,
Conor.

> From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Sent: Wednesday 4 November 2020 18:48
> To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>
> Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd
> <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> nd <nd@arm.com>
> Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile
> error
> 
> Hi Conor,
> 	Thanks for the patch.
> 
> <snip>
> 
> >
> > When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc
> > sees zcd in test_ring.h as possibly being uninitialised. To correct this error
> zcd
> > has been initialised to {0} in test_ring_mt_peek_stress_zc.c.
> >
> > Signed-off-by: Conor Walsh <conor.walsh@intel.com>
> > ---
> >  app/test/test_ring_mt_peek_stress_zc.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/app/test/test_ring_mt_peek_stress_zc.c
> > b/app/test/test_ring_mt_peek_stress_zc.c
> > index 7e0bd511a7..ba0acf237c 100644
> > --- a/app/test/test_ring_mt_peek_stress_zc.c
> > +++ b/app/test/test_ring_mt_peek_stress_zc.c
> > @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj,
> > uint32_t n,
> >  	uint32_t *avail)
> >  {
> >  	uint32_t m;
> > -	struct rte_ring_zc_data zcd;
> > +	struct rte_ring_zc_data zcd = {0};
> I faced similar problems when I created this test case. I refrained from doing
> this initialization as it might mask the problems in the library. Is it possible to
> identify which path in the library is actually resulting in this error? I would
> prefer to fix that instead.
> 
> >
> >  	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
> >  	n = (m == n) ? n : 0;
> > @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void *
> const
> > *obj, uint32_t n,
> >  	uint32_t *free)
> >  {
> >  	uint32_t m;
> > -	struct rte_ring_zc_data zcd;
> > +	struct rte_ring_zc_data zcd = {0};
> >
> >  	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
> >  	n = (m == n) ? n : 0;
> > --
> > 2.25.1


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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-09 16:20   ` Walsh, Conor
@ 2020-11-09 16:44     ` Honnappa Nagarahalli
  2020-11-09 17:03       ` Walsh, Conor
  0 siblings, 1 reply; 13+ messages in thread
From: Honnappa Nagarahalli @ 2020-11-09 16:44 UTC (permalink / raw)
  To: Walsh, Conor, Ananyev, Konstantin
  Cc: dev, Chen, LingliX, nd, Honnappa Nagarahalli, nd

<snip>

> 
> Hi Honnappa,
> 
> Sorry about the delayed reply.
No problem, thank you.

> The build error trace is below, the build command used was: CC=gcc meson --
> optimization=1 --werror build1; ninja -C build1 I am not sure how I could fix
> this issue without initialising zcd.
> 
> [2339/2407] Compiling C object app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o
> FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
> gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl -
> I../lib/librte_acl -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -
> I../lib/librte_eal/include -Ilib/librte_eal/linux/include -
> I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -
> I../lib/librte_eal/x86/include -Ilib/librte_eal/common -
> I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -Ilib/librte_kvargs -
> I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -
> Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -
> I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci -I../lib/librte_pci -
> Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -
> I../lib/librte_bitratestats -Ilib/librte_ethdev -I../lib/librte_ethdev -
> Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf -
> Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring -I../lib/librte_ring
> -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf -I../lib/librte_bpf -
> Ilib/librte_cfgfile -I../lib/librte_cfgfile -Ilib/librte_cmdline -I../lib/librte_cmdline
> -Ilib/librte_cryptodev -I../lib/librte_cryptodev -Ilib/librte_distributor -
> I../lib/librte_distributor -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -
> I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu -Ilib/librte_eventdev -
> I../lib/librte_eventdev -Ilib/librte_timer -I../lib/librte_timer -Ilib/librte_fib -
> I../lib/librte_fib -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -
> I../lib/librte_flow_classify -Ilib/librte_table -I../lib/librte_table -Ilib/librte_port
> -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched -Ilib/librte_ip_frag -
> I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni -Ilib/librte_lpm -
> I../lib/librte_lpm -Ilib/librte_graph -I../lib/librte_graph -Ilib/librte_ipsec -
> I../lib/librte_ipsec -Ilib/librte_security -I../lib/librte_security -
> Ilib/librte_latencystats -I../lib/librte_latencystats -Ilib/librte_member -
> I../lib/librte_member -Ilib/librte_node -I../lib/librte_node -Ilib/librte_pipeline
> -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev -
> Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -I../lib/librte_stack -
> Idrivers/mempool/ring -I../drivers/mempool/ring -Idrivers/mempool/stack -
> I../drivers/mempool/stack -Idrivers/event/skeleton -
> I../drivers/event/skeleton -Idrivers/net/bonding -I../drivers/net/bonding -
> Idrivers/net/ring -I../drivers/net/ring -Ilib/librte_power -I../lib/librte_power -
> Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -
> I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -
> D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include
> rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -
> Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-
> externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-
> prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-missing-
> field-initializers -march=native -mno-avx512f -DALLOW_EXPERIMENTAL_API -
> Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -
> DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o -c
> ../app/test/test_ring_mt_peek_stress_zc.c
> In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> ../app/test/test_ring_stress_impl.h: In function 'test_worker':
> ../app/test/test_ring.h:82:3: error: 'zcd.n1' may be used uninitialized in this
> function [-Werror=maybe-uninitialized]
>    test_ring_mem_copy(zcd->ptr2, src,
>    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>       esize, num - zcd->n1);
>       ~~~~~~~~~~~~~~~~~~~~~
> ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was declared
> here
>   struct rte_ring_zc_data zcd;
>                           ^~~
> In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> ../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used
> uninitialized in this function [-Werror=maybe-uninitialized]
>   memcpy(dst, src, sz);
>   ^~~~~~~~~~~~~~~~~~~~
> ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void *)&zcd+8)'
> was declared here
I remember seeing a similar error in test_ring_st_peek_stress_zc.c.
In the file test_ring_mt_peek_stress_zc.c, after the call to enqueue/dequeue API calls, we have:
"n = (m == n) ? n : 0;"

This is present as the code was copied from existing code. I do not see why this line is required. Can you please try to remove this line and see if it works?

>   struct rte_ring_zc_data zcd;
>                           ^~~
> In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> ../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this
> function [-Werror=maybe-uninitialized]
>   memcpy(dst, src, sz);
>   ^~~~~~~~~~~~~~~~~~~~
> ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd' was declared
> here
>   struct rte_ring_zc_data zcd;
>                           ^~~
> In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> ../app/test/test_ring.h:63:11: error: 'zcd.n1' may be used uninitialized in this
> function [-Werror=maybe-uninitialized]
>   sz = num * sizeof(void *);
>        ~~~~^~~~~~~~~~~~~~~~
> ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd.n1' was declared
> here
>   struct rte_ring_zc_data zcd;
>                           ^~~
> In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> ../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used
> uninitialized in this function [-Werror=maybe-uninitialized]
>   memcpy(dst, src, sz);
>   ^~~~~~~~~~~~~~~~~~~~
> ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: '*((void *)&zcd+8)'
> was declared here
>   struct rte_ring_zc_data zcd;
>                           ^~~
> In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> ../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this
> function [-Werror=maybe-uninitialized]
>   memcpy(dst, src, sz);
>   ^~~~~~~~~~~~~~~~~~~~
> ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared
> here
>   struct rte_ring_zc_data zcd;
>                           ^~~
> cc1: all warnings being treated as errors [2340/2407] Compiling C object
> drivers/libtmp_...ontx2.a.p/event_octeontx2_otx2_worker_dual.c.o
> ninja: build stopped: subcommand failed.
> 
> Thanks,
> Conor.
> 
> > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> > Sent: Wednesday 4 November 2020 18:48
> > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin
> > <konstantin.ananyev@intel.com>
> > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd
> > <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> nd
> > <nd@arm.com>
> > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix
> > gcc compile error
> >
> > Hi Conor,
> > 	Thanks for the patch.
> >
> > <snip>
> >
> > >
> > > When DPDK is compiled with gcc < 9 with the optimization level set
> > > to 1 gcc sees zcd in test_ring.h as possibly being uninitialised. To
> > > correct this error
> > zcd
> > > has been initialised to {0} in test_ring_mt_peek_stress_zc.c.
> > >
> > > Signed-off-by: Conor Walsh <conor.walsh@intel.com>
> > > ---
> > >  app/test/test_ring_mt_peek_stress_zc.c | 4 ++--
> > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c
> > > b/app/test/test_ring_mt_peek_stress_zc.c
> > > index 7e0bd511a7..ba0acf237c 100644
> > > --- a/app/test/test_ring_mt_peek_stress_zc.c
> > > +++ b/app/test/test_ring_mt_peek_stress_zc.c
> > > @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void
> > > **obj, uint32_t n,
> > >  	uint32_t *avail)
> > >  {
> > >  	uint32_t m;
> > > -	struct rte_ring_zc_data zcd;
> > > +	struct rte_ring_zc_data zcd = {0};
> > I faced similar problems when I created this test case. I refrained
> > from doing this initialization as it might mask the problems in the
> > library. Is it possible to identify which path in the library is
> > actually resulting in this error? I would prefer to fix that instead.
> >
> > >
> > >  	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
> > >  	n = (m == n) ? n : 0;
> > > @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void *
> > const
> > > *obj, uint32_t n,
> > >  	uint32_t *free)
> > >  {
> > >  	uint32_t m;
> > > -	struct rte_ring_zc_data zcd;
> > > +	struct rte_ring_zc_data zcd = {0};
> > >
> > >  	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
> > >  	n = (m == n) ? n : 0;
> > > --
> > > 2.25.1


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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-09 16:44     ` Honnappa Nagarahalli
@ 2020-11-09 17:03       ` Walsh, Conor
  2020-11-09 17:24         ` Honnappa Nagarahalli
  0 siblings, 1 reply; 13+ messages in thread
From: Walsh, Conor @ 2020-11-09 17:03 UTC (permalink / raw)
  To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd, nd

Hi Honnappa,

> From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Sent: Monday 9 November 2020 16:45
> To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>
> Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd
> <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> nd <nd@arm.com>
> Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile
> error
> 
> <snip>
> 
> >
> > Hi Honnappa,
> >
> > Sorry about the delayed reply.
> No problem, thank you.
> 
> > The build error trace is below, the build command used was: CC=gcc meson
> --
> > optimization=1 --werror build1; ninja -C build1 I am not sure how I could fix
> > this issue without initialising zcd.
> >
> > [2339/2407] Compiling C object app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o
> > FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
> > gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl -
> > I../lib/librte_acl -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -
> > I../lib/librte_eal/include -Ilib/librte_eal/linux/include -
> > I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -
> > I../lib/librte_eal/x86/include -Ilib/librte_eal/common -
> > I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -
> Ilib/librte_kvargs -
> > I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -
> > Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -
> > I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci -I../lib/librte_pci
> -
> > Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -
> > I../lib/librte_bitratestats -Ilib/librte_ethdev -I../lib/librte_ethdev -
> > Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf -
> > Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring -
> I../lib/librte_ring
> > -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf -I../lib/librte_bpf -
> > Ilib/librte_cfgfile -I../lib/librte_cfgfile -Ilib/librte_cmdline -
> I../lib/librte_cmdline
> > -Ilib/librte_cryptodev -I../lib/librte_cryptodev -Ilib/librte_distributor -
> > I../lib/librte_distributor -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -
> > I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu -Ilib/librte_eventdev -
> > I../lib/librte_eventdev -Ilib/librte_timer -I../lib/librte_timer -Ilib/librte_fib -
> > I../lib/librte_fib -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -
> > I../lib/librte_flow_classify -Ilib/librte_table -I../lib/librte_table -
> Ilib/librte_port
> > -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched -Ilib/librte_ip_frag
> -
> > I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni -Ilib/librte_lpm -
> > I../lib/librte_lpm -Ilib/librte_graph -I../lib/librte_graph -Ilib/librte_ipsec -
> > I../lib/librte_ipsec -Ilib/librte_security -I../lib/librte_security -
> > Ilib/librte_latencystats -I../lib/librte_latencystats -Ilib/librte_member -
> > I../lib/librte_member -Ilib/librte_node -I../lib/librte_node -
> Ilib/librte_pipeline
> > -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev -
> > Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -
> I../lib/librte_stack -
> > Idrivers/mempool/ring -I../drivers/mempool/ring -Idrivers/mempool/stack
> -
> > I../drivers/mempool/stack -Idrivers/event/skeleton -
> > I../drivers/event/skeleton -Idrivers/net/bonding -I../drivers/net/bonding -
> > Idrivers/net/ring -I../drivers/net/ring -Ilib/librte_power -
> I../lib/librte_power -
> > Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -
> > I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -
> > D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include
> > rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -
> > Wformat-security -Wmissing-declarations -Wmissing-prototypes -
> Wnested-
> > externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-
> > prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-
> missing-
> > field-initializers -march=native -mno-avx512f -
> DALLOW_EXPERIMENTAL_API -
> > Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -
> > DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o -c
> > ../app/test/test_ring_mt_peek_stress_zc.c
> > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > ../app/test/test_ring_stress_impl.h: In function 'test_worker':
> > ../app/test/test_ring.h:82:3: error: 'zcd.n1' may be used uninitialized in this
> > function [-Werror=maybe-uninitialized]
> >    test_ring_mem_copy(zcd->ptr2, src,
> >    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> >       esize, num - zcd->n1);
> >       ~~~~~~~~~~~~~~~~~~~~~
> > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was
> declared
> > here
> >   struct rte_ring_zc_data zcd;
> >                           ^~~
> > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > ../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used
> > uninitialized in this function [-Werror=maybe-uninitialized]
> >   memcpy(dst, src, sz);
> >   ^~~~~~~~~~~~~~~~~~~~
> > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void
> *)&zcd+8)'
> > was declared here
> I remember seeing a similar error in test_ring_st_peek_stress_zc.c.
> In the file test_ring_mt_peek_stress_zc.c, after the call to
> enqueue/dequeue API calls, we have:
> "n = (m == n) ? n : 0;"
> 
> This is present as the code was copied from existing code. I do not see why
> this line is required. Can you please try to remove this line and see if it
> works?

I commented out all occurrences of that line in test_ring_mt_peek_stess_zc.c and the build is still failing.
Trace at end of email.

> 
> >   struct rte_ring_zc_data zcd;
> >                           ^~~
> > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > ../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this
> > function [-Werror=maybe-uninitialized]
> >   memcpy(dst, src, sz);
> >   ^~~~~~~~~~~~~~~~~~~~
> > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd' was declared
> > here
> >   struct rte_ring_zc_data zcd;
> >                           ^~~
> > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > ../app/test/test_ring.h:63:11: error: 'zcd.n1' may be used uninitialized in
> this
> > function [-Werror=maybe-uninitialized]
> >   sz = num * sizeof(void *);
> >        ~~~~^~~~~~~~~~~~~~~~
> > ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd.n1' was
> declared
> > here
> >   struct rte_ring_zc_data zcd;
> >                           ^~~
> > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > ../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used
> > uninitialized in this function [-Werror=maybe-uninitialized]
> >   memcpy(dst, src, sz);
> >   ^~~~~~~~~~~~~~~~~~~~
> > ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: '*((void
> *)&zcd+8)'
> > was declared here
> >   struct rte_ring_zc_data zcd;
> >                           ^~~
> > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > ../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this
> > function [-Werror=maybe-uninitialized]
> >   memcpy(dst, src, sz);
> >   ^~~~~~~~~~~~~~~~~~~~
> > ../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared
> > here
> >   struct rte_ring_zc_data zcd;
> >                           ^~~
> > cc1: all warnings being treated as errors [2340/2407] Compiling C object
> > drivers/libtmp_...ontx2.a.p/event_octeontx2_otx2_worker_dual.c.o
> > ninja: build stopped: subcommand failed.
> >
> > Thanks,
> > Conor.
> >
> > > From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> > > Sent: Wednesday 4 November 2020 18:48
> > > To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin
> > > <konstantin.ananyev@intel.com>
> > > Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd
> > > <nd@arm.com>; Honnappa Nagarahalli
> <Honnappa.Nagarahalli@arm.com>;
> > nd
> > > <nd@arm.com>
> > > Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix
> > > gcc compile error
> > >
> > > Hi Conor,
> > > 	Thanks for the patch.
> > >
> > > <snip>
> > >
> > > >
> > > > When DPDK is compiled with gcc < 9 with the optimization level set
> > > > to 1 gcc sees zcd in test_ring.h as possibly being uninitialised. To
> > > > correct this error
> > > zcd
> > > > has been initialised to {0} in test_ring_mt_peek_stress_zc.c.
> > > >
> > > > Signed-off-by: Conor Walsh <conor.walsh@intel.com>
> > > > ---
> > > >  app/test/test_ring_mt_peek_stress_zc.c | 4 ++--
> > > >  1 file changed, 2 insertions(+), 2 deletions(-)
> > > >
> > > > diff --git a/app/test/test_ring_mt_peek_stress_zc.c
> > > > b/app/test/test_ring_mt_peek_stress_zc.c
> > > > index 7e0bd511a7..ba0acf237c 100644
> > > > --- a/app/test/test_ring_mt_peek_stress_zc.c
> > > > +++ b/app/test/test_ring_mt_peek_stress_zc.c
> > > > @@ -11,7 +11,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void
> > > > **obj, uint32_t n,
> > > >  	uint32_t *avail)
> > > >  {
> > > >  	uint32_t m;
> > > > -	struct rte_ring_zc_data zcd;
> > > > +	struct rte_ring_zc_data zcd = {0};
> > > I faced similar problems when I created this test case. I refrained
> > > from doing this initialization as it might mask the problems in the
> > > library. Is it possible to identify which path in the library is
> > > actually resulting in this error? I would prefer to fix that instead.
> > >
> > > >
> > > >  	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
> > > >  	n = (m == n) ? n : 0;
> > > > @@ -29,7 +29,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void *
> > > const
> > > > *obj, uint32_t n,
> > > >  	uint32_t *free)
> > > >  {
> > > >  	uint32_t m;
> > > > -	struct rte_ring_zc_data zcd;
> > > > +	struct rte_ring_zc_data zcd = {0};
> > > >
> > > >  	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
> > > >  	n = (m == n) ? n : 0;
> > > > --
> > > > 2.25.1

Thanks,
Conor.

[2339/2407] Compiling C object app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl -I../lib/librte_acl -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -I../lib/librte_eal/include -Ilib/librte_eal/linux/include -I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -I../lib/librte_eal/x86/include -Ilib/librte_eal/common -I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci -I../lib/librte_pci -Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -I../lib/librte_bitratestats -Ilib/librte_ethdev -I../lib/librte_ethdev -Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf -Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring -I../lib/librte_ring -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf -I../lib/librte_bpf -Ilib/librte_cfgfile -I../lib/librte_cfgfile -Ilib/librte_cmdline -I../lib/librte_cmdline -Ilib/librte_cryptodev -I../lib/librte_cryptodev -Ilib/librte_distributor -I../lib/librte_distributor -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu -Ilib/librte_eventdev -I../lib/librte_eventdev -Ilib/librte_timer -I../lib/librte_timer -Ilib/librte_fib -I../lib/librte_fib -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -I../lib/librte_flow_classify -Ilib/librte_table -I../lib/librte_table -Ilib/librte_port -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched -Ilib/librte_ip_frag -I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni -Ilib/librte_lpm -I../lib/librte_lpm -Ilib/librte_graph -I../lib/librte_graph -Ilib/librte_ipsec -I../lib/librte_ipsec -Ilib/librte_security -I../lib/librte_security -Ilib/librte_latencystats -I../lib/librte_latencystats -Ilib/librte_member -I../lib/librte_member -Ilib/librte_node -I../lib/librte_node -Ilib/librte_pipeline -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev -Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -I../lib/librte_stack -Idrivers/mempool/ring -I../drivers/mempool/ring -Idrivers/mempool/stack -I../drivers/mempool/stack -Idrivers/event/skeleton -I../drivers/event/skeleton -Idrivers/net/bonding -I../drivers/net/bonding -Idrivers/net/ring -I../drivers/net/ring -Ilib/librte_power -I../lib/librte_power -Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-missing-field-initializers -march=native -mno-avx512f -DALLOW_EXPERIMENTAL_API -Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o -c ../app/test/test_ring_mt_peek_stress_zc.c
../app/test/test_ring_mt_peek_stress_zc.c: In function '_st_ring_dequeue_bulk':
../app/test/test_ring_mt_peek_stress_zc.c:13:11: error: variable 'm' set but not used [-Werror=unused-but-set-variable]
  uint32_t m;
           ^
../app/test/test_ring_mt_peek_stress_zc.c: In function '_st_ring_enqueue_bulk':
../app/test/test_ring_mt_peek_stress_zc.c:31:11: error: variable 'm' set but not used [-Werror=unused-but-set-variable]
  uint32_t m;
           ^
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring_stress_impl.h: In function 'test_mt1':
../app/test/test_ring.h:82:3: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
   test_ring_mem_copy(zcd->ptr2, src,
   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      esize, num - zcd->n1);
      ~~~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void *)&zcd+8)' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring_stress_impl.h: In function 'test_worker':
../app/test/test_ring.h:63:11: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  sz = num * sizeof(void *);
       ~~~~^~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void *)&zcd+8)' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:63:11: error: 'zcd.n1' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  sz = num * sizeof(void *);
       ~~~~^~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd.n1' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: '*((void *)&zcd+8)' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
../app/test/test_ring.h:67:2: error: 'zcd' may be used uninitialized in this function [-Werror=maybe-uninitialized]
  memcpy(dst, src, sz);
  ^~~~~~~~~~~~~~~~~~~~
../app/test/test_ring_mt_peek_stress_zc.c:14:26: note: 'zcd' was declared here
  struct rte_ring_zc_data zcd;
                          ^~~
cc1: all warnings being treated as errors
[2340/2407] Compiling C object drivers/libtmp_rte_event_octeontx2.a.p/event_octeontx2_otx2_worker_dual.c.o
ninja: build stopped: subcommand failed.

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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-09 17:03       ` Walsh, Conor
@ 2020-11-09 17:24         ` Honnappa Nagarahalli
  2020-11-09 17:37           ` Walsh, Conor
  0 siblings, 1 reply; 13+ messages in thread
From: Honnappa Nagarahalli @ 2020-11-09 17:24 UTC (permalink / raw)
  To: Walsh, Conor, Ananyev, Konstantin
  Cc: dev, Chen, LingliX, nd, Honnappa Nagarahalli, nd

<snip>

> > >
> > > Hi Honnappa,
> > >
> > > Sorry about the delayed reply.
> > No problem, thank you.
> >
> > > The build error trace is below, the build command used was: CC=gcc
> > > meson
> > --
> > > optimization=1 --werror build1; ninja -C build1 I am not sure how I
> > > could fix this issue without initialising zcd.
> > >

<snip>

> > > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > > ../app/test/test_ring_stress_impl.h: In function 'test_worker':
> > > ../app/test/test_ring.h:82:3: error: 'zcd.n1' may be used
> > > uninitialized in this function [-Werror=maybe-uninitialized]
> > >    test_ring_mem_copy(zcd->ptr2, src,
> > >    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > >       esize, num - zcd->n1);
> > >       ~~~~~~~~~~~~~~~~~~~~~
> > > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was
> > declared
> > > here
> > >   struct rte_ring_zc_data zcd;
> > >                           ^~~
> > > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > > ../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used
> > > uninitialized in this function [-Werror=maybe-uninitialized]
> > >   memcpy(dst, src, sz);
> > >   ^~~~~~~~~~~~~~~~~~~~
> > > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void
> > *)&zcd+8)'
> > > was declared here
> > I remember seeing a similar error in test_ring_st_peek_stress_zc.c.
> > In the file test_ring_mt_peek_stress_zc.c, after the call to
> > enqueue/dequeue API calls, we have:
> > "n = (m == n) ? n : 0;"
> >
> > This is present as the code was copied from existing code. I do not
> > see why this line is required. Can you please try to remove this line
> > and see if it works?
> 
> I commented out all occurrences of that line in test_ring_mt_peek_stess_zc.c
> and the build is still failing.
> Trace at end of email.
Thanks for checking the suggestion. Can you provide your setup details? OS and gcc version would be good. I would like to try it.

<snip>

> 
> [2339/2407] Compiling C object app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o
> FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
> gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl -
> I../lib/librte_acl -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -
> I../lib/librte_eal/include -Ilib/librte_eal/linux/include -
> I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -
> I../lib/librte_eal/x86/include -Ilib/librte_eal/common -
> I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -Ilib/librte_kvargs -
> I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -
> Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -
> I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci -I../lib/librte_pci -
> Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -
> I../lib/librte_bitratestats -Ilib/librte_ethdev -I../lib/librte_ethdev -
> Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf -
> Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring -I../lib/librte_ring
> -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf -I../lib/librte_bpf -
> Ilib/librte_cfgfile -I../lib/librte_cfgfile -Ilib/librte_cmdline -I../lib/librte_cmdline
> -Ilib/librte_cryptodev -I../lib/librte_cryptodev -Ilib/librte_distributor -
> I../lib/librte_distributor -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -
> I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu -Ilib/librte_eventdev -
> I../lib/librte_eventdev -Ilib/librte_timer -I../lib/librte_timer -Ilib/librte_fib -
> I../lib/librte_fib -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -
> I../lib/librte_flow_classify -Ilib/librte_table -I../lib/librte_table -Ilib/librte_port
> -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched -Ilib/librte_ip_frag -
> I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni -Ilib/librte_lpm -
> I../lib/librte_lpm -Ilib/librte_graph -I../lib/librte_graph -Ilib/librte_ipsec -
> I../lib/librte_ipsec -Ilib/librte_security -I../lib/librte_security -
> Ilib/librte_latencystats -I../lib/librte_latencystats -Ilib/librte_member -
> I../lib/librte_member -Ilib/librte_node -I../lib/librte_node -Ilib/librte_pipeline
> -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev -
> Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -I../lib/librte_stack -
> Idrivers/mempool/ring -I../drivers/mempool/ring -Idrivers/mempool/stack -
> I../drivers/mempool/stack -Idrivers/event/skeleton -
> I../drivers/event/skeleton -Idrivers/net/bonding -I../drivers/net/bonding -
> Idrivers/net/ring -I../drivers/net/ring -Ilib/librte_power -I../lib/librte_power -
> Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -
> I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -
> D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include
> rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -
> Wformat-security -Wmissing-declarations -Wmissing-prototypes -Wnested-
> externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-
> prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-missing-
> field-initializers -march=native -mno-avx512f -DALLOW_EXPERIMENTAL_API -
> Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -
> DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-
> test.p/test_ring_mt_peek_stress_zc.c.o -c
> ../app/test/test_ring_mt_peek_stress_zc.c
> ../app/test/test_ring_mt_peek_stress_zc.c: In function
> '_st_ring_dequeue_bulk':
> ../app/test/test_ring_mt_peek_stress_zc.c:13:11: error: variable 'm' set but
> not used [-Werror=unused-but-set-variable]
>   uint32_t m;
>            ^
> ../app/test/test_ring_mt_peek_stress_zc.c: In function
> '_st_ring_enqueue_bulk':
> ../app/test/test_ring_mt_peek_stress_zc.c:31:11: error: variable 'm' set but
> not used [-Werror=unused-but-set-variable]
>   uint32_t m;
>            ^
I am not sure why you are seeing the above error.

<snip>

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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-09 17:24         ` Honnappa Nagarahalli
@ 2020-11-09 17:37           ` Walsh, Conor
  2020-11-09 22:43             ` Honnappa Nagarahalli
  0 siblings, 1 reply; 13+ messages in thread
From: Walsh, Conor @ 2020-11-09 17:37 UTC (permalink / raw)
  To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd, nd

> From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Sent: Monday 9 November 2020 17:24
> To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>
> Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd
> <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> nd <nd@arm.com>
> Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile
> error
> 
> <snip>
> 
> > > >
> > > > Hi Honnappa,
> > > >
> > > > Sorry about the delayed reply.
> > > No problem, thank you.
> > >
> > > > The build error trace is below, the build command used was: CC=gcc
> > > > meson
> > > --
> > > > optimization=1 --werror build1; ninja -C build1 I am not sure how I
> > > > could fix this issue without initialising zcd.
> > > >
> 
> <snip>
> 
> > > > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > > > ../app/test/test_ring_stress_impl.h: In function 'test_worker':
> > > > ../app/test/test_ring.h:82:3: error: 'zcd.n1' may be used
> > > > uninitialized in this function [-Werror=maybe-uninitialized]
> > > >    test_ring_mem_copy(zcd->ptr2, src,
> > > >    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> > > >       esize, num - zcd->n1);
> > > >       ~~~~~~~~~~~~~~~~~~~~~
> > > > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: 'zcd.n1' was
> > > declared
> > > > here
> > > >   struct rte_ring_zc_data zcd;
> > > >                           ^~~
> > > > In file included from ../app/test/test_ring_mt_peek_stress_zc.c:5:
> > > > ../app/test/test_ring.h:67:2: error: '*((void *)&zcd+8)' may be used
> > > > uninitialized in this function [-Werror=maybe-uninitialized]
> > > >   memcpy(dst, src, sz);
> > > >   ^~~~~~~~~~~~~~~~~~~~
> > > > ../app/test/test_ring_mt_peek_stress_zc.c:32:26: note: '*((void
> > > *)&zcd+8)'
> > > > was declared here
> > > I remember seeing a similar error in test_ring_st_peek_stress_zc.c.
> > > In the file test_ring_mt_peek_stress_zc.c, after the call to
> > > enqueue/dequeue API calls, we have:
> > > "n = (m == n) ? n : 0;"
> > >
> > > This is present as the code was copied from existing code. I do not
> > > see why this line is required. Can you please try to remove this line
> > > and see if it works?
> >
> > I commented out all occurrences of that line in
> test_ring_mt_peek_stess_zc.c
> > and the build is still failing.
> > Trace at end of email.
> Thanks for checking the suggestion. Can you provide your setup details? OS
> and gcc version would be good. I would like to try it.

Sure no problem, the error doesn't seem to affect gcc versions > 8.
My setup is CentOS8.2 with kernel 4.18.0-193.28.1.el8_2.x86_64 and gcc 8.3.1.

> 
> <snip>
> 
> >
> > [2339/2407] Compiling C object app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o
> > FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
> > gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl -
> > I../lib/librte_acl -I. -I.. -Iconfig -I../config -Ilib/librte_eal/include -
> > I../lib/librte_eal/include -Ilib/librte_eal/linux/include -
> > I../lib/librte_eal/linux/include -Ilib/librte_eal/x86/include -
> > I../lib/librte_eal/x86/include -Ilib/librte_eal/common -
> > I../lib/librte_eal/common -Ilib/librte_eal -I../lib/librte_eal -
> Ilib/librte_kvargs -
> > I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -
> > Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -
> > I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci -I../lib/librte_pci
> -
> > Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -
> > I../lib/librte_bitratestats -Ilib/librte_ethdev -I../lib/librte_ethdev -
> > Ilib/librte_net -I../lib/librte_net -Ilib/librte_mbuf -I../lib/librte_mbuf -
> > Ilib/librte_mempool -I../lib/librte_mempool -Ilib/librte_ring -
> I../lib/librte_ring
> > -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf -I../lib/librte_bpf -
> > Ilib/librte_cfgfile -I../lib/librte_cfgfile -Ilib/librte_cmdline -
> I../lib/librte_cmdline
> > -Ilib/librte_cryptodev -I../lib/librte_cryptodev -Ilib/librte_distributor -
> > I../lib/librte_distributor -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -
> > I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu -Ilib/librte_eventdev -
> > I../lib/librte_eventdev -Ilib/librte_timer -I../lib/librte_timer -Ilib/librte_fib -
> > I../lib/librte_fib -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -
> > I../lib/librte_flow_classify -Ilib/librte_table -I../lib/librte_table -
> Ilib/librte_port
> > -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched -Ilib/librte_ip_frag
> -
> > I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni -Ilib/librte_lpm -
> > I../lib/librte_lpm -Ilib/librte_graph -I../lib/librte_graph -Ilib/librte_ipsec -
> > I../lib/librte_ipsec -Ilib/librte_security -I../lib/librte_security -
> > Ilib/librte_latencystats -I../lib/librte_latencystats -Ilib/librte_member -
> > I../lib/librte_member -Ilib/librte_node -I../lib/librte_node -
> Ilib/librte_pipeline
> > -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev -
> > Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -
> I../lib/librte_stack -
> > Idrivers/mempool/ring -I../drivers/mempool/ring -Idrivers/mempool/stack
> -
> > I../drivers/mempool/stack -Idrivers/event/skeleton -
> > I../drivers/event/skeleton -Idrivers/net/bonding -I../drivers/net/bonding -
> > Idrivers/net/ring -I../drivers/net/ring -Ilib/librte_power -
> I../lib/librte_power -
> > Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -
> > I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -
> > D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include
> > rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -
> > Wformat-security -Wmissing-declarations -Wmissing-prototypes -
> Wnested-
> > externs -Wold-style-definition -Wpointer-arith -Wsign-compare -Wstrict-
> > prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned -Wno-
> missing-
> > field-initializers -march=native -mno-avx512f -
> DALLOW_EXPERIMENTAL_API -
> > Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -
> > DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-
> > test.p/test_ring_mt_peek_stress_zc.c.o -c
> > ../app/test/test_ring_mt_peek_stress_zc.c
> > ../app/test/test_ring_mt_peek_stress_zc.c: In function
> > '_st_ring_dequeue_bulk':
> > ../app/test/test_ring_mt_peek_stress_zc.c:13:11: error: variable 'm' set
> but
> > not used [-Werror=unused-but-set-variable]
> >   uint32_t m;
> >            ^
> > ../app/test/test_ring_mt_peek_stress_zc.c: In function
> > '_st_ring_enqueue_bulk':
> > ../app/test/test_ring_mt_peek_stress_zc.c:31:11: error: variable 'm' set
> but
> > not used [-Werror=unused-but-set-variable]
> >   uint32_t m;
> >            ^
> I am not sure why you are seeing the above error.

m is being set but is only being used in the line that I commented out, if that line needs to be removed then m doesn't need to be set or declared.
E.g. below.

test_ring_mt_peek_stress_zc.c:9
static inline uint32_t
_st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n,
        uint32_t *avail)
{
        uint32_t m;
        struct rte_ring_zc_data zcd;

        m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
        //n = (m == n) ? n : 0;
        if (n != 0) {
                /* Copy the data from the ring */
                test_ring_copy_from(&zcd, obj, -1, n);
                rte_ring_dequeue_zc_finish(r, n);
        }

        return n;
}

Thanks for looking into this.

> 
> <snip>

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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-09 17:37           ` Walsh, Conor
@ 2020-11-09 22:43             ` Honnappa Nagarahalli
  2020-11-10 10:04               ` Walsh, Conor
  0 siblings, 1 reply; 13+ messages in thread
From: Honnappa Nagarahalli @ 2020-11-09 22:43 UTC (permalink / raw)
  To: Walsh, Conor, Ananyev, Konstantin
  Cc: dev, Chen, LingliX, nd, Honnappa Nagarahalli, nd

<snip>

> >
> > >
> > > [2339/2407] Compiling C object app/test/dpdk-
> > > test.p/test_ring_mt_peek_stress_zc.c.o
> > > FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
> > > gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl
> > > - I../lib/librte_acl -I. -I.. -Iconfig -I../config
> > > -Ilib/librte_eal/include - I../lib/librte_eal/include
> > > -Ilib/librte_eal/linux/include - I../lib/librte_eal/linux/include
> > > -Ilib/librte_eal/x86/include - I../lib/librte_eal/x86/include
> > > -Ilib/librte_eal/common - I../lib/librte_eal/common -Ilib/librte_eal
> > > -I../lib/librte_eal -
> > Ilib/librte_kvargs -
> > > I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -
> > > Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -
> > > I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci
> > > -I../lib/librte_pci
> > -
> > > Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -
> > > I../lib/librte_bitratestats -Ilib/librte_ethdev
> > > -I../lib/librte_ethdev - Ilib/librte_net -I../lib/librte_net
> > > -Ilib/librte_mbuf -I../lib/librte_mbuf - Ilib/librte_mempool
> > > -I../lib/librte_mempool -Ilib/librte_ring -
> > I../lib/librte_ring
> > > -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf
> > > -I../lib/librte_bpf - Ilib/librte_cfgfile -I../lib/librte_cfgfile
> > > -Ilib/librte_cmdline -
> > I../lib/librte_cmdline
> > > -Ilib/librte_cryptodev -I../lib/librte_cryptodev
> > > -Ilib/librte_distributor - I../lib/librte_distributor
> > > -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -
> > > I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu
> > > -Ilib/librte_eventdev - I../lib/librte_eventdev -Ilib/librte_timer
> > > -I../lib/librte_timer -Ilib/librte_fib - I../lib/librte_fib
> > > -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -
> > > I../lib/librte_flow_classify -Ilib/librte_table
> > > -I../lib/librte_table -
> > Ilib/librte_port
> > > -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched
> > > -Ilib/librte_ip_frag
> > -
> > > I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni
> > > -Ilib/librte_lpm - I../lib/librte_lpm -Ilib/librte_graph
> > > -I../lib/librte_graph -Ilib/librte_ipsec - I../lib/librte_ipsec
> > > -Ilib/librte_security -I../lib/librte_security -
> > > Ilib/librte_latencystats -I../lib/librte_latencystats
> > > -Ilib/librte_member - I../lib/librte_member -Ilib/librte_node
> > > -I../lib/librte_node -
> > Ilib/librte_pipeline
> > > -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev
> > > - Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -
> > I../lib/librte_stack -
> > > Idrivers/mempool/ring -I../drivers/mempool/ring
> > > -Idrivers/mempool/stack
> > -
> > > I../drivers/mempool/stack -Idrivers/event/skeleton -
> > > I../drivers/event/skeleton -Idrivers/net/bonding
> > > -I../drivers/net/bonding - Idrivers/net/ring -I../drivers/net/ring
> > > -Ilib/librte_power -
> > I../lib/librte_power -
> > > Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -
> > > I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -
> > > D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include
> > > rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -
> > > Wformat-security -Wmissing-declarations -Wmissing-prototypes -
> > Wnested-
> > > externs -Wold-style-definition -Wpointer-arith -Wsign-compare
> > > -Wstrict- prototypes -Wundef -Wwrite-strings -Wno-packed-not-aligned
> > > -Wno-
> > missing-
> > > field-initializers -march=native -mno-avx512f -
> > DALLOW_EXPERIMENTAL_API -
> > > Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -
> > > DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-
> > > test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-
> > > test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-
> > > test.p/test_ring_mt_peek_stress_zc.c.o -c
> > > ../app/test/test_ring_mt_peek_stress_zc.c
> > > ../app/test/test_ring_mt_peek_stress_zc.c: In function
> > > '_st_ring_dequeue_bulk':
> > > ../app/test/test_ring_mt_peek_stress_zc.c:13:11: error: variable 'm'
> > > set
> > but
> > > not used [-Werror=unused-but-set-variable]
> > >   uint32_t m;
> > >            ^
> > > ../app/test/test_ring_mt_peek_stress_zc.c: In function
> > > '_st_ring_enqueue_bulk':
> > > ../app/test/test_ring_mt_peek_stress_zc.c:31:11: error: variable 'm'
> > > set
> > but
> > > not used [-Werror=unused-but-set-variable]
> > >   uint32_t m;
> > >            ^
> > I am not sure why you are seeing the above error.
> 
> m is being set but is only being used in the line that I commented out, if that
> line needs to be removed then m doesn't need to be set or declared.
> E.g. below.
> 
> test_ring_mt_peek_stress_zc.c:9
> static inline uint32_t
> _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n,
>         uint32_t *avail)
> {
>         uint32_t m;
>         struct rte_ring_zc_data zcd;
> 
>         m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
>         //n = (m == n) ? n : 0;
>         if (n != 0) {
Sorry, the above 'if' statement should be as follows:
if (m != 0) {

>                 /* Copy the data from the ring */
>                 test_ring_copy_from(&zcd, obj, -1, n);
>                 rte_ring_dequeue_zc_finish(r, n);
>         }
> 
>         return n;
> }
> 
> Thanks for looking into this.
> 
> >
> > <snip>

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

* Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
  2020-11-09 22:43             ` Honnappa Nagarahalli
@ 2020-11-10 10:04               ` Walsh, Conor
  0 siblings, 0 replies; 13+ messages in thread
From: Walsh, Conor @ 2020-11-10 10:04 UTC (permalink / raw)
  To: Honnappa Nagarahalli, Ananyev, Konstantin; +Cc: dev, Chen, LingliX, nd, nd

> From: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>
> Sent: Monday 9 November 2020 22:44
> To: Walsh, Conor <conor.walsh@intel.com>; Ananyev, Konstantin
> <konstantin.ananyev@intel.com>
> Cc: dev@dpdk.org; Chen, LingliX <linglix.chen@intel.com>; nd
> <nd@arm.com>; Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> nd <nd@arm.com>
> Subject: RE: [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile
> error
> 
> <snip>
> 
> > >
> > > >
> > > > [2339/2407] Compiling C object app/test/dpdk-
> > > > test.p/test_ring_mt_peek_stress_zc.c.o
> > > > FAILED: app/test/dpdk-test.p/test_ring_mt_peek_stress_zc.c.o
> > > > gcc -Iapp/test/dpdk-test.p -Iapp/test -I../app/test -Ilib/librte_acl
> > > > - I../lib/librte_acl -I. -I.. -Iconfig -I../config
> > > > -Ilib/librte_eal/include - I../lib/librte_eal/include
> > > > -Ilib/librte_eal/linux/include - I../lib/librte_eal/linux/include
> > > > -Ilib/librte_eal/x86/include - I../lib/librte_eal/x86/include
> > > > -Ilib/librte_eal/common - I../lib/librte_eal/common -Ilib/librte_eal
> > > > -I../lib/librte_eal -
> > > Ilib/librte_kvargs -
> > > > I../lib/librte_kvargs -Ilib/librte_metrics -I../lib/librte_metrics -
> > > > Ilib/librte_telemetry -I../lib/librte_telemetry -Idrivers/bus/pci -
> > > > I../drivers/bus/pci -I../drivers/bus/pci/linux -Ilib/librte_pci
> > > > -I../lib/librte_pci
> > > -
> > > > Idrivers/bus/vdev -I../drivers/bus/vdev -Ilib/librte_bitratestats -
> > > > I../lib/librte_bitratestats -Ilib/librte_ethdev
> > > > -I../lib/librte_ethdev - Ilib/librte_net -I../lib/librte_net
> > > > -Ilib/librte_mbuf -I../lib/librte_mbuf - Ilib/librte_mempool
> > > > -I../lib/librte_mempool -Ilib/librte_ring -
> > > I../lib/librte_ring
> > > > -Ilib/librte_meter -I../lib/librte_meter -Ilib/librte_bpf
> > > > -I../lib/librte_bpf - Ilib/librte_cfgfile -I../lib/librte_cfgfile
> > > > -Ilib/librte_cmdline -
> > > I../lib/librte_cmdline
> > > > -Ilib/librte_cryptodev -I../lib/librte_cryptodev
> > > > -Ilib/librte_distributor - I../lib/librte_distributor
> > > > -Ilib/librte_efd -I../lib/librte_efd -Ilib/librte_hash -
> > > > I../lib/librte_hash -Ilib/librte_rcu -I../lib/librte_rcu
> > > > -Ilib/librte_eventdev - I../lib/librte_eventdev -Ilib/librte_timer
> > > > -I../lib/librte_timer -Ilib/librte_fib - I../lib/librte_fib
> > > > -Ilib/librte_rib -I../lib/librte_rib -Ilib/librte_flow_classify -
> > > > I../lib/librte_flow_classify -Ilib/librte_table
> > > > -I../lib/librte_table -
> > > Ilib/librte_port
> > > > -I../lib/librte_port -Ilib/librte_sched -I../lib/librte_sched
> > > > -Ilib/librte_ip_frag
> > > -
> > > > I../lib/librte_ip_frag -Ilib/librte_kni -I../lib/librte_kni
> > > > -Ilib/librte_lpm - I../lib/librte_lpm -Ilib/librte_graph
> > > > -I../lib/librte_graph -Ilib/librte_ipsec - I../lib/librte_ipsec
> > > > -Ilib/librte_security -I../lib/librte_security -
> > > > Ilib/librte_latencystats -I../lib/librte_latencystats
> > > > -Ilib/librte_member - I../lib/librte_member -Ilib/librte_node
> > > > -I../lib/librte_node -
> > > Ilib/librte_pipeline
> > > > -I../lib/librte_pipeline -Ilib/librte_rawdev -I../lib/librte_rawdev
> > > > - Ilib/librte_reorder -I../lib/librte_reorder -Ilib/librte_stack -
> > > I../lib/librte_stack -
> > > > Idrivers/mempool/ring -I../drivers/mempool/ring
> > > > -Idrivers/mempool/stack
> > > -
> > > > I../drivers/mempool/stack -Idrivers/event/skeleton -
> > > > I../drivers/event/skeleton -Idrivers/net/bonding
> > > > -I../drivers/net/bonding - Idrivers/net/ring -I../drivers/net/ring
> > > > -Ilib/librte_power -
> > > I../lib/librte_power -
> > > > Ilib/librte_pdump -I../lib/librte_pdump -Idrivers/crypto/scheduler -
> > > > I../drivers/crypto/scheduler -fdiagnostics-color=always -pipe -
> > > > D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Werror -O1 -include
> > > > rte_config.h -Wextra -Wcast-qual -Wdeprecated -Wformat-nonliteral -
> > > > Wformat-security -Wmissing-declarations -Wmissing-prototypes -
> > > Wnested-
> > > > externs -Wold-style-definition -Wpointer-arith -Wsign-compare
> > > > -Wstrict- prototypes -Wundef -Wwrite-strings -Wno-packed-not-
> aligned
> > > > -Wno-
> > > missing-
> > > > field-initializers -march=native -mno-avx512f -
> > > DALLOW_EXPERIMENTAL_API -
> > > > Wno-format-truncation -D_GNU_SOURCE -fno-strict-aliasing -
> > > > DALLOW_INTERNAL_API -MD -MQ app/test/dpdk-
> > > > test.p/test_ring_mt_peek_stress_zc.c.o -MF app/test/dpdk-
> > > > test.p/test_ring_mt_peek_stress_zc.c.o.d -o app/test/dpdk-
> > > > test.p/test_ring_mt_peek_stress_zc.c.o -c
> > > > ../app/test/test_ring_mt_peek_stress_zc.c
> > > > ../app/test/test_ring_mt_peek_stress_zc.c: In function
> > > > '_st_ring_dequeue_bulk':
> > > > ../app/test/test_ring_mt_peek_stress_zc.c:13:11: error: variable 'm'
> > > > set
> > > but
> > > > not used [-Werror=unused-but-set-variable]
> > > >   uint32_t m;
> > > >            ^
> > > > ../app/test/test_ring_mt_peek_stress_zc.c: In function
> > > > '_st_ring_enqueue_bulk':
> > > > ../app/test/test_ring_mt_peek_stress_zc.c:31:11: error: variable 'm'
> > > > set
> > > but
> > > > not used [-Werror=unused-but-set-variable]
> > > >   uint32_t m;
> > > >            ^
> > > I am not sure why you are seeing the above error.
> >
> > m is being set but is only being used in the line that I commented out, if
> that
> > line needs to be removed then m doesn't need to be set or declared.
> > E.g. below.
> >
> > test_ring_mt_peek_stress_zc.c:9
> > static inline uint32_t
> > _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n,
> >         uint32_t *avail)
> > {
> >         uint32_t m;
> >         struct rte_ring_zc_data zcd;
> >
> >         m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
> >         //n = (m == n) ? n : 0;
> >         if (n != 0) {
> Sorry, the above 'if' statement should be as follows:
> if (m != 0) {

Thanks Honnappa, those two changes fix the issue for me.
I will send a V2 of the patch with these changes.

Thanks,
Conor.

> 
> >                 /* Copy the data from the ring */
> >                 test_ring_copy_from(&zcd, obj, -1, n);
> >                 rte_ring_dequeue_zc_finish(r, n);
> >         }
> >
> >         return n;
> > }
> >
> > Thanks for looking into this.
> >
> > >
> > > <snip>

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

* [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error
  2020-11-04 17:03 [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error Conor Walsh
  2020-11-04 18:48 ` Honnappa Nagarahalli
@ 2020-11-10 11:03 ` Conor Walsh
  2020-11-10 14:57   ` Honnappa Nagarahalli
  2020-11-11 16:18   ` Honnappa Nagarahalli
  1 sibling, 2 replies; 13+ messages in thread
From: Conor Walsh @ 2020-11-10 11:03 UTC (permalink / raw)
  To: honnappa.nagarahalli, konstantin.ananyev; +Cc: dev, linglix.chen, Conor Walsh

When DPDK is compiled with gcc < 9 with the optimization level set to 1
gcc sees zcd in test_ring.h as possibly being uninitialised. To correct
this error if statements from _st_ring_dequeue_bulk and
_st_ring_enqueue_bulk were corrected within test_ring_mt_peek_stress_zc.c

Signed-off-by: Conor Walsh <conor.walsh@intel.com>

---

v2: Moved from initialising zcd to changing if statements within
    test_ring_mt_peek_stress_zc.c following list feedback as the
    original method used may have masked errors within the library.
---
 app/test/test_ring_mt_peek_stress_zc.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/app/test/test_ring_mt_peek_stress_zc.c b/app/test/test_ring_mt_peek_stress_zc.c
index 7e0bd511a7..85f0262ba0 100644
--- a/app/test/test_ring_mt_peek_stress_zc.c
+++ b/app/test/test_ring_mt_peek_stress_zc.c
@@ -14,8 +14,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n,
 	struct rte_ring_zc_data zcd;
 
 	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
-	n = (m == n) ? n : 0;
-	if (n != 0) {
+	if (m != 0) {
 		/* Copy the data from the ring */
 		test_ring_copy_from(&zcd, obj, -1, n);
 		rte_ring_dequeue_zc_finish(r, n);
@@ -32,8 +31,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n,
 	struct rte_ring_zc_data zcd;
 
 	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
-	n = (m == n) ? n : 0;
-	if (n != 0) {
+	if (m != 0) {
 		/* Copy the data from the ring */
 		test_ring_copy_to(&zcd, obj, -1, n);
 		rte_ring_enqueue_zc_finish(r, n);
-- 
2.25.1


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

* Re: [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error
  2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh
@ 2020-11-10 14:57   ` Honnappa Nagarahalli
  2020-11-11 16:18   ` Honnappa Nagarahalli
  1 sibling, 0 replies; 13+ messages in thread
From: Honnappa Nagarahalli @ 2020-11-10 14:57 UTC (permalink / raw)
  To: Conor Walsh, konstantin.ananyev
  Cc: dev, linglix.chen, nd, Honnappa Nagarahalli, nd

<snip>

> 
> When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc
> sees zcd in test_ring.h as possibly being uninitialised. To correct this error if
> statements from _st_ring_dequeue_bulk and _st_ring_enqueue_bulk were
> corrected within test_ring_mt_peek_stress_zc.c
> 
> Signed-off-by: Conor Walsh <conor.walsh@intel.com>
Thank you Conor, looks good.

Review-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

> 
> ---
> 
> v2: Moved from initialising zcd to changing if statements within
>     test_ring_mt_peek_stress_zc.c following list feedback as the
>     original method used may have masked errors within the library.
> ---
>  app/test/test_ring_mt_peek_stress_zc.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/app/test/test_ring_mt_peek_stress_zc.c
> b/app/test/test_ring_mt_peek_stress_zc.c
> index 7e0bd511a7..85f0262ba0 100644
> --- a/app/test/test_ring_mt_peek_stress_zc.c
> +++ b/app/test/test_ring_mt_peek_stress_zc.c
> @@ -14,8 +14,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj,
> uint32_t n,
>  	struct rte_ring_zc_data zcd;
> 
>  	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
> -	n = (m == n) ? n : 0;
> -	if (n != 0) {
> +	if (m != 0) {
>  		/* Copy the data from the ring */
>  		test_ring_copy_from(&zcd, obj, -1, n);
>  		rte_ring_dequeue_zc_finish(r, n);
> @@ -32,8 +31,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const
> *obj, uint32_t n,
>  	struct rte_ring_zc_data zcd;
> 
>  	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
> -	n = (m == n) ? n : 0;
> -	if (n != 0) {
> +	if (m != 0) {
>  		/* Copy the data from the ring */
>  		test_ring_copy_to(&zcd, obj, -1, n);
>  		rte_ring_enqueue_zc_finish(r, n);
> --
> 2.25.1


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

* Re: [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error
  2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh
  2020-11-10 14:57   ` Honnappa Nagarahalli
@ 2020-11-11 16:18   ` Honnappa Nagarahalli
  2020-11-15 15:56     ` David Marchand
  1 sibling, 1 reply; 13+ messages in thread
From: Honnappa Nagarahalli @ 2020-11-11 16:18 UTC (permalink / raw)
  To: Conor Walsh, konstantin.ananyev
  Cc: dev, linglix.chen, nd, Honnappa Nagarahalli, nd



> -----Original Message-----
> From: Conor Walsh <conor.walsh@intel.com>
> Sent: Tuesday, November 10, 2020 5:03 AM
> To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> konstantin.ananyev@intel.com
> Cc: dev@dpdk.org; linglix.chen@intel.com; Conor Walsh
> <conor.walsh@intel.com>
> Subject: [PATCH v2] app/test: fix to prevent zcd gcc compile error
> 
> When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc
> sees zcd in test_ring.h as possibly being uninitialised. To correct this error if
> statements from _st_ring_dequeue_bulk and _st_ring_enqueue_bulk were
> corrected within test_ring_mt_peek_stress_zc.c
> 
> Signed-off-by: Conor Walsh <conor.walsh@intel.com>
Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

> 
> ---
> 
> v2: Moved from initialising zcd to changing if statements within
>     test_ring_mt_peek_stress_zc.c following list feedback as the
>     original method used may have masked errors within the library.
> ---
>  app/test/test_ring_mt_peek_stress_zc.c | 6 ++----
>  1 file changed, 2 insertions(+), 4 deletions(-)
> 
> diff --git a/app/test/test_ring_mt_peek_stress_zc.c
> b/app/test/test_ring_mt_peek_stress_zc.c
> index 7e0bd511a7..85f0262ba0 100644
> --- a/app/test/test_ring_mt_peek_stress_zc.c
> +++ b/app/test/test_ring_mt_peek_stress_zc.c
> @@ -14,8 +14,7 @@ _st_ring_dequeue_bulk(struct rte_ring *r, void **obj,
> uint32_t n,
>  	struct rte_ring_zc_data zcd;
> 
>  	m = rte_ring_dequeue_zc_bulk_start(r, n, &zcd, avail);
> -	n = (m == n) ? n : 0;
> -	if (n != 0) {
> +	if (m != 0) {
>  		/* Copy the data from the ring */
>  		test_ring_copy_from(&zcd, obj, -1, n);
>  		rte_ring_dequeue_zc_finish(r, n);
> @@ -32,8 +31,7 @@ _st_ring_enqueue_bulk(struct rte_ring *r, void * const
> *obj, uint32_t n,
>  	struct rte_ring_zc_data zcd;
> 
>  	m = rte_ring_enqueue_zc_bulk_start(r, n, &zcd, free);
> -	n = (m == n) ? n : 0;
> -	if (n != 0) {
> +	if (m != 0) {
>  		/* Copy the data from the ring */
>  		test_ring_copy_to(&zcd, obj, -1, n);
>  		rte_ring_enqueue_zc_finish(r, n);
> --
> 2.25.1


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

* Re: [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd gcc compile error
  2020-11-11 16:18   ` Honnappa Nagarahalli
@ 2020-11-15 15:56     ` David Marchand
  0 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2020-11-15 15:56 UTC (permalink / raw)
  To: Conor Walsh
  Cc: konstantin.ananyev, dev, linglix.chen, nd, Honnappa Nagarahalli

On Wed, Nov 11, 2020 at 5:18 PM Honnappa Nagarahalli
<Honnappa.Nagarahalli@arm.com> wrote:
> > -----Original Message-----
> > From: Conor Walsh <conor.walsh@intel.com>
> > Sent: Tuesday, November 10, 2020 5:03 AM
> > To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>;
> > konstantin.ananyev@intel.com
> > Cc: dev@dpdk.org; linglix.chen@intel.com; Conor Walsh
> > <conor.walsh@intel.com>
> > Subject: [PATCH v2] app/test: fix to prevent zcd gcc compile error
> >
> > When DPDK is compiled with gcc < 9 with the optimization level set to 1 gcc
> > sees zcd in test_ring.h as possibly being uninitialised. To correct this error if
> > statements from _st_ring_dequeue_bulk and _st_ring_enqueue_bulk were
> > corrected within test_ring_mt_peek_stress_zc.c

Fixes: f72299fd157d ("test/ring: add stress tests for zero copy API")

> >
> > Signed-off-by: Conor Walsh <conor.walsh@intel.com>
> Reviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>

Updated title, and applied, thanks.


-- 
David Marchand


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

end of thread, other threads:[~2020-11-15 15:57 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-04 17:03 [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error Conor Walsh
2020-11-04 18:48 ` Honnappa Nagarahalli
2020-11-09 16:20   ` Walsh, Conor
2020-11-09 16:44     ` Honnappa Nagarahalli
2020-11-09 17:03       ` Walsh, Conor
2020-11-09 17:24         ` Honnappa Nagarahalli
2020-11-09 17:37           ` Walsh, Conor
2020-11-09 22:43             ` Honnappa Nagarahalli
2020-11-10 10:04               ` Walsh, Conor
2020-11-10 11:03 ` [dpdk-dev] [PATCH v2] app/test: fix to prevent zcd " Conor Walsh
2020-11-10 14:57   ` Honnappa Nagarahalli
2020-11-11 16:18   ` Honnappa Nagarahalli
2020-11-15 15:56     ` David Marchand

DPDK patches and discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \
		dev@dpdk.org
	public-inbox-index dev

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.dev


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git