On 16 June 2016 at 11:31, Ferruh Yigit <ferruh.yigit at intel.com> wrote:
> On 6/15/2016 7:59 PM, Martinx - ????? wrote: > > On 13 June 2016 at 12:15, Martinx - ????? > > <thiagocmartinsc at gmail.com <mailto:thiagocmartinsc at gmail.com>> wrote: > > > > > > > > On 12 June 2016 at 11:30, Rosen, Rami <rami.rosen at intel.com > > <mailto: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 > <...> > > 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 > >