DPDK-dev Archive on lore.kernel.org
 help / color / Atom feed
* [dpdk-dev] [PATCH 0/2] fixes to resolve meson build issues on Power systems
@ 2019-08-14 18:36 David Christensen
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems David Christensen
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting David Christensen
  0 siblings, 2 replies; 13+ messages in thread
From: David Christensen @ 2019-08-14 18:36 UTC (permalink / raw)
  To: maxime.coquelin, tiwei.bie; +Cc: dev, David Christensen

Encountered a few issues while testing meson builds.  The first is related
to the gcc compiler used on RHEL 7.6 and how it interprets the "native" 
CPU type when running on a Power 9 system.  The second is a print format
warning error on Power systems.

David Christensen (2):
  config: fix RHEL7.6 build errors on Power 9 systems
  vhost: fix build error caused by 64bit print formatting

 config/ppc_64/meson.build     | 10 ++++++++++
 lib/librte_vhost/vhost_user.c |  9 +++++----
 2 files changed, 15 insertions(+), 4 deletions(-)

-- 
1.8.3.1


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

* [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems
  2019-08-14 18:36 [dpdk-dev] [PATCH 0/2] fixes to resolve meson build issues on Power systems David Christensen
@ 2019-08-14 18:36 ` David Christensen
  2019-10-25 18:52   ` David Christensen
  2019-10-27 10:04   ` David Marchand
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting David Christensen
  1 sibling, 2 replies; 13+ messages in thread
From: David Christensen @ 2019-08-14 18:36 UTC (permalink / raw)
  To: maxime.coquelin, tiwei.bie; +Cc: dev, David Christensen

gcc 4.8.5 used on RHEL 7.6 can identify a Power 9 CPU but cannot generate
Power 9 code when the "-mcpu=native" command line argument is used. Test
whether the compiler can generate Power 9 code and adjust the machine
setting appropriately.

Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
---
 config/ppc_64/meson.build | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/config/ppc_64/meson.build b/config/ppc_64/meson.build
index 0e65f9d..495ef6f 100644
--- a/config/ppc_64/meson.build
+++ b/config/ppc_64/meson.build
@@ -7,6 +7,16 @@ endif
 dpdk_conf.set('RTE_ARCH', 'ppc_64')
 dpdk_conf.set('RTE_ARCH_PPC_64', 1)
 
+# RHEL 7.x uses gcc 4.8.X which doesn't generate code for Power 9 CPUs,
+# though it will detect a Power 9 CPU when the "-mcpu=native" argument
+# is used, resulting in a build failure.
+power9_supported = cc.has_argument('-mcpu=power9')
+if not power9_supported
+	machine = 'power8'
+	machine_args = ['-mcpu=power8', '-mtune=power8']
+  dpdk_conf.set('RTE_MACHINE','power8')
+endif
+
 # overrides specific to ppc64
 dpdk_conf.set('RTE_MAX_LCORE', 1536)
 dpdk_conf.set('RTE_MAX_NUMA_NODES', 32)
-- 
1.8.3.1


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

* [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-08-14 18:36 [dpdk-dev] [PATCH 0/2] fixes to resolve meson build issues on Power systems David Christensen
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems David Christensen
@ 2019-08-14 18:36 ` David Christensen
  2019-08-15  6:53   ` David Marchand
  2019-10-25  4:41   ` Tiwei Bie
  1 sibling, 2 replies; 13+ messages in thread
From: David Christensen @ 2019-08-14 18:36 UTC (permalink / raw)
  To: maxime.coquelin, tiwei.bie; +Cc: dev, David Christensen

Use of %llx print formatting causes meson build error on Power systems with
RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.

Fixes: 9b62e2da1844 (vhost: register new regions with userfaultfd)
Cc: maxime.coquelin@redhat.com

Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
---
 lib/librte_vhost/vhost_user.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
index 0b72648..6a6d694 100644
--- a/lib/librte_vhost/vhost_user.c
+++ b/lib/librte_vhost/vhost_user.c
@@ -1086,10 +1086,11 @@
 				goto err_mmap;
 			}
 			RTE_LOG(INFO, VHOST_CONFIG,
-				"\t userfaultfd registered for range : %llx - %llx\n",
-				reg_struct.range.start,
-				reg_struct.range.start +
-				reg_struct.range.len - 1);
+				"\t userfaultfd registered for range : "
+				"%" PRIx64 " - %" PRIx64 "\n",
+				(uint64_t)reg_struct.range.start,
+				(uint64_t)reg_struct.range.start +
+				(uint64_t)reg_struct.range.len - 1);
 #else
 			goto err_mmap;
 #endif
