[dpdk-dev] Can't build DPDK-16.04 on CentOS 6.8

Martinx - ジェームズ thiagocmartinsc at gmail.com
Wed Jun 15 20:59:05 CEST 2016


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

>
>
> On 12 June 2016 at 11:30, Rosen, Rami <rami.rosen at 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


More information about the dev mailing list