DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
@ 2016-06-01 20:07 Martinx - ジェームズ
  2016-06-03 10:45 ` Ferruh Yigit
  0 siblings, 1 reply; 14+ messages in thread
From: Martinx - ジェームズ @ 2016-06-01 20:07 UTC (permalink / raw)
  To: dev

Guys,

 I'm trying to build DPDK-16.04 on CentOS 6.8, but it is failing, here is
the error:

---
...
== Build lib/librte_eal/linuxapp
== Build lib/librte_eal/linuxapp/eal
== Build lib/librte_eal/linuxapp/igb_uio
  CC eal.o
  CC eal_hugepage_info.o
  CC eal_memory.o
  LD
 /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/built-in.o
  CC [M]
 /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o
  CC eal_thread.o
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
In function 'igbuio_msix_mask_irq':
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this function)
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
error: (Each undeclared identifier is reported only once
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
error: for each function it appears in.)
make[8]: ***
[/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o]
Error 1
make[7]: ***
[_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio]
Error 2
make[6]: *** [sub-make] Error 2
make[5]: *** [igb_uio.ko] Error 2
make[4]: *** [igb_uio] Error 2
make[4]: *** Waiting for unfinished jobs....
  CC eal_log.o
  CC eal_pci.o
  CC eal_pci_uio.o
  CC eal_pci_vfio.o
  CC eal_pci_vfio_mp_sync.o
...
---

 Any clue?

 I'm trying to build it by running:

--
rpmbuild --ba /root/rpmbuild/SPECS/dpdk.spec
--

 I removed the "doc" and the need for Xen out of it... I can take this spec
and the dpdk-16.04.tar.gz and build it on CentOS 7.

Thanks!
Thiago

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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-01 20:07 [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8 Martinx - ジェームズ
@ 2016-06-03 10:45 ` Ferruh Yigit
  2016-06-03 15:17   ` Martinx - ジェームズ
  0 siblings, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2016-06-03 10:45 UTC (permalink / raw)
  To: Martinx - ジェームズ, dev

On 6/1/2016 9:07 PM, Martinx - ジェームズ wrote:
> Guys,
> 
>  I'm trying to build DPDK-16.04 on CentOS 6.8, but it is failing, here is
> the error:
> 
> ---
> ...
> == Build lib/librte_eal/linuxapp
> == Build lib/librte_eal/linuxapp/eal
> == Build lib/librte_eal/linuxapp/igb_uio
>   CC eal.o
>   CC eal_hugepage_info.o
>   CC eal_memory.o
>   LD
>  /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/built-in.o
>   CC [M]
>  /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o
>   CC eal_thread.o
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
> In function 'igbuio_msix_mask_irq':
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this function)
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> error: (Each undeclared identifier is reported only once
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> error: for each function it appears in.)
> make[8]: ***
> [/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o]
> Error 1
> make[7]: ***
> [_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio]
> Error 2
> make[6]: *** [sub-make] Error 2
> make[5]: *** [igb_uio.ko] Error 2
> make[4]: *** [igb_uio] Error 2
> make[4]: *** Waiting for unfinished jobs....
>   CC eal_log.o
>   CC eal_pci.o
>   CC eal_pci_uio.o
>   CC eal_pci_vfio.o
>   CC eal_pci_vfio_mp_sync.o
> ...
> ---
> 
>  Any clue?
> 
>  I'm trying to build it by running:
> 
> --
> rpmbuild --ba /root/rpmbuild/SPECS/dpdk.spec
> --
> 
>  I removed the "doc" and the need for Xen out of it... I can take this spec
> and the dpdk-16.04.tar.gz and build it on CentOS 7.
> 
> Thanks!
> Thiago
> 

Hi Thiago,

As a reference, I tested spec file on Fedora 23, compilation worked fine.
Only I found you need to set RTE_TARGET=x86_64-default-linuxapp-gcc
before building, to be able to package all files.

meanwhile PCI_MSIX_ENTRY_CTRL_MASKBIT is defined for kernels >= 2.6.38,
BUT it already defined in igb_uio/compat.h for the case kernel headers
don't have it, so it is not related to the kernel versions, not sure
about source of the error.

Thanks,
ferruh

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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-03 10:45 ` Ferruh Yigit
@ 2016-06-03 15:17   ` Martinx - ジェームズ
  2016-06-12 15:30     ` Rosen, Rami
  0 siblings, 1 reply; 14+ messages in thread
From: Martinx - ジェームズ @ 2016-06-03 15:17 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev

On 3 June 2016 at 06:45, Ferruh Yigit <ferruh.yigit@intel.com> wrote:

> On 6/1/2016 9:07 PM, Martinx - ジェームズ wrote:
> > Guys,
> >
> >  I'm trying to build DPDK-16.04 on CentOS 6.8, but it is failing, here is
> > the error:
> >
> > ---
> > ...
> > == Build lib/librte_eal/linuxapp
> > == Build lib/librte_eal/linuxapp/eal
> > == Build lib/librte_eal/linuxapp/igb_uio
> >   CC eal.o
> >   CC eal_hugepage_info.o
> >   CC eal_memory.o
> >   LD
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/built-in.o
> >   CC [M]
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o
> >   CC eal_thread.o
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
> > In function 'igbuio_msix_mask_irq':
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> > error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this
> function)
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> > error: (Each undeclared identifier is reported only once
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> > error: for each function it appears in.)
> > make[8]: ***
> >
> [/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o]
> > Error 1
> > make[7]: ***
> >
> [_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio]
> > Error 2
> > make[6]: *** [sub-make] Error 2
> > make[5]: *** [igb_uio.ko] Error 2
> > make[4]: *** [igb_uio] Error 2
> > make[4]: *** Waiting for unfinished jobs....
> >   CC eal_log.o
> >   CC eal_pci.o
> >   CC eal_pci_uio.o
> >   CC eal_pci_vfio.o
> >   CC eal_pci_vfio_mp_sync.o
> > ...
> > ---
> >
> >  Any clue?
> >
> >  I'm trying to build it by running:
> >
> > --
> > rpmbuild --ba /root/rpmbuild/SPECS/dpdk.spec
> > --
> >
> >  I removed the "doc" and the need for Xen out of it... I can take this
> spec
> > and the dpdk-16.04.tar.gz and build it on CentOS 7.
> >
> > Thanks!
> > Thiago
> >
>
> Hi Thiago,
>
> As a reference, I tested spec file on Fedora 23, compilation worked fine.
> Only I found you need to set RTE_TARGET=x86_64-default-linuxapp-gcc
> before building, to be able to package all files.
>
> meanwhile PCI_MSIX_ENTRY_CTRL_MASKBIT is defined for kernels >= 2.6.38,
> BUT it already defined in igb_uio/compat.h for the case kernel headers
> don't have it, so it is not related to the kernel versions, not sure
> about source of the error.
>
> Thanks,
> ferruh
>