-- 
1.8.3.1


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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting David Christensen
@ 2019-08-15  6:53   ` David Marchand
  2019-08-15 16:16     ` David Christensen
  2019-10-25  4:41   ` Tiwei Bie
  1 sibling, 1 reply; 13+ messages in thread
From: David Marchand @ 2019-08-15  6:53 UTC (permalink / raw)
  To: David Christensen; +Cc: Maxime Coquelin, Tiwei Bie, dev

On Wed, Aug 14, 2019 at 8:37 PM David Christensen
<drc@linux.vnet.ibm.com> wrote:
>
> Use of %llx print formatting causes meson build error on Power systems with
> RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
>
> Fixes: 9b62e2da1844 (vhost: register new regions with userfaultfd)
> Cc: maxime.coquelin@redhat.com
>
> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
> ---
>  lib/librte_vhost/vhost_user.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
>
> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> index 0b72648..6a6d694 100644
> --- a/lib/librte_vhost/vhost_user.c
> +++ b/lib/librte_vhost/vhost_user.c
> @@ -1086,10 +1086,11 @@
>                                 goto err_mmap;
>                         }
>                         RTE_LOG(INFO, VHOST_CONFIG,
> -                               "\t userfaultfd registered for range : %llx - %llx\n",
> -                               reg_struct.range.start,
> -                               reg_struct.range.start +
> -                               reg_struct.range.len - 1);
> +                               "\t userfaultfd registered for range : "
> +                               "%" PRIx64 " - %" PRIx64 "\n",
> +                               (uint64_t)reg_struct.range.start,
> +                               (uint64_t)reg_struct.range.start +
> +                               (uint64_t)reg_struct.range.len - 1);

struct uffdio_register {
        struct uffdio_range range;
...

struct uffdio_range {
        __u64 start;
        __u64 len;
};

You can drop those casts.


-- 
David Marchand

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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-08-15  6:53   ` David Marchand
@ 2019-08-15 16:16     ` David Christensen
  2019-08-19  8:40       ` David Marchand
  0 siblings, 1 reply; 13+ messages in thread
From: David Christensen @ 2019-08-15 16:16 UTC (permalink / raw)
  To: David Marchand; +Cc: Maxime Coquelin, Tiwei Bie, dev

>> Use of %llx print formatting causes meson build error on Power systems with
>> RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
>>
>> +                               (uint64_t)reg_struct.range.start,
>> +                               (uint64_t)reg_struct.range.start +
>> +                               (uint64_t)reg_struct.range.len - 1);

I didn't need them when compiling on Power but it's the only way I could 
get x86 to build without any warning:

