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

Reply via email to