Hello Ferruh,

 The dpdk.spec file already tries to compile it by using
"RTE_TARGET=x86_64-default-linuxapp-gcc", look:

---
# rpmbuild --ba /root/rpmbuild/SPECS/dpdk.spec
.........
+ unset DISPLAY
+ make O=x86_64-default-linuxapp-gcc T=x86_64-native-linuxapp-gcc config
Configuration done
.........
---

 Am I right?

 But it fails... I'll need to stick with DPDK-1.8 for CentOS 6 for now,
since I can compile it without problems...

 Thanks anyway man!

Best,
Thiago

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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-03 15:17   ` Martinx - ジェームズ
@ 2016-06-12 15:30     ` Rosen, Rami
  2016-06-13 16:15       ` Martinx - ジェームズ
  2016-06-15 15:57       ` [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel Ferruh Yigit
  0 siblings, 2 replies; 14+ messages in thread
From: Rosen, Rami @ 2016-06-12 15:30 UTC (permalink / raw)
  To: thiagocmartinsc, Yigit, Ferruh; +Cc: dev, Rosen, Rami

Hi Thiago,

> Any clue?

Sure. This is the reason: in dpdk-16.04/lib/librte_eal/linuxapp/igb_uio we have:
....
#ifndef PCI_MSIX_ENTRY_SIZE
#define PCI_MSIX_ENTRY_SIZE             16
#define  PCI_MSIX_ENTRY_LOWER_ADDR      0
#define  PCI_MSIX_ENTRY_UPPER_ADDR      4
#define  PCI_MSIX_ENTRY_DATA            8
#define  PCI_MSIX_ENTRY_VECTOR_CTRL     12
#define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1
#endif
...

The root cause of the problem is due to that in CentOS 6.8, PCI_MSIX_ENTRY_SIZE is defined; this  
causes *avoiding* having the PCI_MSIX_ENTRY_CTRL_MASKBIT definition as shown above.

The definition of PCI_MSIX_ENTRY_SIZE is due to the following patch, which was introduced in CentOS 6.8, which moved PCI_MSIX_ENTRY_SIZE from the inner drivers/pci/msi.h header file into include/linux/pci_regs.h,
The linux/pci_regs.h is included in the pci.h header, which is used by the igb_uio.c, which failed in compilation.

"PATCH 1/8] PCI: MSI: Move MSI-X entry definition to pci_regs.h"

--- a/drivers/pci/msi.h
+++ b/drivers/pci/msi.h
@@ -6,12 +6,6 @@
#ifndef MSI_H
#define MSI_H

-#define PCI_MSIX_ENTRY_SIZE	16
...
...
...
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
index 455b9cc..acfc224 100644
--- a/include/linux/pci_regs.h
+++ b/include/linux/pci_regs.h
@@ -307,6 +307,13 @@
#define PCI_MSIX_FLAGS_MASKALL	(1 << 14)
#define PCI_MSIX_FLAGS_BIRMASK	(7 << 0)

+/* MSI-X entry's format */
+#define PCI_MSIX_ENTRY_SIZE	16
....

http://linux-pci.vger.kernel.narkive.com/cZquopIw/patch-1-8-pci-msi-move-msi-x-entry-definition-to-pci-regs-h

See also:
rpm -qp --changelog kernel-devel-2.6.32-642.el6.x86_64.rpm | grep "Move MSI-X entry"
warning: kernel-devel-2.6.32-642.el6.x86_64.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY
- [pci] msi: Move MSI-X entry definition to pci_regs.h (Myron Stowe) [1288629


A proper patch which checks kernel version can fix it.

Regards,
Rami Rosen
Intel Corporation


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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-12 15:30     ` Rosen, Rami
@ 2016-06-13 16:15       ` Martinx - ジェームズ
  2016-06-15 18:59         ` Martinx - ジェームズ
  2016-06-15 15:57       ` [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel Ferruh Yigit
  1 sibling, 1 reply; 14+ messages in thread
From: Martinx - ジェームズ @ 2016-06-13 16:15 UTC (permalink / raw)
  To: Rosen, Rami; +Cc: Yigit, Ferruh, dev

On 12 June 2016 at 11:30, Rosen, Rami <rami.rosen@intel.com> wrote:

> Hi Thiago,
>
> > Any clue?
>
> Sure. This is the reason: in dpdk-16.04/lib/librte_eal/linuxapp/igb_uio we
> have:
> ....
> #ifndef PCI_MSIX_ENTRY_SIZE
> #define PCI_MSIX_ENTRY_SIZE             16
> #define  PCI_MSIX_ENTRY_LOWER_ADDR      0
> #define  PCI_MSIX_ENTRY_UPPER_ADDR      4
> #define  PCI_MSIX_ENTRY_DATA            8
> #define  PCI_MSIX_ENTRY_VECTOR_CTRL     12
> #define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1
> #endif
> ...
>
> The root cause of the problem is due to that in CentOS 6.8,
> PCI_MSIX_ENTRY_SIZE is defined; this
> causes *avoiding* having the PCI_MSIX_ENTRY_CTRL_MASKBIT definition as
> shown above.
>
> The definition of PCI_MSIX_ENTRY_SIZE is due to the following patch, which
> was introduced in CentOS 6.8, which moved PCI_MSIX_ENTRY_SIZE from the
> inner drivers/pci/msi.h header file into include/linux/pci_regs.h,
> The linux/pci_regs.h is included in the pci.h header, which is used by the
> igb_uio.c, which failed in compilation.
>
> "PATCH 1/8] PCI: MSI: Move MSI-X entry definition to pci_regs.h"
>
> --- a/drivers/pci/msi.h
> +++ b/drivers/pci/msi.h
> @@ -6,12 +6,6 @@
> #ifndef MSI_H
> #define MSI_H
>
> -#define PCI_MSIX_ENTRY_SIZE    16
> ...
> ...
> ...
> diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
> index 455b9cc..acfc224 100644
> --- a/include/linux/pci_regs.h
> +++ b/include/linux/pci_regs.h
> @@ -307,6 +307,13 @@
> #define PCI_MSIX_FLAGS_MASKALL  (1 << 14)
> #define PCI_MSIX_FLAGS_BIRMASK  (7 << 0)
>
> +/* MSI-X entry's format */
> +#define PCI_MSIX_ENTRY_SIZE    16
> ....
>
>
> http://linux-pci.vger.kernel.narkive.com/cZquopIw/patch-1-8-pci-msi-move-msi-x-entry-definition-to-pci-regs-h
>
> See also:
> rpm -qp --changelog kernel-devel-2.6.32-642.el6.x86_64.rpm | grep "Move
> MSI-X entry"
> warning: kernel-devel-2.6.32-642.el6.x86_64.rpm: Header V3 RSA/SHA1
> Signature, key ID c105b9de: NOKEY
> - [pci] msi: Move MSI-X entry definition to pci_regs.h (Myron Stowe)
> [1288629
>
>
> A proper patch which checks kernel version can fix it.
>
> Regards,
> Rami Rosen
> Intel Corporation
>
>
Interesting!

Do you have this proper fix? I would like to build and use DPDK on CentOS
6.8...

Thank you for your reply!

Best,
Thiago

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

* [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel
  2016-06-12 15:30     ` Rosen, Rami
  2016-06-13 16:15       ` Martinx - ジェームズ
@ 2016-06-15 15:57       ` Ferruh Yigit
  2016-06-15 15:59         ` Ferruh Yigit
  2016-06-21 14:12         ` Thomas Monjalon
  1 sibling, 2 replies; 14+ messages in thread
From: Ferruh Yigit @ 2016-06-15 15:57 UTC (permalink / raw)
  To: dev; +Cc: Rami Rosen, thiagocmartinsc, Ferruh Yigit

Following compile error observed with CentOS 6.8, which uses kernel
kernel-devel-2.6.32-642.el6.x86_64:

CC eal_thread.o
.../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
In function 'igbuio_msix_mask_irq':
.../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this
function)

Reported-by: Thiago <thiagocmartinsc@gmail.com>
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 lib/librte_eal/linuxapp/igb_uio/compat.h | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/lib/librte_eal/linuxapp/igb_uio/compat.h b/lib/librte_eal/linuxapp/igb_uio/compat.h
index c1d45a6..0d781e4 100644
--- a/lib/librte_eal/linuxapp/igb_uio/compat.h
+++ b/lib/librte_eal/linuxapp/igb_uio/compat.h
@@ -24,6 +24,15 @@
 #define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1
 #endif
 
+/*
+ * for kernels < 2.6.38 and backported patch that moves MSI-X entry definition
+ * to pci_regs.h Those kernels has PCI_MSIX_ENTRY_SIZE defined but not
+ * PCI_MSIX_ENTRY_CTRL_MASKBIT
+ */
+#ifndef PCI_MSIX_ENTRY_CTRL_MASKBIT
+#define PCI_MSIX_ENTRY_CTRL_MASKBIT    1
+#endif
+
 #if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 34) && \
 	(!(defined(RHEL_RELEASE_CODE) && \
 	 RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(5, 9)))
-- 
2.5.5

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

* Re: [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel
  2016-06-15 15:57       ` [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel Ferruh Yigit
@ 2016-06-15 15:59         ` Ferruh Yigit
  2016-06-16 15:45           ` Martinx - ジェームズ
  2016-06-21 14:12         ` Thomas Monjalon
  1 sibling, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2016-06-15 15:59 UTC (permalink / raw)
  To: thiagocmartinsc; +Cc: dev, Rami Rosen

On 6/15/2016 4:57 PM, Ferruh Yigit wrote:
> Following compile error observed with CentOS 6.8, which uses kernel
> kernel-devel-2.6.32-642.el6.x86_64:
> 
> CC eal_thread.o
> .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
> In function 'igbuio_msix_mask_irq':
> .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this
> function)
> 
> Reported-by: Thiago <thiagocmartinsc@gmail.com>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Hi Thiago,

Can you please test this patch?

Thanks,
ferruh

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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-13 16:15       ` Martinx - ジェームズ
@ 2016-06-15 18:59         ` Martinx - ジェームズ
  2016-06-15 20:27           ` Murali Krishna
  2016-06-16 15:31           ` Ferruh Yigit
  0 siblings, 2 replies; 14+ messages in thread
From: Martinx - ジェームズ @ 2016-06-15 18:59 UTC (permalink / raw)
  To: Rosen, Rami; +Cc: Yigit, Ferruh, dev

On 13 June 2016 at 12:15, Martinx - ジェームズ <thiagocmartinsc@gmail.com> wrote:

>
>
> On 12 June 2016 at 11:30, Rosen, Rami <rami.rosen@intel.com> wrote:
>
>> Hi Thiago,
>>
>> > Any clue?
>>
>> Sure. This is the reason: in dpdk-16.04/lib/librte_eal/linuxapp/igb_uio
>> we have:
>> ....
>> #ifndef PCI_MSIX_ENTRY_SIZE
>> #define PCI_MSIX_ENTRY_SIZE             16
>> #define  PCI_MSIX_ENTRY_LOWER_ADDR      0
>> #define  PCI_MSIX_ENTRY_UPPER_ADDR      4
>> #define  PCI_MSIX_ENTRY_DATA            8
>> #define  PCI_MSIX_ENTRY_VECTOR_CTRL     12
>> #define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1
>> #endif
>> ...
>>
>> The root cause of the problem is due to that in CentOS 6.8,
>> PCI_MSIX_ENTRY_SIZE is defined; this
>> causes *avoiding* having the PCI_MSIX_ENTRY_CTRL_MASKBIT definition as
>> shown above.
>>
>> The definition of PCI_MSIX_ENTRY_SIZE is due to the following patch,
>> which was introduced in CentOS 6.8, which moved PCI_MSIX_ENTRY_SIZE from
>> the inner drivers/pci/msi.h header file into include/linux/pci_regs.h,
>> The linux/pci_regs.h is included in the pci.h header, which is used by
>> the igb_uio.c, which failed in compilation.
>>
>> "PATCH 1/8] PCI: MSI: Move MSI-X entry definition to pci_regs.h"
>>
>> --- a/drivers/pci/msi.h
>> +++ b/drivers/pci/msi.h
>> @@ -6,12 +6,6 @@
>> #ifndef MSI_H
>> #define MSI_H
>>
>> -#define PCI_MSIX_ENTRY_SIZE    16
>> ...
>> ...
>> ...
>> diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
>> index 455b9cc..acfc224 100644
>> --- a/include/linux/pci_regs.h
>> +++ b/include/linux/pci_regs.h
>> @@ -307,6 +307,13 @@
>> #define PCI_MSIX_FLAGS_MASKALL  (1 << 14)
>> #define PCI_MSIX_FLAGS_BIRMASK  (7 << 0)
>>
>> +/* MSI-X entry's format */
>> +#define PCI_MSIX_ENTRY_SIZE    16
>> ....
>>
>>
>> http://linux-pci.vger.kernel.narkive.com/cZquopIw/patch-1-8-pci-msi-move-msi-x-entry-definition-to-pci-regs-h
>>
>> See also:
>> rpm -qp --changelog kernel-devel-2.6.32-642.el6.x86_64.rpm | grep "Move
>> MSI-X entry"
>> warning: kernel-devel-2.6.32-642.el6.x86_64.rpm: Header V3 RSA/SHA1
>> Signature, key ID c105b9de: NOKEY
>> - [pci] msi: Move MSI-X entry definition to pci_regs.h (Myron Stowe)
>> [1288629
>>
>>
>> A proper patch which checks kernel version can fix it.
>>
>> Regards,
>> Rami Rosen
>> Intel Corporation
>>
>>
> Interesting!
>
> Do you have this proper fix? I would like to build and use DPDK on CentOS
> 6.8...
>
> Thank you for your reply!
>
> Best,
> Thiago
>

Hey guys,

I tried something different, just for testing, and it also doesn't build.

What I tried was to install the "centos-release-xen" repo, and run "yum
upgrade" in my CentOS 6.8 box, this way, I can receive a new Kernel for it,
which is "3.18.34-20.el6.x86_64", and here is the DPDK build error now:

---
...........
  CC eal_common_dev.o
cc1: warnings being treated as errors
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
In function 'igbuio_pci_probe':
/usr/src/kernels/3.18.34-20.el6.x86_64/include/linux/slab.h:582: error:
inlining failed in call to 'kzalloc.clone.0': --param
max-inline-insns-single limit reached
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:383:
error: called from here
make[8]: ***
[/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o]
Error 1
make[7]: ***
[_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio]
Error 2
make[6]: *** [sub-make] Error 2
make[5]: *** [igb_uio.ko] Error 2
make[4]: *** [igb_uio] Error 2
make[4]: *** Waiting for unfinished jobs....
  CC eal_common_options.o
  CC eal_common_thread.o
  CC eal_common_proc.o
  CC rte_malloc.o
  CC malloc_elem.o
  CC malloc_heap.o
  CC rte_keepalive.o
  CC rte_cpuflags.o
  SYMLINK-FILE include/exec-env/rte_interrupts.h
  SYMLINK-FILE include/exec-env/rte_kni_common.h
  SYMLINK-FILE include/exec-env/rte_dom0_common.h
  LD librte_eal.so.2
  INSTALL-LIB librte_eal.so.2
make[3]: *** [linuxapp] Error 2
make[2]: *** [librte_eal] Error 2
make[1]: *** [lib] Error 2
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.b7GNzi (%build)
---

So, this is not related to "PCI: MSI: Move MSI-X entry definition to
pci_regs.h" anymore...

I'm still looking for a way to build and package the latest DPDK on CentOS
6.8 box.

I appreciate any help...

Thanks!
Thiago

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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-15 18:59         ` Martinx - ジェームズ
@ 2016-06-15 20:27           ` Murali Krishna
  2016-06-16 15:31           ` Ferruh Yigit
  1 sibling, 0 replies; 14+ messages in thread
From: Murali Krishna @ 2016-06-15 20:27 UTC (permalink / raw)
  To: Martinx - ジェームズ, Rosen, Rami
  Cc: Yigit, Ferruh, dev

Hi,

I faced the same problem while building dpdk(1.7.1, 1.8.0, 2.0.0, 2.2.0) on
Rhel6.8 GA kernel. Disabling CONFIG_RTE_EAL_IGB_UIO and CONFIG_RTE_KNI_KMOD
in dpdk-X/config/common_linuxapp resolved this issue.

Br,
Murali

-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Martinx - ?????
Sent: Thursday, June 16, 2016 12:29 AM
To: Rosen, Rami
Cc: Yigit, Ferruh; dev
Subject: Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8

On 13 June 2016 at 12:15, Martinx - ジェームズ <thiagocmartinsc@gmail.com> wrote:

>
>
> On 12 June 2016 at 11:30, Rosen, Rami <rami.rosen@intel.com> wrote:
>
>> Hi Thiago,
>>
>> > Any clue?
>>
>> Sure. This is the reason: in
>> dpdk-16.04/lib/librte_eal/linuxapp/igb_uio
>> we have:
>> ....
>> #ifndef PCI_MSIX_ENTRY_SIZE
>> #define PCI_MSIX_ENTRY_SIZE             16
>> #define  PCI_MSIX_ENTRY_LOWER_ADDR      0
>> #define  PCI_MSIX_ENTRY_UPPER_ADDR      4
>> #define  PCI_MSIX_ENTRY_DATA            8
>> #define  PCI_MSIX_ENTRY_VECTOR_CTRL     12
>> #define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1
>> #endif
>> ...
>>
>> The root cause of the problem is due to that in CentOS 6.8,
>> PCI_MSIX_ENTRY_SIZE is defined; this causes *avoiding* having the
>> PCI_MSIX_ENTRY_CTRL_MASKBIT definition as shown above.
>>
>> The definition of PCI_MSIX_ENTRY_SIZE is due to the following patch,
>> which was introduced in CentOS 6.8, which moved PCI_MSIX_ENTRY_SIZE
>> from the inner drivers/pci/msi.h header file into
>> include/linux/pci_regs.h, The linux/pci_regs.h is included in the
>> pci.h header, which is used by the igb_uio.c, which failed in
>> compilation.
>>
>> "PATCH 1/8] PCI: MSI: Move MSI-X entry definition to pci_regs.h"
>>
>> --- a/drivers/pci/msi.h
>> +++ b/drivers/pci/msi.h
>> @@ -6,12 +6,6 @@
>> #ifndef MSI_H
>> #define MSI_H
>>
>> -#define PCI_MSIX_ENTRY_SIZE    16
>> ...
>> ...
>> ...
>> diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
>> index 455b9cc..acfc224 100644
>> --- a/include/linux/pci_regs.h
>> +++ b/include/linux/pci_regs.h
>> @@ -307,6 +307,13 @@
>> #define PCI_MSIX_FLAGS_MASKALL  (1 << 14) #define
>> PCI_MSIX_FLAGS_BIRMASK  (7 << 0)
>>
>> +/* MSI-X entry's format */
>> +#define PCI_MSIX_ENTRY_SIZE    16
>> ....
>>
>>
>> http://linux-pci.vger.kernel.narkive.com/cZquopIw/patch-1-8-pci-msi-m
>> ove-msi-x-entry-definition-to-pci-regs-h
>>
>> See also:
>> rpm -qp --changelog kernel-devel-2.6.32-642.el6.x86_64.rpm | grep
>> "Move MSI-X entry"
>> warning: kernel-devel-2.6.32-642.el6.x86_64.rpm: Header V3 RSA/SHA1
>> Signature, key ID c105b9de: NOKEY
>> - [pci] msi: Move MSI-X entry definition to pci_regs.h (Myron Stowe)
>> [1288629
>>
>>
>> A proper patch which checks kernel version can fix it.
>>
>> Regards,
>> Rami Rosen
>> Intel Corporation
>>
>>
> Interesting!
>
> Do you have this proper fix? I would like to build and use DPDK on
> CentOS 6.8...
>
> Thank you for your reply!
>
> Best,
> Thiago
>

Hey guys,

I tried something different, just for testing, and it also doesn't build.

What I tried was to install the "centos-release-xen" repo, and run "yum
upgrade" in my CentOS 6.8 box, this way, I can receive a new Kernel for it,
which is "3.18.34-20.el6.x86_64", and here is the DPDK build error now:

---
...........
  CC eal_common_dev.o
cc1: warnings being treated as errors
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
In function 'igbuio_pci_probe':
/usr/src/kernels/3.18.34-20.el6.x86_64/include/linux/slab.h:582: error:
inlining failed in call to 'kzalloc.clone.0': --param
max-inline-insns-single limit reached
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:383:
error: called from here
make[8]: ***
[/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o]
Error 1
make[7]: ***
[_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio]
Error 2
make[6]: *** [sub-make] Error 2
make[5]: *** [igb_uio.ko] Error 2
make[4]: *** [igb_uio] Error 2
make[4]: *** Waiting for unfinished jobs....
  CC eal_common_options.o
  CC eal_common_thread.o
  CC eal_common_proc.o
  CC rte_malloc.o
  CC malloc_elem.o
  CC malloc_heap.o
  CC rte_keepalive.o
  CC rte_cpuflags.o
  SYMLINK-FILE include/exec-env/rte_interrupts.h
  SYMLINK-FILE include/exec-env/rte_kni_common.h
  SYMLINK-FILE include/exec-env/rte_dom0_common.h
  LD librte_eal.so.2
  INSTALL-LIB librte_eal.so.2
make[3]: *** [linuxapp] Error 2
make[2]: *** [librte_eal] Error 2
make[1]: *** [lib] Error 2
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.b7GNzi (%build)
---

So, this is not related to "PCI: MSI: Move MSI-X entry definition to
pci_regs.h" anymore...

I'm still looking for a way to build and package the latest DPDK on CentOS
6.8 box.

I appreciate any help...

Thanks!
Thiago

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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-15 18:59         ` Martinx - ジェームズ
  2016-06-15 20:27           ` Murali Krishna
@ 2016-06-16 15:31           ` Ferruh Yigit
  2016-06-29  2:38             ` Martinx - ジェームズ
  1 sibling, 1 reply; 14+ messages in thread
From: Ferruh Yigit @ 2016-06-16 15:31 UTC (permalink / raw)
  To: Martinx - ジェームズ, Rosen, Rami; +Cc: dev

On 6/15/2016 7:59 PM, Martinx - ジェームズ wrote:
> On 13 June 2016 at 12:15, Martinx - ジェームズ
> <thiagocmartinsc@gmail.com <mailto:thiagocmartinsc@gmail.com>> wrote:
> 
> 
> 
>     On 12 June 2016 at 11:30, Rosen, Rami <rami.rosen@intel.com
>     <mailto:rami.rosen@intel.com>> wrote:
> 
>         Hi Thiago,
> 
>         > Any clue?
> 
>         Sure. This is the reason: in
>         dpdk-16.04/lib/librte_eal/linuxapp/igb_uio we have:
>         ....
>         #ifndef PCI_MSIX_ENTRY_SIZE
>         #define PCI_MSIX_ENTRY_SIZE             16
>         #define  PCI_MSIX_ENTRY_LOWER_ADDR      0
>         #define  PCI_MSIX_ENTRY_UPPER_ADDR      4
>         #define  PCI_MSIX_ENTRY_DATA            8
>         #define  PCI_MSIX_ENTRY_VECTOR_CTRL     12
>         #define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1
>         #endif
>         ...
> 
>         The root cause of the problem is due to that in CentOS 6.8,
>         PCI_MSIX_ENTRY_SIZE is defined; this
>         causes *avoiding* having the PCI_MSIX_ENTRY_CTRL_MASKBIT
>         definition as shown above.
> 
>         The definition of PCI_MSIX_ENTRY_SIZE is due to the following
>         patch, which was introduced in CentOS 6.8, which moved
>         PCI_MSIX_ENTRY_SIZE from the inner drivers/pci/msi.h header file
>         into include/linux/pci_regs.h,
>         The linux/pci_regs.h is included in the pci.h header, which is
>         used by the igb_uio.c, which failed in compilation.
> 
>         "PATCH 1/8] PCI: MSI: Move MSI-X entry definition to pci_regs.h"
> 
>         --- a/drivers/pci/msi.h
>         +++ b/drivers/pci/msi.h
>         @@ -6,12 +6,6 @@
>         #ifndef MSI_H
>         #define MSI_H
> 
>         -#define PCI_MSIX_ENTRY_SIZE    16
>         ...
>         ...
>         ...
>         diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
>         index 455b9cc..acfc224 100644
>         --- a/include/linux/pci_regs.h
>         +++ b/include/linux/pci_regs.h
>         @@ -307,6 +307,13 @@
>         #define PCI_MSIX_FLAGS_MASKALL  (1 << 14)
>         #define PCI_MSIX_FLAGS_BIRMASK  (7 << 0)
> 
>         +/* MSI-X entry's format */
>         +#define PCI_MSIX_ENTRY_SIZE    16
>         ....
> 
>         http://linux-pci.vger.kernel.narkive.com/cZquopIw/patch-1-8-pci-msi-move-msi-x-entry-definition-to-pci-regs-h
> 
>         See also:
>         rpm -qp --changelog kernel-devel-2.6.32-642.el6.x86_64.rpm |
>         grep "Move MSI-X entry"
>         warning: kernel-devel-2.6.32-642.el6.x86_64.rpm: Header V3
>         RSA/SHA1 Signature, key ID c105b9de: NOKEY
>         - [pci] msi: Move MSI-X entry definition to pci_regs.h (Myron
>         Stowe) [1288629
> 
> 
>         A proper patch which checks kernel version can fix it.
> 
>         Regards,
>         Rami Rosen
>         Intel Corporation
> 
> 
>     Interesting!
> 
>     Do you have this proper fix? I would like to build and use DPDK on
>     CentOS 6.8...
> 
>     Thank you for your reply!
> 
>     Best,
>     Thiago
> 
> 
> Hey guys,
> 
> I tried something different, just for testing, and it also doesn't build.
> 
> What I tried was to install the "centos-release-xen" repo, and run "yum
> upgrade" in my CentOS 6.8 box, this way, I can receive a new Kernel for
> it, which is "3.18.34-20.el6.x86_64", and here is the DPDK build error now:
> 
> ---
> ...........
>   CC eal_common_dev.o
> cc1: warnings being treated as errors
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
> In function 'igbuio_pci_probe':
> /usr/src/kernels/3.18.34-20.el6.x86_64/include/linux/slab.h:582: error:
> inlining failed in call to 'kzalloc.clone.0': --param
> max-inline-insns-single limit reached
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:383:
> error: called from here
> make[8]: ***
> [/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o]
> Error 1
> make[7]: ***
> [_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio]
> Error 2
<...>

I did able to compile dpdk16.04 with 3.18.34-20.el6.x86_64, is the
problem can be related to gcc version? For me both gcc 5.3.1 and 4.9.3
worked fine.

Or for "max-inline-insns-single limit reached" issue you can try
increasing the gcc limit: -finline-limit=n

> I'm still looking for a way to build and package the latest DPDK on
> CentOS 6.8 box.
> 
> I appreciate any help...
> 
> Thanks!
> Thiago

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

* Re: [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel
  2016-06-15 15:59         ` Ferruh Yigit
@ 2016-06-16 15:45           ` Martinx - ジェームズ
  2016-06-17  9:15             ` Ferruh Yigit
  0 siblings, 1 reply; 14+ messages in thread
From: Martinx - ジェームズ @ 2016-06-16 15:45 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, Rami Rosen

On 15 June 2016 at 11:59, Ferruh Yigit <ferruh.yigit@intel.com> wrote:

> On 6/15/2016 4:57 PM, Ferruh Yigit wrote:
> > Following compile error observed with CentOS 6.8, which uses kernel
> > kernel-devel-2.6.32-642.el6.x86_64:
> >
> > CC eal_thread.o
> > .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
> > In function 'igbuio_msix_mask_irq':
> > .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> > error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this
> > function)
> >
> > Reported-by: Thiago <thiagocmartinsc@gmail.com>
> > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
>
> Hi Thiago,
>
> Can you please test this patch?
>
> Thanks,
> ferruh
>
>
Hi Ferruh,

That patch applied and worked (kind of):

---
[root@centos6-1 dpdk-16.04]# patch -p1 < ../dpdk-centos6.patch
patching file lib/librte_eal/linuxapp/igb_uio/compat.h
Hunk #1 succeeded at 24 with fuzz 2.
---

 It passed that broken step, however, it is failing in a different part of
build process now, as follows:

---
[root@centos6-1 ~]# time rpmbuild --ba /root/rpmbuild/SPECS/dpdk.spec
.......
.......
  LD librte_eal.so.2
  INSTALL-LIB librte_eal.so.2
== Build lib/librte_eal/linuxapp/kni
  LD
 /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/built-in.o
  CC [M]
 /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_main.o
  CC [M]
 /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_api.o
In file included from
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_osdep.h:41,
                 from
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_type.h:31,
                 from
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_api.h:31,
                 from
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_api.c:28:
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h:
In function '__kc_vlan_get_protocol':
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h:2836:
error: implicit declaration of function 'vlan_tx_tag_present'
make[8]: ***
[/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_api.o]
Error 1
make[8]: *** Waiting for unfinished jobs....
In file included from
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_osdep.h:41,
                 from
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_type.h:31,
                 from
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_dcb.h:32,
                 from
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe.h:52,
                 from
/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_main.c:56:
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h:
In function '__kc_vlan_get_protocol':
/root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h:2836:
error: implicit declaration of function 'vlan_tx_tag_present'
make[8]: ***
[/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_main.o]
Error 1
make[7]: ***
[_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni]
Error 2
make[6]: *** [sub-make] Error 2
make[5]: *** [rte_kni.ko] Error 2
make[4]: *** [kni] Error 2
make[3]: *** [linuxapp] Error 2
make[2]: *** [librte_eal] Error 2
make[1]: *** [lib] Error 2
make: *** [all] Error 2
error: Bad exit status from /var/tmp/rpm-tmp.Naoj9c (%build)
---

Might be a totally different problem now, I don't know...   :-)

Best,
Thiago

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

* Re: [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel
  2016-06-16 15:45           ` Martinx - ジェームズ
@ 2016-06-17  9:15             ` Ferruh Yigit
  0 siblings, 0 replies; 14+ messages in thread
From: Ferruh Yigit @ 2016-06-17  9:15 UTC (permalink / raw)
  To: Martinx - ジェームズ; +Cc: dev, Rami Rosen

On 6/16/2016 4:45 PM, Martinx - ジェームズ wrote:
> On 15 June 2016 at 11:59, Ferruh Yigit <ferruh.yigit@intel.com
> <mailto:ferruh.yigit@intel.com>> wrote:
> 
>     On 6/15/2016 4:57 PM, Ferruh Yigit wrote:
>     > Following compile error observed with CentOS 6.8, which uses kernel
>     > kernel-devel-2.6.32-642.el6.x86_64:
>     >
>     > CC eal_thread.o
>     > .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
>     > In function 'igbuio_msix_mask_irq':
>     > .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
>     > error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this
>     > function)
>     >
>     > Reported-by: Thiago <thiagocmartinsc@gmail.com <mailto:thiagocmartinsc@gmail.com>>
>     > Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com <mailto:ferruh.yigit@intel.com>>
> 
>     Hi Thiago,
> 
>     Can you please test this patch?
> 
>     Thanks,
>     ferruh
> 
> 
> Hi Ferruh,
> 
> That patch applied and worked (kind of):
> 
> ---
> [root@centos6-1 dpdk-16.04]# patch -p1 < ../dpdk-centos6.patch 
> patching file lib/librte_eal/linuxapp/igb_uio/compat.h
> Hunk #1 succeeded at 24 with fuzz 2.
> ---
> 
>  It passed that broken step, however, it is failing in a different part
> of build process now, as follows:
> 
> ---
> [root@centos6-1 ~]# time rpmbuild --ba /root/rpmbuild/SPECS/dpdk.spec 
> .......
> .......
>   LD librte_eal.so.2
>   INSTALL-LIB librte_eal.so.2
> == Build lib/librte_eal/linuxapp/kni
>   LD    
>  /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/built-in.o
>   CC [M]
>  /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_main.o
>   CC [M]
>  /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_api.o
> In file included from
> /root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_osdep.h:41,
>                  from
> /root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_type.h:31,
>                  from
> /root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_api.h:31,
>                  from
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/kni/ixgbe_api.c:28:
> /root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h:
> In function '__kc_vlan_get_protocol':
> /root/rpmbuild/BUILD/dpdk-16.04/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/kcompat.h:2836:
> error: implicit declaration of function 'vlan_tx_tag_present'

Because skb_vlan_tag_present renamed in Linux 3.19 (commit: df8a39d) and
this commit backported in this kernel.
This error can be also fixed, but another compile error pops up.

This is hard to keep up, because kernel version is old (2.6.32) but
backported latest commits. We are not able to rely on kernel version
checks or define checks.

If you don't need KNI you can either:
1- Disable it from configuration file
2- Compile kernel modules against newer kernel version using
RTE_KERNELDIR, like: "make RTE_KERNELDIR=/tmp/latest_linux_version"

As far as I can see you are using spec file to compile, is this spec
file distributed with DPDK? If so, perhaps you can share your updates to
spec file?


> 
> Might be a totally different problem now, I don't know...   :-)
> 
> Best,
> Thiago

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

* Re: [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel
  2016-06-15 15:57       ` [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel Ferruh Yigit
  2016-06-15 15:59         ` Ferruh Yigit
@ 2016-06-21 14:12         ` Thomas Monjalon
  1 sibling, 0 replies; 14+ messages in thread
From: Thomas Monjalon @ 2016-06-21 14:12 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: dev, Rami Rosen, thiagocmartinsc

2016-06-15 16:57, Ferruh Yigit:
> Following compile error observed with CentOS 6.8, which uses kernel
> kernel-devel-2.6.32-642.el6.x86_64:
> 
> CC eal_thread.o
> .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
> In function 'igbuio_msix_mask_irq':
> .../build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:157:
> error: 'PCI_MSIX_ENTRY_CTRL_MASKBIT' undeclared (first use in this
> function)
> 
> Reported-by: Thiago <thiagocmartinsc@gmail.com>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>

Applied, thanks

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

* Re: [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8
  2016-06-16 15:31           ` Ferruh Yigit
@ 2016-06-29  2:38             ` Martinx - ジェームズ
  0 siblings, 0 replies; 14+ messages in thread
From: Martinx - ジェームズ @ 2016-06-29  2:38 UTC (permalink / raw)
  To: Ferruh Yigit; +Cc: Rosen, Rami, dev

On 16 June 2016 at 11:31, Ferruh Yigit <ferruh.yigit@intel.com> wrote:

> On 6/15/2016 7:59 PM, Martinx - ジェームズ wrote:
> > On 13 June 2016 at 12:15, Martinx - ジェームズ
> > <thiagocmartinsc@gmail.com <mailto:thiagocmartinsc@gmail.com>> wrote:
> >
> >
> >
> >     On 12 June 2016 at 11:30, Rosen, Rami <rami.rosen@intel.com
> >     <mailto:rami.rosen@intel.com>> wrote:
> >
> >         Hi Thiago,
> >
> >         > Any clue?
> >
> >         Sure. This is the reason: in
> >         dpdk-16.04/lib/librte_eal/linuxapp/igb_uio we have:
> >         ....
> >         #ifndef PCI_MSIX_ENTRY_SIZE
> >         #define PCI_MSIX_ENTRY_SIZE             16
> >         #define  PCI_MSIX_ENTRY_LOWER_ADDR      0
> >         #define  PCI_MSIX_ENTRY_UPPER_ADDR      4
> >         #define  PCI_MSIX_ENTRY_DATA            8
> >         #define  PCI_MSIX_ENTRY_VECTOR_CTRL     12
> >         #define   PCI_MSIX_ENTRY_CTRL_MASKBIT   1
> >         #endif
> >         ...
> >
> >         The root cause of the problem is due to that in CentOS 6.8,
> >         PCI_MSIX_ENTRY_SIZE is defined; this
> >         causes *avoiding* having the PCI_MSIX_ENTRY_CTRL_MASKBIT
> >         definition as shown above.
> >
> >         The definition of PCI_MSIX_ENTRY_SIZE is due to the following
> >         patch, which was introduced in CentOS 6.8, which moved
> >         PCI_MSIX_ENTRY_SIZE from the inner drivers/pci/msi.h header file
> >         into include/linux/pci_regs.h,
> >         The linux/pci_regs.h is included in the pci.h header, which is
> >         used by the igb_uio.c, which failed in compilation.
> >
> >         "PATCH 1/8] PCI: MSI: Move MSI-X entry definition to pci_regs.h"
> >
> >         --- a/drivers/pci/msi.h
> >         +++ b/drivers/pci/msi.h
> >         @@ -6,12 +6,6 @@
> >         #ifndef MSI_H
> >         #define MSI_H
> >
> >         -#define PCI_MSIX_ENTRY_SIZE    16
> >         ...
> >         ...
> >         ...
> >         diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h
> >         index 455b9cc..acfc224 100644
> >         --- a/include/linux/pci_regs.h
> >         +++ b/include/linux/pci_regs.h
> >         @@ -307,6 +307,13 @@
> >         #define PCI_MSIX_FLAGS_MASKALL  (1 << 14)
> >         #define PCI_MSIX_FLAGS_BIRMASK  (7 << 0)
> >
> >         +/* MSI-X entry's format */
> >         +#define PCI_MSIX_ENTRY_SIZE    16
> >         ....
> >
> >
> http://linux-pci.vger.kernel.narkive.com/cZquopIw/patch-1-8-pci-msi-move-msi-x-entry-definition-to-pci-regs-h
> >
> >         See also:
> >         rpm -qp --changelog kernel-devel-2.6.32-642.el6.x86_64.rpm |
> >         grep "Move MSI-X entry"
> >         warning: kernel-devel-2.6.32-642.el6.x86_64.rpm: Header V3
> >         RSA/SHA1 Signature, key ID c105b9de: NOKEY
> >         - [pci] msi: Move MSI-X entry definition to pci_regs.h (Myron
> >         Stowe) [1288629
> >
> >
> >         A proper patch which checks kernel version can fix it.
> >
> >         Regards,
> >         Rami Rosen
> >         Intel Corporation
> >
> >
> >     Interesting!
> >
> >     Do you have this proper fix? I would like to build and use DPDK on
> >     CentOS 6.8...
> >
> >     Thank you for your reply!
> >
> >     Best,
> >     Thiago
> >
> >
> > Hey guys,
> >
> > I tried something different, just for testing, and it also doesn't build.
> >
> > What I tried was to install the "centos-release-xen" repo, and run "yum
> > upgrade" in my CentOS 6.8 box, this way, I can receive a new Kernel for
> > it, which is "3.18.34-20.el6.x86_64", and here is the DPDK build error
> now:
> >
> > ---
> > ...........
> >   CC eal_common_dev.o
> > cc1: warnings being treated as errors
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:
> > In function 'igbuio_pci_probe':
> > /usr/src/kernels/3.18.34-20.el6.x86_64/include/linux/slab.h:582: error:
> > inlining failed in call to 'kzalloc.clone.0': --param
> > max-inline-insns-single limit reached
> >
> /root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.c:383:
> > error: called from here
> > make[8]: ***
> >
> [/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio/igb_uio.o]
> > Error 1
> > make[7]: ***
> >
> [_module_/root/rpmbuild/BUILD/dpdk-16.04/x86_64-default-linuxapp-gcc/build/lib/librte_eal/linuxapp/igb_uio]
> > Error 2
> <...>
>
> I did able to compile dpdk16.04 with 3.18.34-20.el6.x86_64, is the
> problem can be related to gcc version? For me both gcc 5.3.1 and 4.9.3
> worked fine.
>
> Or for "max-inline-insns-single limit reached" issue you can try
> increasing the gcc limit: -finline-limit=n
>
>
Hey Ferruh,

I'm facing this "max-inline-insns-single limit reached" problem now (while
trying to compile DPDK-16.04 on "3.18.34-20.el6.x86_64".

So, as you suggested, I changed the limit from 100 to 400, here:

dpdk-16.04/lib/librte_eal/linuxapp/igb_uio/Makefile

...and it worked!

The CentOS 6.8 "centos-xen-release" YUM/RPM package brings Linux 3.18 to
it, a new life for an old O.S... That's good...   :-)

Thanks!
Thiago

> I'm still looking for a way to build and package the latest DPDK on
> > CentOS 6.8 box.
> >
> > I appreciate any help...
> >
> > Thanks!
> > Thiago
>
>

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

end of thread, other threads:[~2016-06-29  2:39 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-01 20:07 [dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8 Martinx - ジェームズ
2016-06-03 10:45 ` Ferruh Yigit
2016-06-03 15:17   ` Martinx - ジェームズ
2016-06-12 15:30     ` Rosen, Rami
2016-06-13 16:15       ` Martinx - ジェームズ
2016-06-15 18:59         ` Martinx - ジェームズ
2016-06-15 20:27           ` Murali Krishna
2016-06-16 15:31           ` Ferruh Yigit
2016-06-29  2:38             ` Martinx - ジェームズ
2016-06-15 15:57       ` [dpdk-dev] [PATCH] igb_uio: fix build with backported kernel Ferruh Yigit
2016-06-15 15:59         ` Ferruh Yigit
2016-06-16 15:45           ` Martinx - ジェームズ
2016-06-17  9:15             ` Ferruh Yigit
2016-06-21 14:12         ` Thomas Monjalon

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