cc -Ilib/lib@@rte_vhost@sta -Ilib -I../lib -Ilib/librte_vhost 
-I../lib/librte_vhost -I. -I../ -Iconfig -I../config 
-Ilib/librte_eal/common/include -I../lib/librte_eal/common/include 
-I../lib/librte_eal/linux/eal/include -Ilib/librte_eal/common 
-I../lib/librte_eal/common -Ilib/librte_eal/common/include/arch/x86 
-I../lib/librte_eal/common/include/arch/x86 -Ilib/librte_eal 
-I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs 
-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_cryptodev -I../lib/librte_cryptodev -Ilib/librte_hash 
-I../lib/librte_hash -Ilib/librte_pci -I../lib/librte_pci -pipe 
-D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -include rte_config.h 
-Wunused-parameter -Wsign-compare -Wcast-qual -D_GNU_SOURCE -fPIC 
-march=native -fno-strict-aliasing -DALLOW_EXPERIMENTAL_API  -MD -MQ 
'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -MF 
'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o.d' -o 
'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -c 
../lib/librte_vhost/vhost_user.c
../lib/librte_vhost/vhost_user.c: In function ‘vhost_user_set_mem_table’:
../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects 
argument of type ‘long unsigned int’, but argument 4 has type ‘__u64’ 
[-Wformat=]
     RTE_LOG(INFO, VHOST_CONFIG,
     ^
../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects 
argument of type ‘long unsigned int’, but argument 5 has type ‘__u64’ 
[-Wformat=]

This system was also RHEL 7.6 with gcc 4.8.5-36
Dave

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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-08-15 16:16     ` David Christensen
@ 2019-08-19  8:40       ` David Marchand
  2019-08-19 11:41         ` Maxime Coquelin
  0 siblings, 1 reply; 13+ messages in thread
From: David Marchand @ 2019-08-19  8:40 UTC (permalink / raw)
  To: David Christensen, Maxime Coquelin, Tiwei Bie; +Cc: dev

On Thu, Aug 15, 2019 at 6:16 PM David Christensen
<drc@linux.vnet.ibm.com> wrote:
>
> >> Use of %llx print formatting causes meson build error on Power systems with
> >> RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
> >>
> >> +                               (uint64_t)reg_struct.range.start,
> >> +                               (uint64_t)reg_struct.range.start +
> >> +                               (uint64_t)reg_struct.range.len - 1);
>
> I didn't need them when compiling on Power but it's the only way I could
> get x86 to build without any warning:
>
> cc -Ilib/lib@@rte_vhost@sta -Ilib -I../lib -Ilib/librte_vhost
> -I../lib/librte_vhost -I. -I../ -Iconfig -I../config
> -Ilib/librte_eal/common/include -I../lib/librte_eal/common/include
> -I../lib/librte_eal/linux/eal/include -Ilib/librte_eal/common
> -I../lib/librte_eal/common -Ilib/librte_eal/common/include/arch/x86
> -I../lib/librte_eal/common/include/arch/x86 -Ilib/librte_eal
> -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs
> -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_cryptodev -I../lib/librte_cryptodev -Ilib/librte_hash
> -I../lib/librte_hash -Ilib/librte_pci -I../lib/librte_pci -pipe
> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -include rte_config.h
> -Wunused-parameter -Wsign-compare -Wcast-qual -D_GNU_SOURCE -fPIC
> -march=native -fno-strict-aliasing -DALLOW_EXPERIMENTAL_API  -MD -MQ
> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -MF
> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o.d' -o
> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -c
> ../lib/librte_vhost/vhost_user.c
> ../lib/librte_vhost/vhost_user.c: In function ‘vhost_user_set_mem_table’:
> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
> argument of type ‘long unsigned int’, but argument 4 has type ‘__u64’
> [-Wformat=]
>      RTE_LOG(INFO, VHOST_CONFIG,
>      ^
> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
> argument of type ‘long unsigned int’, but argument 5 has type ‘__u64’
> [-Wformat=]
>
> This system was also RHEL 7.6 with gcc 4.8.5-36

Ok, I run the same.
The catch is that I did not have RTE_LIBRTE_VHOST_POSTCOPY enabled in
my working environment (using make) while meson enables it as long as
userfaultd.h is present.

Maxime, Tiwei,

Can't we use uintXX_t instead of (what looks to me) kernel types __uXX ?


-- 
David Marchand

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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-08-19  8:40       ` David Marchand
@ 2019-08-19 11:41         ` Maxime Coquelin
  2019-10-24 19:27           ` David Marchand
  0 siblings, 1 reply; 13+ messages in thread
From: Maxime Coquelin @ 2019-08-19 11:41 UTC (permalink / raw)
  To: David Marchand, David Christensen, Tiwei Bie; +Cc: dev



On 8/19/19 10:40 AM, David Marchand wrote:
> On Thu, Aug 15, 2019 at 6:16 PM David Christensen
> <drc@linux.vnet.ibm.com> wrote:
>>
>>>> Use of %llx print formatting causes meson build error on Power systems with
>>>> RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
>>>>
>>>> +                               (uint64_t)reg_struct.range.start,
>>>> +                               (uint64_t)reg_struct.range.start +
>>>> +                               (uint64_t)reg_struct.range.len - 1);
>>
>> I didn't need them when compiling on Power but it's the only way I could
>> get x86 to build without any warning:
>>
>> cc -Ilib/lib@@rte_vhost@sta -Ilib -I../lib -Ilib/librte_vhost
>> -I../lib/librte_vhost -I. -I../ -Iconfig -I../config
>> -Ilib/librte_eal/common/include -I../lib/librte_eal/common/include
>> -I../lib/librte_eal/linux/eal/include -Ilib/librte_eal/common
>> -I../lib/librte_eal/common -Ilib/librte_eal/common/include/arch/x86
>> -I../lib/librte_eal/common/include/arch/x86 -Ilib/librte_eal
>> -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs
>> -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_cryptodev -I../lib/librte_cryptodev -Ilib/librte_hash
>> -I../lib/librte_hash -Ilib/librte_pci -I../lib/librte_pci -pipe
>> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -include rte_config.h
>> -Wunused-parameter -Wsign-compare -Wcast-qual -D_GNU_SOURCE -fPIC
>> -march=native -fno-strict-aliasing -DALLOW_EXPERIMENTAL_API  -MD -MQ
>> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -MF
>> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o.d' -o
>> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -c
>> ../lib/librte_vhost/vhost_user.c
>> ../lib/librte_vhost/vhost_user.c: In function ‘vhost_user_set_mem_table’:
>> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
>> argument of type ‘long unsigned int’, but argument 4 has type ‘__u64’
>> [-Wformat=]
>>      RTE_LOG(INFO, VHOST_CONFIG,
>>      ^
>> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
>> argument of type ‘long unsigned int’, but argument 5 has type ‘__u64’
>> [-Wformat=]
>>
>> This system was also RHEL 7.6 with gcc 4.8.5-36
> 
> Ok, I run the same.
> The catch is that I did not have RTE_LIBRTE_VHOST_POSTCOPY enabled in
> my working environment (using make) while meson enables it as long as
> userfaultd.h is present.
> 
> Maxime, Tiwei,
> 
> Can't we use uintXX_t instead of (what looks to me) kernel types __uXX ?
> 
> 

That actually comes from a kernel header (linux/userfaultfd.h), so I
would say no.

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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-08-19 11:41         ` Maxime Coquelin
@ 2019-10-24 19:27           ` David Marchand
  2019-10-25  4:38             ` Tiwei Bie
  0 siblings, 1 reply; 13+ messages in thread
From: David Marchand @ 2019-10-24 19:27 UTC (permalink / raw)
  To: Maxime Coquelin, Tiwei Bie; +Cc: David Christensen, dev

On Mon, Aug 19, 2019 at 1:41 PM Maxime Coquelin
<maxime.coquelin@redhat.com> wrote:
> On 8/19/19 10:40 AM, David Marchand wrote:
> > On Thu, Aug 15, 2019 at 6:16 PM David Christensen
> > <drc@linux.vnet.ibm.com> wrote:
> >>
> >>>> Use of %llx print formatting causes meson build error on Power systems with
> >>>> RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
> >>>>
> >>>> +                               (uint64_t)reg_struct.range.start,
> >>>> +                               (uint64_t)reg_struct.range.start +
> >>>> +                               (uint64_t)reg_struct.range.len - 1);
> >>
> >> I didn't need them when compiling on Power but it's the only way I could
> >> get x86 to build without any warning:
> >>
> >> cc -Ilib/lib@@rte_vhost@sta -Ilib -I../lib -Ilib/librte_vhost
> >> -I../lib/librte_vhost -I. -I../ -Iconfig -I../config
> >> -Ilib/librte_eal/common/include -I../lib/librte_eal/common/include
> >> -I../lib/librte_eal/linux/eal/include -Ilib/librte_eal/common
> >> -I../lib/librte_eal/common -Ilib/librte_eal/common/include/arch/x86
> >> -I../lib/librte_eal/common/include/arch/x86 -Ilib/librte_eal
> >> -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs
> >> -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_cryptodev -I../lib/librte_cryptodev -Ilib/librte_hash
> >> -I../lib/librte_hash -Ilib/librte_pci -I../lib/librte_pci -pipe
> >> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -include rte_config.h
> >> -Wunused-parameter -Wsign-compare -Wcast-qual -D_GNU_SOURCE -fPIC
> >> -march=native -fno-strict-aliasing -DALLOW_EXPERIMENTAL_API  -MD -MQ
> >> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -MF
> >> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o.d' -o
> >> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -c
> >> ../lib/librte_vhost/vhost_user.c
> >> ../lib/librte_vhost/vhost_user.c: In function ‘vhost_user_set_mem_table’:
> >> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
> >> argument of type ‘long unsigned int’, but argument 4 has type ‘__u64’
> >> [-Wformat=]
> >>      RTE_LOG(INFO, VHOST_CONFIG,
> >>      ^
> >> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
> >> argument of type ‘long unsigned int’, but argument 5 has type ‘__u64’
> >> [-Wformat=]
> >>
> >> This system was also RHEL 7.6 with gcc 4.8.5-36
> >
> > Ok, I run the same.
> > The catch is that I did not have RTE_LIBRTE_VHOST_POSTCOPY enabled in
> > my working environment (using make) while meson enables it as long as
> > userfaultd.h is present.
> >
> > Maxime, Tiwei,
> >
> > Can't we use uintXX_t instead of (what looks to me) kernel types __uXX ?
> >
> >
>
> That actually comes from a kernel header (linux/userfaultfd.h), so I
> would say no.

Sorry, I had forgotten about this patch.
Seems fine to me then.
Maxime, Tiwei?


-- 
David Marchand

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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-10-24 19:27           ` David Marchand
@ 2019-10-25  4:38             ` Tiwei Bie
  0 siblings, 0 replies; 13+ messages in thread
From: Tiwei Bie @ 2019-10-25  4:38 UTC (permalink / raw)
  To: David Marchand; +Cc: Maxime Coquelin, David Christensen, dev

On Thu, Oct 24, 2019 at 09:27:38PM +0200, David Marchand wrote:
> On Mon, Aug 19, 2019 at 1:41 PM Maxime Coquelin
> <maxime.coquelin@redhat.com> wrote:
> > On 8/19/19 10:40 AM, David Marchand wrote:
> > > On Thu, Aug 15, 2019 at 6:16 PM David Christensen
> > > <drc@linux.vnet.ibm.com> wrote:
> > >>
> > >>>> Use of %llx print formatting causes meson build error on Power systems with
> > >>>> RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
> > >>>>
> > >>>> +                               (uint64_t)reg_struct.range.start,
> > >>>> +                               (uint64_t)reg_struct.range.start +
> > >>>> +                               (uint64_t)reg_struct.range.len - 1);
> > >>
> > >> I didn't need them when compiling on Power but it's the only way I could
> > >> get x86 to build without any warning:
> > >>
> > >> cc -Ilib/lib@@rte_vhost@sta -Ilib -I../lib -Ilib/librte_vhost
> > >> -I../lib/librte_vhost -I. -I../ -Iconfig -I../config
> > >> -Ilib/librte_eal/common/include -I../lib/librte_eal/common/include
> > >> -I../lib/librte_eal/linux/eal/include -Ilib/librte_eal/common
> > >> -I../lib/librte_eal/common -Ilib/librte_eal/common/include/arch/x86
> > >> -I../lib/librte_eal/common/include/arch/x86 -Ilib/librte_eal
> > >> -I../lib/librte_eal -Ilib/librte_kvargs -I../lib/librte_kvargs
> > >> -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_cryptodev -I../lib/librte_cryptodev -Ilib/librte_hash
> > >> -I../lib/librte_hash -Ilib/librte_pci -I../lib/librte_pci -pipe
> > >> -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -O3 -include rte_config.h
> > >> -Wunused-parameter -Wsign-compare -Wcast-qual -D_GNU_SOURCE -fPIC
> > >> -march=native -fno-strict-aliasing -DALLOW_EXPERIMENTAL_API  -MD -MQ
> > >> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -MF
> > >> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o.d' -o
> > >> 'lib/lib@@rte_vhost@sta/librte_vhost_vhost_user.c.o' -c
> > >> ../lib/librte_vhost/vhost_user.c
> > >> ../lib/librte_vhost/vhost_user.c: In function ‘vhost_user_set_mem_table’:
> > >> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
> > >> argument of type ‘long unsigned int’, but argument 4 has type ‘__u64’
> > >> [-Wformat=]
> > >>      RTE_LOG(INFO, VHOST_CONFIG,
> > >>      ^
> > >> ../lib/librte_vhost/vhost_user.c:1088:4: warning: format ‘%lx’ expects
> > >> argument of type ‘long unsigned int’, but argument 5 has type ‘__u64’
> > >> [-Wformat=]
> > >>
> > >> This system was also RHEL 7.6 with gcc 4.8.5-36
> > >
> > > Ok, I run the same.
> > > The catch is that I did not have RTE_LIBRTE_VHOST_POSTCOPY enabled in
> > > my working environment (using make) while meson enables it as long as
> > > userfaultd.h is present.
> > >
> > > Maxime, Tiwei,
> > >
> > > Can't we use uintXX_t instead of (what looks to me) kernel types __uXX ?
> > >
> > >
> >
> > That actually comes from a kernel header (linux/userfaultfd.h), so I
> > would say no.
> 
> Sorry, I had forgotten about this patch.
> Seems fine to me then.
> Maxime, Tiwei?

LGTM as well.

> 
> 
> -- 
> David Marchand

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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting David Christensen
  2019-08-15  6:53   ` David Marchand
@ 2019-10-25  4:41   ` Tiwei Bie
  2019-10-27 10:04     ` David Marchand
  1 sibling, 1 reply; 13+ messages in thread
From: Tiwei Bie @ 2019-10-25  4:41 UTC (permalink / raw)
  To: David Christensen; +Cc: maxime.coquelin, dev

On Wed, Aug 14, 2019 at 01:36:41PM -0500, David Christensen wrote:
> Use of %llx print formatting causes meson build error on Power systems with
> RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
> 
> Fixes: 9b62e2da1844 (vhost: register new regions with userfaultfd)
> Cc: maxime.coquelin@redhat.com
> 
> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
> ---
>  lib/librte_vhost/vhost_user.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/lib/librte_vhost/vhost_user.c b/lib/librte_vhost/vhost_user.c
> index 0b72648..6a6d694 100644
> --- a/lib/librte_vhost/vhost_user.c
> +++ b/lib/librte_vhost/vhost_user.c
> @@ -1086,10 +1086,11 @@
>  				goto err_mmap;
>  			}
>  			RTE_LOG(INFO, VHOST_CONFIG,
> -				"\t userfaultfd registered for range : %llx - %llx\n",
> -				reg_struct.range.start,
> -				reg_struct.range.start +
> -				reg_struct.range.len - 1);
> +				"\t userfaultfd registered for range : "
> +				"%" PRIx64 " - %" PRIx64 "\n",
> +				(uint64_t)reg_struct.range.start,
> +				(uint64_t)reg_struct.range.start +
> +				(uint64_t)reg_struct.range.len - 1);
>  #else
>  			goto err_mmap;
>  #endif
> -- 
> 1.8.3.1
> 

