* [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init @ 2019-04-10 20:16 David Christensen 2019-04-10 20:29 ` Thomas Monjalon ` (2 more replies) 0 siblings, 3 replies; 19+ messages in thread From: David Christensen @ 2019-04-10 20:16 UTC (permalink / raw) To: thomas, ferruh.yigit, arybchenko Cc: dev, radhika.chirra, David Christensen, stable The function eth_dev_pci_specific_init is missing a typecast to (struct rte_pci_device *) for the input argument bus_device. Cc: stable@dpdk.org Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> --- lib/librte_ethdev/rte_ethdev_pci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h index 23257e9..a325311 100644 --- a/lib/librte_ethdev/rte_ethdev_pci.h +++ b/lib/librte_ethdev/rte_ethdev_pci.h @@ -72,7 +72,7 @@ static inline int eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { - struct rte_pci_device *pci_dev = bus_device; + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; if (!pci_dev) return -ENODEV; -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-10 20:16 [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init David Christensen @ 2019-04-10 20:29 ` Thomas Monjalon 2019-04-10 20:58 ` David Christensen 2019-04-10 21:00 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson 2019-04-10 21:36 ` [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error David Christensen 2 siblings, 1 reply; 19+ messages in thread From: Thomas Monjalon @ 2019-04-10 20:29 UTC (permalink / raw) To: David Christensen Cc: ferruh.yigit, arybchenko, dev, radhika.chirra, stable, Vivian Kong 10/04/2019 22:16, David Christensen: > The function eth_dev_pci_specific_init is missing a typecast to > (struct rte_pci_device *) for the input argument bus_device. > > Cc: stable@dpdk.org > > Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> > Tested-by: Radhika Chirra <radhika.chirra@ibm.com> This is a duplicate of this patch: https://patches.dpdk.org/patch/52505/ You are from 2 different Linux teams at IBM, you hit the same issue at the same time, you both miss to give an explanation, funny. About collaborating inside IBM, please check this email: http://mails.dpdk.org/archives/dev/2019-April/129915.html ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-10 20:29 ` Thomas Monjalon @ 2019-04-10 20:58 ` David Christensen 2019-04-10 21:14 ` Thomas Monjalon 0 siblings, 1 reply; 19+ messages in thread From: David Christensen @ 2019-04-10 20:58 UTC (permalink / raw) To: Thomas Monjalon Cc: ferruh.yigit, arybchenko, dev, radhika.chirra, stable, Vivian Kong > This is a duplicate of this patch: > > https://patches.dpdk.org/patch/52505/ > > You are from 2 different Linux teams at IBM, > you hit the same issue at the same time, > you both miss to give an explanation, > funny. We both work for infrastructure teams who are supporting a project team that is developing a DPDK application that runs across multiple CPU architectures and encountered the error. The error comes from g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0: [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3 -ggdb3 -mcpu=native -mtune=native -isystem /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions -Werror -isystem /home/rchirra/gen/io In file included from drivers/pmd.cc:7:0: /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35: error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ [-fpermissive] struct rte_pci_device *pci_dev = bus_device; ^~~~~~~~~~ make[1]: *** [drivers/pmd.o] Error 1 Do you believe that more permissive compiler flags are the better answer? Dave ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-10 20:58 ` David Christensen @ 2019-04-10 21:14 ` Thomas Monjalon 2019-04-12 17:13 ` Ferruh Yigit 0 siblings, 1 reply; 19+ messages in thread From: Thomas Monjalon @ 2019-04-10 21:14 UTC (permalink / raw) To: David Christensen Cc: ferruh.yigit, arybchenko, dev, radhika.chirra, stable, Vivian Kong 10/04/2019 22:58, David Christensen: > > This is a duplicate of this patch: > > > > https://patches.dpdk.org/patch/52505/ > > > > You are from 2 different Linux teams at IBM, > > you hit the same issue at the same time, > > you both miss to give an explanation, > > funny. > > We both work for infrastructure teams who are supporting a project team > that is developing a DPDK application that runs across multiple CPU > architectures and encountered the error. > > The error comes from g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0: > > [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3 > -ggdb3 -mcpu=native -mtune=native -isystem > /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions > -Werror -isystem /home/rchirra/gen/io > > In file included from drivers/pmd.cc:7:0: > /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: > In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: > /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35: > error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ [-fpermissive] > struct rte_pci_device *pci_dev = bus_device; > ^~~~~~~~~~ > make[1]: *** [drivers/pmd.o] Error 1 > > Do you believe that more permissive compiler flags are the better answer? No, we should not force any compiler flag of the application. We are even trying to support pedantic flags in the app. So it seems we must fix it. We just need to change the title to mention it fixes the build for C++, and add the error message in the body. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-10 21:14 ` Thomas Monjalon @ 2019-04-12 17:13 ` Ferruh Yigit 0 siblings, 0 replies; 19+ messages in thread From: Ferruh Yigit @ 2019-04-12 17:13 UTC (permalink / raw) To: Thomas Monjalon, David Christensen Cc: arybchenko, dev, radhika.chirra, stable, Vivian Kong On 4/10/2019 10:14 PM, Thomas Monjalon wrote: > 10/04/2019 22:58, David Christensen: >>> This is a duplicate of this patch: >>> >>> https://patches.dpdk.org/patch/52505/ >>> >>> You are from 2 different Linux teams at IBM, >>> you hit the same issue at the same time, >>> you both miss to give an explanation, >>> funny. >> >> We both work for infrastructure teams who are supporting a project team >> that is developing a DPDK application that runs across multiple CPU >> architectures and encountered the error. >> >> The error comes from g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0: >> >> [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3 >> -ggdb3 -mcpu=native -mtune=native -isystem >> /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions >> -Werror -isystem /home/rchirra/gen/io >> >> In file included from drivers/pmd.cc:7:0: >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: >> In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35: >> error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ [-fpermissive] >> struct rte_pci_device *pci_dev = bus_device; >> ^~~~~~~~~~ >> make[1]: *** [drivers/pmd.o] Error 1 >> >> Do you believe that more permissive compiler flags are the better answer? > > No, we should not force any compiler flag of the application. > We are even trying to support pedantic flags in the app. > So it seems we must fix it. > > We just need to change the title to mention it fixes the build for C++, > and add the error message in the body. > I agree our public headers should be usable from c++ applications, but this header is not a public header. Is the DPDK driver compiled with c++ in this case? If so do we support (or have a target for support) that DPDK library itself can be compiled by c++ compiler? ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-10 20:16 [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init David Christensen 2019-04-10 20:29 ` Thomas Monjalon @ 2019-04-10 21:00 ` Bruce Richardson 2019-04-10 23:08 ` Stephen Hemminger 2019-04-10 21:36 ` [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error David Christensen 2 siblings, 1 reply; 19+ messages in thread From: Bruce Richardson @ 2019-04-10 21:00 UTC (permalink / raw) To: David Christensen Cc: thomas, ferruh.yigit, arybchenko, dev, radhika.chirra, stable On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: > The function eth_dev_pci_specific_init is missing a typecast to > (struct rte_pci_device *) for the input argument bus_device. > > Cc: stable@dpdk.org > > Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> > Tested-by: Radhika Chirra <radhika.chirra@ibm.com> > --- > lib/librte_ethdev/rte_ethdev_pci.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h > index 23257e9..a325311 100644 > --- a/lib/librte_ethdev/rte_ethdev_pci.h > +++ b/lib/librte_ethdev/rte_ethdev_pci.h > @@ -72,7 +72,7 @@ > > static inline int > eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { > - struct rte_pci_device *pci_dev = bus_device; > + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; > Is this needed for building some C++ apps that are including the header file (directly, or indirectly), because for pure C, "void *" types should be assignable to any other pointer type without casting? /Bruce ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-10 21:00 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson @ 2019-04-10 23:08 ` Stephen Hemminger 2019-04-12 17:09 ` Ferruh Yigit 0 siblings, 1 reply; 19+ messages in thread From: Stephen Hemminger @ 2019-04-10 23:08 UTC (permalink / raw) To: Bruce Richardson Cc: David Christensen, thomas, ferruh.yigit, arybchenko, dev, radhika.chirra, stable On Wed, 10 Apr 2019 22:00:18 +0100 Bruce Richardson <bruce.richardson@intel.com> wrote: > On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: > > The function eth_dev_pci_specific_init is missing a typecast to > > (struct rte_pci_device *) for the input argument bus_device. > > > > Cc: stable@dpdk.org > > > > Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> > > Tested-by: Radhika Chirra <radhika.chirra@ibm.com> > > --- > > lib/librte_ethdev/rte_ethdev_pci.h | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h > > index 23257e9..a325311 100644 > > --- a/lib/librte_ethdev/rte_ethdev_pci.h > > +++ b/lib/librte_ethdev/rte_ethdev_pci.h > > @@ -72,7 +72,7 @@ > > > > static inline int > > eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { > > - struct rte_pci_device *pci_dev = bus_device; > > + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; > > > > Is this needed for building some C++ apps that are including the header > file (directly, or indirectly), because for pure C, "void *" types should > be assignable to any other pointer type without casting? > > /Bruce Another example of Why the Hell is this inline? ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-10 23:08 ` Stephen Hemminger @ 2019-04-12 17:09 ` Ferruh Yigit 2019-04-12 17:15 ` Ananyev, Konstantin 0 siblings, 1 reply; 19+ messages in thread From: Ferruh Yigit @ 2019-04-12 17:09 UTC (permalink / raw) To: Stephen Hemminger, Bruce Richardson Cc: David Christensen, thomas, arybchenko, dev, radhika.chirra, stable On 4/11/2019 12:08 AM, Stephen Hemminger wrote: > On Wed, 10 Apr 2019 22:00:18 +0100 > Bruce Richardson <bruce.richardson@intel.com> wrote: > >> On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: >>> The function eth_dev_pci_specific_init is missing a typecast to >>> (struct rte_pci_device *) for the input argument bus_device. >>> >>> Cc: stable@dpdk.org >>> >>> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> >>> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> >>> --- >>> lib/librte_ethdev/rte_ethdev_pci.h | 2 +- >>> 1 file changed, 1 insertion(+), 1 deletion(-) >>> >>> diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h >>> index 23257e9..a325311 100644 >>> --- a/lib/librte_ethdev/rte_ethdev_pci.h >>> +++ b/lib/librte_ethdev/rte_ethdev_pci.h >>> @@ -72,7 +72,7 @@ >>> >>> static inline int >>> eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { >>> - struct rte_pci_device *pci_dev = bus_device; >>> + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; >>> >> >> Is this needed for building some C++ apps that are including the header >> file (directly, or indirectly), because for pure C, "void *" types should >> be assignable to any other pointer type without casting? >> >> /Bruce > > Another example of Why the Hell is this inline? > It has been done inline intentionally at the time as far as remember, this header is for drivers not for applications, it has helper functions. The common code from drivers related to the bus put into header files, so the code itself belongs to drivers not ethdev and reduces duplicates in them. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-12 17:09 ` Ferruh Yigit @ 2019-04-12 17:15 ` Ananyev, Konstantin 2019-04-12 17:25 ` Ferruh Yigit 0 siblings, 1 reply; 19+ messages in thread From: Ananyev, Konstantin @ 2019-04-12 17:15 UTC (permalink / raw) To: Yigit, Ferruh, Stephen Hemminger, Richardson, Bruce Cc: David Christensen, thomas, arybchenko, dev, radhika.chirra, stable > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ferruh Yigit > Sent: Friday, April 12, 2019 6:09 PM > To: Stephen Hemminger <stephen@networkplumber.org>; Richardson, Bruce <bruce.richardson@intel.com> > Cc: David Christensen <drc@linux.vnet.ibm.com>; thomas@monjalon.net; arybchenko@solarflare.com; dev@dpdk.org; > radhika.chirra@ibm.com; stable@dpdk.org > Subject: Re: [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init > > On 4/11/2019 12:08 AM, Stephen Hemminger wrote: > > On Wed, 10 Apr 2019 22:00:18 +0100 > > Bruce Richardson <bruce.richardson@intel.com> wrote: > > > >> On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: > >>> The function eth_dev_pci_specific_init is missing a typecast to > >>> (struct rte_pci_device *) for the input argument bus_device. > >>> > >>> Cc: stable@dpdk.org > >>> > >>> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> > >>> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> > >>> --- > >>> lib/librte_ethdev/rte_ethdev_pci.h | 2 +- > >>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>> > >>> diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h > >>> index 23257e9..a325311 100644 > >>> --- a/lib/librte_ethdev/rte_ethdev_pci.h > >>> +++ b/lib/librte_ethdev/rte_ethdev_pci.h > >>> @@ -72,7 +72,7 @@ > >>> > >>> static inline int > >>> eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { > >>> - struct rte_pci_device *pci_dev = bus_device; > >>> + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; > >>> > >> > >> Is this needed for building some C++ apps that are including the header > >> file (directly, or indirectly), because for pure C, "void *" types should > >> be assignable to any other pointer type without casting? > >> > >> /Bruce > > > > Another example of Why the Hell is this inline? > > > > It has been done inline intentionally at the time as far as remember, this > header is for drivers not for applications, it has helper functions. > > The common code from drivers related to the bus put into header files, so the > code itself belongs to drivers not ethdev and reduces duplicates in them. Ok that's the common code used by the drivers... But why it still can't be in .c file? Konstantin ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-12 17:15 ` Ananyev, Konstantin @ 2019-04-12 17:25 ` Ferruh Yigit 2019-04-12 17:29 ` Ferruh Yigit 0 siblings, 1 reply; 19+ messages in thread From: Ferruh Yigit @ 2019-04-12 17:25 UTC (permalink / raw) To: Ananyev, Konstantin, Stephen Hemminger, Richardson, Bruce Cc: David Christensen, thomas, arybchenko, dev, radhika.chirra, stable On 4/12/2019 6:15 PM, Ananyev, Konstantin wrote: > > >> -----Original Message----- >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ferruh Yigit >> Sent: Friday, April 12, 2019 6:09 PM >> To: Stephen Hemminger <stephen@networkplumber.org>; Richardson, Bruce <bruce.richardson@intel.com> >> Cc: David Christensen <drc@linux.vnet.ibm.com>; thomas@monjalon.net; arybchenko@solarflare.com; dev@dpdk.org; >> radhika.chirra@ibm.com; stable@dpdk.org >> Subject: Re: [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init >> >> On 4/11/2019 12:08 AM, Stephen Hemminger wrote: >>> On Wed, 10 Apr 2019 22:00:18 +0100 >>> Bruce Richardson <bruce.richardson@intel.com> wrote: >>> >>>> On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: >>>>> The function eth_dev_pci_specific_init is missing a typecast to >>>>> (struct rte_pci_device *) for the input argument bus_device. >>>>> >>>>> Cc: stable@dpdk.org >>>>> >>>>> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> >>>>> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> >>>>> --- >>>>> lib/librte_ethdev/rte_ethdev_pci.h | 2 +- >>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>> >>>>> diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h >>>>> index 23257e9..a325311 100644 >>>>> --- a/lib/librte_ethdev/rte_ethdev_pci.h >>>>> +++ b/lib/librte_ethdev/rte_ethdev_pci.h >>>>> @@ -72,7 +72,7 @@ >>>>> >>>>> static inline int >>>>> eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { >>>>> - struct rte_pci_device *pci_dev = bus_device; >>>>> + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; >>>>> >>>> >>>> Is this needed for building some C++ apps that are including the header >>>> file (directly, or indirectly), because for pure C, "void *" types should >>>> be assignable to any other pointer type without casting? >>>> >>>> /Bruce >>> >>> Another example of Why the Hell is this inline? >>> >> >> It has been done inline intentionally at the time as far as remember, this >> header is for drivers not for applications, it has helper functions. >> >> The common code from drivers related to the bus put into header files, so the >> code itself belongs to drivers not ethdev and reduces duplicates in them. > > Ok that's the common code used by the drivers... > But why it still can't be in .c file? When it is in .c file, it will be either in ethdev library, single location in .c file and binary file, but location is not exactly right, because code belongs to drivers. Or code should be in .c files of each drivers, this will be code duplication. Having in .h file makes code in single place, but when compiled code will be in each driver object file/ library. Of course it works when put into a .c file in ehtdev, but bus (pci and vdev) related code are not belongs to ethdev library and I believe shouldn't be part of ethdev binary. And those bus helper headers are only for drivers to include, so having inline shouldn't be a problem at all because there is not stability concern in that interface. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-12 17:25 ` Ferruh Yigit @ 2019-04-12 17:29 ` Ferruh Yigit 2019-04-12 21:31 ` Stephen Hemminger 0 siblings, 1 reply; 19+ messages in thread From: Ferruh Yigit @ 2019-04-12 17:29 UTC (permalink / raw) To: Ananyev, Konstantin, Stephen Hemminger, Richardson, Bruce Cc: David Christensen, thomas, arybchenko, dev, radhika.chirra, stable On 4/12/2019 6:25 PM, Ferruh Yigit wrote: > On 4/12/2019 6:15 PM, Ananyev, Konstantin wrote: >> >> >>> -----Original Message----- >>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ferruh Yigit >>> Sent: Friday, April 12, 2019 6:09 PM >>> To: Stephen Hemminger <stephen@networkplumber.org>; Richardson, Bruce <bruce.richardson@intel.com> >>> Cc: David Christensen <drc@linux.vnet.ibm.com>; thomas@monjalon.net; arybchenko@solarflare.com; dev@dpdk.org; >>> radhika.chirra@ibm.com; stable@dpdk.org >>> Subject: Re: [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init >>> >>> On 4/11/2019 12:08 AM, Stephen Hemminger wrote: >>>> On Wed, 10 Apr 2019 22:00:18 +0100 >>>> Bruce Richardson <bruce.richardson@intel.com> wrote: >>>> >>>>> On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: >>>>>> The function eth_dev_pci_specific_init is missing a typecast to >>>>>> (struct rte_pci_device *) for the input argument bus_device. >>>>>> >>>>>> Cc: stable@dpdk.org >>>>>> >>>>>> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> >>>>>> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> >>>>>> --- >>>>>> lib/librte_ethdev/rte_ethdev_pci.h | 2 +- >>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>>> >>>>>> diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h >>>>>> index 23257e9..a325311 100644 >>>>>> --- a/lib/librte_ethdev/rte_ethdev_pci.h >>>>>> +++ b/lib/librte_ethdev/rte_ethdev_pci.h >>>>>> @@ -72,7 +72,7 @@ >>>>>> >>>>>> static inline int >>>>>> eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { >>>>>> - struct rte_pci_device *pci_dev = bus_device; >>>>>> + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; >>>>>> >>>>> >>>>> Is this needed for building some C++ apps that are including the header >>>>> file (directly, or indirectly), because for pure C, "void *" types should >>>>> be assignable to any other pointer type without casting? >>>>> >>>>> /Bruce >>>> >>>> Another example of Why the Hell is this inline? >>>> >>> >>> It has been done inline intentionally at the time as far as remember, this >>> header is for drivers not for applications, it has helper functions. >>> >>> The common code from drivers related to the bus put into header files, so the >>> code itself belongs to drivers not ethdev and reduces duplicates in them. >> >> Ok that's the common code used by the drivers... >> But why it still can't be in .c file? > > When it is in .c file, it will be either in ethdev library, single location in > .c file and binary file, but location is not exactly right, because code belongs > to drivers. > Or code should be in .c files of each drivers, this will be code duplication. > > Having in .h file makes code in single place, but when compiled code will be in > each driver object file/ library. > > Of course it works when put into a .c file in ehtdev, but bus (pci and vdev) > related code are not belongs to ethdev library and I believe shouldn't be part > of ethdev binary. And those bus helper headers are only for drivers to include, > so having inline shouldn't be a problem at all because there is not stability > concern in that interface. > btw, if you put those into .c file in ethdev, you will be creating a dependency from ethdev to bus code, to all available buses which will make impossible to disable any bus type if you use ethdev. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-12 17:29 ` Ferruh Yigit @ 2019-04-12 21:31 ` Stephen Hemminger 2019-04-15 16:00 ` Ferruh Yigit 0 siblings, 1 reply; 19+ messages in thread From: Stephen Hemminger @ 2019-04-12 21:31 UTC (permalink / raw) To: Ferruh Yigit Cc: Ananyev, Konstantin, Richardson, Bruce, David Christensen, thomas, arybchenko, dev, radhika.chirra, stable On Fri, 12 Apr 2019 18:29:46 +0100 Ferruh Yigit <ferruh.yigit@intel.com> wrote: > On 4/12/2019 6:25 PM, Ferruh Yigit wrote: > > On 4/12/2019 6:15 PM, Ananyev, Konstantin wrote: > >> > >> > >>> -----Original Message----- > >>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ferruh Yigit > >>> Sent: Friday, April 12, 2019 6:09 PM > >>> To: Stephen Hemminger <stephen@networkplumber.org>; Richardson, Bruce <bruce.richardson@intel.com> > >>> Cc: David Christensen <drc@linux.vnet.ibm.com>; thomas@monjalon.net; arybchenko@solarflare.com; dev@dpdk.org; > >>> radhika.chirra@ibm.com; stable@dpdk.org > >>> Subject: Re: [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init > >>> > >>> On 4/11/2019 12:08 AM, Stephen Hemminger wrote: > >>>> On Wed, 10 Apr 2019 22:00:18 +0100 > >>>> Bruce Richardson <bruce.richardson@intel.com> wrote: > >>>> > >>>>> On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: > >>>>>> The function eth_dev_pci_specific_init is missing a typecast to > >>>>>> (struct rte_pci_device *) for the input argument bus_device. > >>>>>> > >>>>>> Cc: stable@dpdk.org > >>>>>> > >>>>>> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> > >>>>>> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> > >>>>>> --- > >>>>>> lib/librte_ethdev/rte_ethdev_pci.h | 2 +- > >>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) > >>>>>> > >>>>>> diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h > >>>>>> index 23257e9..a325311 100644 > >>>>>> --- a/lib/librte_ethdev/rte_ethdev_pci.h > >>>>>> +++ b/lib/librte_ethdev/rte_ethdev_pci.h > >>>>>> @@ -72,7 +72,7 @@ > >>>>>> > >>>>>> static inline int > >>>>>> eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { > >>>>>> - struct rte_pci_device *pci_dev = bus_device; > >>>>>> + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; > >>>>>> > >>>>> > >>>>> Is this needed for building some C++ apps that are including the header > >>>>> file (directly, or indirectly), because for pure C, "void *" types should > >>>>> be assignable to any other pointer type without casting? > >>>>> > >>>>> /Bruce > >>>> > >>>> Another example of Why the Hell is this inline? > >>>> > >>> > >>> It has been done inline intentionally at the time as far as remember, this > >>> header is for drivers not for applications, it has helper functions. > >>> > >>> The common code from drivers related to the bus put into header files, so the > >>> code itself belongs to drivers not ethdev and reduces duplicates in them. > >> > >> Ok that's the common code used by the drivers... > >> But why it still can't be in .c file? > > > > When it is in .c file, it will be either in ethdev library, single location in > > .c file and binary file, but location is not exactly right, because code belongs > > to drivers. > > Or code should be in .c files of each drivers, this will be code duplication. > > > > Having in .h file makes code in single place, but when compiled code will be in > > each driver object file/ library. > > > > Of course it works when put into a .c file in ehtdev, but bus (pci and vdev) > > related code are not belongs to ethdev library and I believe shouldn't be part > > of ethdev binary. And those bus helper headers are only for drivers to include, > > so having inline shouldn't be a problem at all because there is not stability > > concern in that interface. > > > > btw, if you put those into .c file in ethdev, you will be creating a dependency > from ethdev to bus code, to all available buses which will make impossible to > disable any bus type if you use ethdev. The problem I see is rte_ethdev_pci.h, it should be headers only and then put code rte_ethdev_pci.c ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init 2019-04-12 21:31 ` Stephen Hemminger @ 2019-04-15 16:00 ` Ferruh Yigit 0 siblings, 0 replies; 19+ messages in thread From: Ferruh Yigit @ 2019-04-15 16:00 UTC (permalink / raw) To: Stephen Hemminger Cc: Ananyev, Konstantin, Richardson, Bruce, David Christensen, thomas, arybchenko, dev, radhika.chirra, stable On 4/12/2019 10:31 PM, Stephen Hemminger wrote: > On Fri, 12 Apr 2019 18:29:46 +0100 > Ferruh Yigit <ferruh.yigit@intel.com> wrote: > >> On 4/12/2019 6:25 PM, Ferruh Yigit wrote: >>> On 4/12/2019 6:15 PM, Ananyev, Konstantin wrote: >>>> >>>> >>>>> -----Original Message----- >>>>> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Ferruh Yigit >>>>> Sent: Friday, April 12, 2019 6:09 PM >>>>> To: Stephen Hemminger <stephen@networkplumber.org>; Richardson, Bruce <bruce.richardson@intel.com> >>>>> Cc: David Christensen <drc@linux.vnet.ibm.com>; thomas@monjalon.net; arybchenko@solarflare.com; dev@dpdk.org; >>>>> radhika.chirra@ibm.com; stable@dpdk.org >>>>> Subject: Re: [dpdk-dev] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init >>>>> >>>>> On 4/11/2019 12:08 AM, Stephen Hemminger wrote: >>>>>> On Wed, 10 Apr 2019 22:00:18 +0100 >>>>>> Bruce Richardson <bruce.richardson@intel.com> wrote: >>>>>> >>>>>>> On Wed, Apr 10, 2019 at 03:16:16PM -0500, David Christensen wrote: >>>>>>>> The function eth_dev_pci_specific_init is missing a typecast to >>>>>>>> (struct rte_pci_device *) for the input argument bus_device. >>>>>>>> >>>>>>>> Cc: stable@dpdk.org >>>>>>>> >>>>>>>> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> >>>>>>>> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> >>>>>>>> --- >>>>>>>> lib/librte_ethdev/rte_ethdev_pci.h | 2 +- >>>>>>>> 1 file changed, 1 insertion(+), 1 deletion(-) >>>>>>>> >>>>>>>> diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h >>>>>>>> index 23257e9..a325311 100644 >>>>>>>> --- a/lib/librte_ethdev/rte_ethdev_pci.h >>>>>>>> +++ b/lib/librte_ethdev/rte_ethdev_pci.h >>>>>>>> @@ -72,7 +72,7 @@ >>>>>>>> >>>>>>>> static inline int >>>>>>>> eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { >>>>>>>> - struct rte_pci_device *pci_dev = bus_device; >>>>>>>> + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; >>>>>>>> >>>>>>> >>>>>>> Is this needed for building some C++ apps that are including the header >>>>>>> file (directly, or indirectly), because for pure C, "void *" types should >>>>>>> be assignable to any other pointer type without casting? >>>>>>> >>>>>>> /Bruce >>>>>> >>>>>> Another example of Why the Hell is this inline? >>>>>> >>>>> >>>>> It has been done inline intentionally at the time as far as remember, this >>>>> header is for drivers not for applications, it has helper functions. >>>>> >>>>> The common code from drivers related to the bus put into header files, so the >>>>> code itself belongs to drivers not ethdev and reduces duplicates in them. >>>> >>>> Ok that's the common code used by the drivers... >>>> But why it still can't be in .c file? >>> >>> When it is in .c file, it will be either in ethdev library, single location in >>> .c file and binary file, but location is not exactly right, because code belongs >>> to drivers. >>> Or code should be in .c files of each drivers, this will be code duplication. >>> >>> Having in .h file makes code in single place, but when compiled code will be in >>> each driver object file/ library. >>> >>> Of course it works when put into a .c file in ehtdev, but bus (pci and vdev) >>> related code are not belongs to ethdev library and I believe shouldn't be part >>> of ethdev binary. And those bus helper headers are only for drivers to include, >>> so having inline shouldn't be a problem at all because there is not stability >>> concern in that interface. >>> >> >> btw, if you put those into .c file in ethdev, you will be creating a dependency >> from ethdev to bus code, to all available buses which will make impossible to >> disable any bus type if you use ethdev. > > The problem I see is rte_ethdev_pci.h, it should be headers only and then put > code rte_ethdev_pci.c > Where this 'rte_ethdev_pci.c' should be? Because of reasons explained above, ehtdev is not good place. Perhaps a 'common' folder for net drivers may work, create a 'rte_ethdev_pci.o' and link it with relevant drivers.? ^ permalink raw reply [flat|nested] 19+ messages in thread
* [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error 2019-04-10 20:16 [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init David Christensen 2019-04-10 20:29 ` Thomas Monjalon 2019-04-10 21:00 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson @ 2019-04-10 21:36 ` David Christensen 2019-04-16 16:31 ` Ferruh Yigit 2 siblings, 1 reply; 19+ messages in thread From: David Christensen @ 2019-04-10 21:36 UTC (permalink / raw) To: thomas, ferruh.yigit, arybchenko Cc: dev, radhika.chirra, David Christensen, stable The function eth_dev_pci_specific_init is missing a typecast to (struct rte_pci_device *) for the input argument bus_device. This causes build issues in the GNU C++ compiler. [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3· -ggdb3 -mcpu=native -mtune=native -isystem· /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions· -Werror -isystem /home/rchirra/gen/io In file included from drivers/pmd.cc:7:0: /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35:· error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ [-fpermissive] struct rte_pci_device *pci_dev = bus_device; ^~~~~~~~~~ make[1]: *** [drivers/pmd.o] Error 1 $ g++ --version g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 Cc: stable@dpdk.org Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> Tested-by: Radhika Chirra <radhika.chirra@ibm.com> --- v2: * Mmodified subject line to indicate a C++ compiler issue * Added error output from the compiler lib/librte_ethdev/rte_ethdev_pci.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h index 23257e9..a325311 100644 --- a/lib/librte_ethdev/rte_ethdev_pci.h +++ b/lib/librte_ethdev/rte_ethdev_pci.h @@ -72,7 +72,7 @@ static inline int eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { - struct rte_pci_device *pci_dev = bus_device; + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; if (!pci_dev) return -ENODEV; -- 1.8.3.1 ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error 2019-04-10 21:36 ` [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error David Christensen @ 2019-04-16 16:31 ` Ferruh Yigit 2019-04-16 16:39 ` Andrew Rybchenko 0 siblings, 1 reply; 19+ messages in thread From: Ferruh Yigit @ 2019-04-16 16:31 UTC (permalink / raw) To: David Christensen, thomas, arybchenko; +Cc: dev, radhika.chirra, stable On 4/10/2019 10:36 PM, David Christensen wrote: > The function eth_dev_pci_specific_init is missing a typecast to > (struct rte_pci_device *) for the input argument bus_device. > This causes build issues in the GNU C++ compiler. > > [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3· > -ggdb3 -mcpu=native -mtune=native -isystem· > /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions· > -Werror -isystem /home/rchirra/gen/io > > In file included from drivers/pmd.cc:7:0: > /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: > In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: > /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35:· > error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ > [-fpermissive] > struct rte_pci_device *pci_dev = bus_device; > ^~~~~~~~~~ > make[1]: *** [drivers/pmd.o] Error 1 > > $ g++ --version > g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 This problem is while building a driver with c++ compiler, but since the solution is a simple casting, which doesn't have any side affect, I am for getting the patch, any objection? > > Cc: stable@dpdk.org > > Signed-off-by: David Christensen <drc@linux.vnet.ibm.com> > Tested-by: Radhika Chirra <radhika.chirra@ibm.com> > --- > v2: > * Mmodified subject line to indicate a C++ compiler issue > * Added error output from the compiler > > lib/librte_ethdev/rte_ethdev_pci.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/lib/librte_ethdev/rte_ethdev_pci.h b/lib/librte_ethdev/rte_ethdev_pci.h > index 23257e9..a325311 100644 > --- a/lib/librte_ethdev/rte_ethdev_pci.h > +++ b/lib/librte_ethdev/rte_ethdev_pci.h > @@ -72,7 +72,7 @@ > > static inline int > eth_dev_pci_specific_init(struct rte_eth_dev *eth_dev, void *bus_device) { > - struct rte_pci_device *pci_dev = bus_device; > + struct rte_pci_device *pci_dev = (struct rte_pci_device *)bus_device; > > if (!pci_dev) > return -ENODEV; > ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error 2019-04-16 16:31 ` Ferruh Yigit @ 2019-04-16 16:39 ` Andrew Rybchenko 2019-04-16 16:46 ` [dpdk-stable] [dpdk-dev] " Ananyev, Konstantin 0 siblings, 1 reply; 19+ messages in thread From: Andrew Rybchenko @ 2019-04-16 16:39 UTC (permalink / raw) To: Ferruh Yigit, David Christensen, thomas; +Cc: dev, radhika.chirra, stable On 4/16/19 7:31 PM, Ferruh Yigit wrote: > On 4/10/2019 10:36 PM, David Christensen wrote: >> The function eth_dev_pci_specific_init is missing a typecast to >> (struct rte_pci_device *) for the input argument bus_device. >> This causes build issues in the GNU C++ compiler. >> >> [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3· >> -ggdb3 -mcpu=native -mtune=native -isystem· >> /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions· >> -Werror -isystem /home/rchirra/gen/io >> >> In file included from drivers/pmd.cc:7:0: >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: >> In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35:· >> error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ >> [-fpermissive] >> struct rte_pci_device *pci_dev = bus_device; >> ^~~~~~~~~~ >> make[1]: *** [drivers/pmd.o] Error 1 >> >> $ g++ --version >> g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 > This problem is while building a driver with c++ compiler, but since the > solution is a simple casting, which doesn't have any side affect, I am for > getting the patch, any objection? It should be a decision that we support PMDs in C++ (if I understand the usage correctly) and it will require all headers to be compatible and ideally it should be checked by build automation (otherwise we will break and fix it pretty often). ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v2] ethdev: missing typecast causes C++ build error 2019-04-16 16:39 ` Andrew Rybchenko @ 2019-04-16 16:46 ` Ananyev, Konstantin 2019-04-16 21:19 ` Stephen Hemminger 0 siblings, 1 reply; 19+ messages in thread From: Ananyev, Konstantin @ 2019-04-16 16:46 UTC (permalink / raw) To: Andrew Rybchenko, Yigit, Ferruh, David Christensen, thomas Cc: dev, radhika.chirra, stable > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Andrew Rybchenko > Sent: Tuesday, April 16, 2019 5:40 PM > To: Yigit, Ferruh <ferruh.yigit@intel.com>; David Christensen <drc@linux.vnet.ibm.com>; thomas@monjalon.net > Cc: dev@dpdk.org; radhika.chirra@ibm.com; stable@dpdk.org > Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error > > On 4/16/19 7:31 PM, Ferruh Yigit wrote: > > On 4/10/2019 10:36 PM, David Christensen wrote: > >> The function eth_dev_pci_specific_init is missing a typecast to > >> (struct rte_pci_device *) for the input argument bus_device. > >> This causes build issues in the GNU C++ compiler. > >> > >> [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3· > >> -ggdb3 -mcpu=native -mtune=native -isystem· > >> /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions· > >> -Werror -isystem /home/rchirra/gen/io > >> > >> In file included from drivers/pmd.cc:7:0: > >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: > >> In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: > >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35:· > >> error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ > >> [-fpermissive] > >> struct rte_pci_device *pci_dev = bus_device; > >> ^~~~~~~~~~ > >> make[1]: *** [drivers/pmd.o] Error 1 > >> > >> $ g++ --version > >> g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 > > This problem is while building a driver with c++ compiler, but since the > > solution is a simple casting, which doesn't have any side affect, I am for > > getting the patch, any objection? > > It should be a decision that we support PMDs in C++ (if I understand > the usage correctly) and it will require all headers to be compatible and > ideally it should be checked by build automation (otherwise we will break > and fix it pretty often). Or as alternative, we probably can claim that PMDs in C++ are not supported, and if people like to do that - they have to deal with it on their own (create a C wrapper file, or so). Konstantin ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v2] ethdev: missing typecast causes C++ build error 2019-04-16 16:46 ` [dpdk-stable] [dpdk-dev] " Ananyev, Konstantin @ 2019-04-16 21:19 ` Stephen Hemminger 2019-04-16 21:50 ` David Christensen 0 siblings, 1 reply; 19+ messages in thread From: Stephen Hemminger @ 2019-04-16 21:19 UTC (permalink / raw) To: Ananyev, Konstantin Cc: Andrew Rybchenko, Yigit, Ferruh, David Christensen, thomas, dev, radhika.chirra, stable On Tue, 16 Apr 2019 16:46:14 +0000 "Ananyev, Konstantin" <konstantin.ananyev@intel.com> wrote: > > -----Original Message----- > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Andrew Rybchenko > > Sent: Tuesday, April 16, 2019 5:40 PM > > To: Yigit, Ferruh <ferruh.yigit@intel.com>; David Christensen <drc@linux.vnet.ibm.com>; thomas@monjalon.net > > Cc: dev@dpdk.org; radhika.chirra@ibm.com; stable@dpdk.org > > Subject: Re: [dpdk-dev] [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error > > > > On 4/16/19 7:31 PM, Ferruh Yigit wrote: > > > On 4/10/2019 10:36 PM, David Christensen wrote: > > >> The function eth_dev_pci_specific_init is missing a typecast to > > >> (struct rte_pci_device *) for the input argument bus_device. > > >> This causes build issues in the GNU C++ compiler. > > >> > > >> [CXX] g++ -o utils/pcap_handle.o -c utils/pcap_handle.cc -g3· > > >> -ggdb3 -mcpu=native -mtune=native -isystem· > > >> /home/rchirra/gen/io/ppc64include -std=gnu++11 -flax-vector-conversions· > > >> -Werror -isystem /home/rchirra/gen/io > > >> > > >> In file included from drivers/pmd.cc:7:0: > > >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: > > >> In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: > > >> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35:· > > >> error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ > > >> [-fpermissive] > > >> struct rte_pci_device *pci_dev = bus_device; > > >> ^~~~~~~~~~ > > >> make[1]: *** [drivers/pmd.o] Error 1 > > >> > > >> $ g++ --version > > >> g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 > > > This problem is while building a driver with c++ compiler, but since the > > > solution is a simple casting, which doesn't have any side affect, I am for > > > getting the patch, any objection? > > > > It should be a decision that we support PMDs in C++ (if I understand > > the usage correctly) and it will require all headers to be compatible and > > ideally it should be checked by build automation (otherwise we will break > > and fix it pretty often). > > Or as alternative, we probably can claim that PMDs in C++ are not supported, > and if people like to do that - they have to deal with it on their own > (create a C wrapper file, or so). > Konstantin > +1 no drivers or other parts of EAL in C++ ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [dpdk-stable] [dpdk-dev] [PATCH v2] ethdev: missing typecast causes C++ build error 2019-04-16 21:19 ` Stephen Hemminger @ 2019-04-16 21:50 ` David Christensen 0 siblings, 0 replies; 19+ messages in thread From: David Christensen @ 2019-04-16 21:50 UTC (permalink / raw) To: Stephen Hemminger, Ananyev, Konstantin Cc: Andrew Rybchenko, Yigit, Ferruh, thomas, dev, radhika.chirra, stable >>>>> In file included from drivers/pmd.cc:7:0: >>>>> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h: >>>>> In function ‘int eth_dev_pci_specific_init(rte_eth_dev*, void*)’: >>>>> /home/rchirra/gen/io/deps/dpdk/build/include/rte_ethdev_pci.h:75:35:· >>>>> error: invalid conversion from ‘void*’ to ‘rte_pci_device*’ >>>>> [-fpermissive] >>>>> struct rte_pci_device *pci_dev = bus_device; >>>>> ^~~~~~~~~~ >>>>> make[1]: *** [drivers/pmd.o] Error 1 >>>>> >>>>> $ g++ --version >>>>> g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0 >>>> This problem is while building a driver with c++ compiler, but since the >>>> solution is a simple casting, which doesn't have any side affect, I am for >>>> getting the patch, any objection? >>> >>> It should be a decision that we support PMDs in C++ (if I understand >>> the usage correctly) and it will require all headers to be compatible and >>> ideally it should be checked by build automation (otherwise we will break >>> and fix it pretty often). >> >> Or as alternative, we probably can claim that PMDs in C++ are not supported, >> and if people like to do that - they have to deal with it on their own >> (create a C wrapper file, or so). >> Konstantin >> > +1 no drivers or other parts of EAL in C++ > I've learned more about the intended usage in this case and it turns out not to be a PMD at all, it's an application that's reaching into the EAL in what I consider an inappropriate way. As a result I'm withdrawing the patch request and I'll work with the developers to find an alternate solution to their problem. Dave ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2019-04-16 21:50 UTC | newest] Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-04-10 20:16 [dpdk-stable] [PATCH] ethdev: missing typecast from void in eth_dev_pci_specific_init David Christensen 2019-04-10 20:29 ` Thomas Monjalon 2019-04-10 20:58 ` David Christensen 2019-04-10 21:14 ` Thomas Monjalon 2019-04-12 17:13 ` Ferruh Yigit 2019-04-10 21:00 ` [dpdk-stable] [dpdk-dev] " Bruce Richardson 2019-04-10 23:08 ` Stephen Hemminger 2019-04-12 17:09 ` Ferruh Yigit 2019-04-12 17:15 ` Ananyev, Konstantin 2019-04-12 17:25 ` Ferruh Yigit 2019-04-12 17:29 ` Ferruh Yigit 2019-04-12 21:31 ` Stephen Hemminger 2019-04-15 16:00 ` Ferruh Yigit 2019-04-10 21:36 ` [dpdk-stable] [PATCH v2] ethdev: missing typecast causes C++ build error David Christensen 2019-04-16 16:31 ` Ferruh Yigit 2019-04-16 16:39 ` Andrew Rybchenko 2019-04-16 16:46 ` [dpdk-stable] [dpdk-dev] " Ananyev, Konstantin 2019-04-16 21:19 ` Stephen Hemminger 2019-04-16 21:50 ` David Christensen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).