DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Walsh, Conor" <conor.walsh@intel.com>
To: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>,
	"Ananyev, Konstantin" <konstantin.ananyev@intel.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>,
	"Chen, LingliX" <linglix.chen@intel.com>, nd <nd@arm.com>,
	nd <nd@arm.com>
Subject: Re: [dpdk-dev] [PATCH v1] app/test: zcd needs to be initialised to fix gcc compile error
Date: Mon, 9 Nov 2020 17:37:27 +0000
Message-ID: <DM5PR1101MB21211EEB771C0D6DC4F90FD4FFEA0@DM5PR1101MB2121.namprd11.prod.outlook.com> (raw)
In-Reply-To: <DBAPR08MB5814C278CBE4427A75CE4D7A98EA0@DBAPR08MB5814.eurprd08.prod.outlook.com>

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

  reply	other threads:[~2020-11-09 17:37 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-11-04 17:03 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 [this message]
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

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM5PR1101MB21211EEB771C0D6DC4F90FD4FFEA0@DM5PR1101MB2121.namprd11.prod.outlook.com \
    --to=conor.walsh@intel.com \
    --cc=Honnappa.Nagarahalli@arm.com \
    --cc=dev@dpdk.org \
    --cc=konstantin.ananyev@intel.com \
    --cc=linglix.chen@intel.com \
    --cc=nd@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

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