Cc: stable@dpdk.org

Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>

Thanks,
Tiwei

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

* Re: [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems David Christensen
@ 2019-10-25 18:52   ` David Christensen
  2019-10-27 10:04   ` David Marchand
  1 sibling, 0 replies; 13+ messages in thread
From: David Christensen @ 2019-10-25 18:52 UTC (permalink / raw)
  To: maxime.coquelin, tiwei.bie; +Cc: dev

> gcc 4.8.5 used on RHEL 7.6 can identify a Power 9 CPU but cannot generate
> Power 9 code when the "-mcpu=native" command line argument is used. Test
> whether the compiler can generate Power 9 code and adjust the machine
> setting appropriately.
> 
> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
> ---

Ping

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

* Re: [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems
  2019-08-14 18:36 ` [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems David Christensen
  2019-10-25 18:52   ` David Christensen
@ 2019-10-27 10:04   ` David Marchand
  1 sibling, 0 replies; 13+ messages in thread
From: David Marchand @ 2019-10-27 10:04 UTC (permalink / raw)
  To: David Christensen; +Cc: Maxime Coquelin, Tiwei Bie, dev

On Wed, Aug 14, 2019 at 8:37 PM David Christensen
<drc@linux.vnet.ibm.com> wrote:
>
> gcc 4.8.5 used on RHEL 7.6 can identify a Power 9 CPU but cannot generate
> Power 9 code when the "-mcpu=native" command line argument is used. Test
> whether the compiler can generate Power 9 code and adjust the machine
> setting appropriately.
>
> Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
> ---
>  config/ppc_64/meson.build | 10 ++++++++++
>  1 file changed, 10 insertions(+)
>
> diff --git a/config/ppc_64/meson.build b/config/ppc_64/meson.build
> index 0e65f9d..495ef6f 100644
> --- a/config/ppc_64/meson.build
> +++ b/config/ppc_64/meson.build
> @@ -7,6 +7,16 @@ endif
>  dpdk_conf.set('RTE_ARCH', 'ppc_64')
>  dpdk_conf.set('RTE_ARCH_PPC_64', 1)
>
> +# RHEL 7.x uses gcc 4.8.X which doesn't generate code for Power 9 CPUs,
> +# though it will detect a Power 9 CPU when the "-mcpu=native" argument
> +# is used, resulting in a build failure.
> +power9_supported = cc.has_argument('-mcpu=power9')
> +if not power9_supported
> +       machine = 'power8'
> +       machine_args = ['-mcpu=power8', '-mtune=power8']
> +  dpdk_conf.set('RTE_MACHINE','power8')

Fixed indent.

> +endif
> +
>  # overrides specific to ppc64
>  dpdk_conf.set('RTE_MAX_LCORE', 1536)
>  dpdk_conf.set('RTE_MAX_NUMA_NODES', 32)
> --
> 1.8.3.1
>

Applied, thanks.


--
David Marchand

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

* Re: [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting
  2019-10-25  4:41   ` Tiwei Bie
@ 2019-10-27 10:04     ` David Marchand
  0 siblings, 0 replies; 13+ messages in thread
From: David Marchand @ 2019-10-27 10:04 UTC (permalink / raw)
  To: Tiwei Bie; +Cc: David Christensen, Maxime Coquelin, dev

On Fri, Oct 25, 2019 at 6:41 AM Tiwei Bie <tiwei.bie@intel.com> wrote:
>
> On Wed, Aug 14, 2019 at 01:36:41PM -0500, David Christensen wrote:
> > Use of %llx print formatting causes meson build error on Power systems with
> > RHEL 7.6 and gcc 4.8.5.  Replace with PRIx64 macro.
> >
> > Fixes: 9b62e2da1844 (vhost: register new regions with userfaultfd)

> Cc: stable@dpdk.org

> >
> > Signed-off-by: David Christensen <drc@linux.vnet.ibm.com>
>
> Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>

Applied, thanks.



--
David Marchand

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

end of thread, back to index

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-14 18:36 [dpdk-dev] [PATCH 0/2] fixes to resolve meson build issues on Power systems David Christensen
2019-08-14 18:36 ` [dpdk-dev] [PATCH 1/2] config: fix RHEL7.6 build errors on Power 9 systems David Christensen
2019-10-25 18:52   ` David Christensen
2019-10-27 10:04   ` David Marchand
2019-08-14 18:36 ` [dpdk-dev] [PATCH 2/2] vhost: fix build error caused by 64bit print formatting David Christensen
2019-08-15  6:53   ` David Marchand
2019-08-15 16:16     ` David Christensen
2019-08-19  8:40       ` David Marchand
2019-08-19 11:41         ` Maxime Coquelin
2019-10-24 19:27           ` David Marchand
2019-10-25  4:38             ` Tiwei Bie
2019-10-25  4:41   ` Tiwei Bie
2019-10-27 10:04     ` David Marchand

DPDK-dev Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/dpdk-dev/0 dpdk-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 dpdk-dev dpdk-dev/ https://lore.kernel.org/dpdk-dev \
		dev@dpdk.org
	public-inbox-index dpdk-dev

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.dpdk.dev


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