14 Commits

Author SHA1 Message Date
Ferruh Yigit
c96bbbd010 igb_uio: fix build on Linux 5.3 for fall through
build error:
kernel/linux/igb_uio/igb_uio.c:
   In function ‘igbuio_pci_enable_interrupts’:
   kernel/linux/igb_uio/igb_uio.c:230:6:
   error: this statement may fall through
   [-Werror=implicit-fallthrough=]
  230 |   if (pci_alloc_irq_vectors(udev->pdev, 1, 1, ....
kernel/linux/igb_uio/igb_uio.c:240:2: note: here
  240 |  case RTE_INTR_MODE_MSI:
      |  ^~~~

The build error is caused by Linux kernel commit in 5.3 that enables the
"-Wimplicit-fallthrough=3" gcc flag.
Commit a035d552a93b ("Makefile: Globally enable fall-through warning")

To fix the error, either a gcc attribute can be provided [1] or a code
comment with some defined syntax need to be provided [2], since there is
already comments, updated them slightly to match the required syntax to
fix the build error.

[1]
"__attribute__ ((fallthrough));"

[2]
[ \t.!]*([Ee]lse,? |[Ii]ntentional(ly)? )?
fall(s | |-)?thr(ough|u)[ \t.!]*(-[^\n\r]*)?

Cc: stable@dpdk.org

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
2019-07-29 22:18:57 +02:00
Igor Ryzhov
317832f97c kernel/linux: fix modules install path
Currently kernel modules are installed into /usr/src instead of
/lib/modules when meson build system is used. This patch fixes that.

Cc: stable@dpdk.org

Signed-off-by: Igor Ryzhov <iryzhov@nfware.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2019-06-27 17:43:59 +02:00
Jeff Guo
70efa41164 igb_uio: fix unexpected removal for hot-unplug
When a device is hot-unplugged, pci_remove will be invoked unexpectedly
before pci_release, it will caused kernel hung issue which will throw the
error info of "Trying to free already-free IRQ XXX". And on the other hand,
if pci_remove before pci_release, the interrupt will not got chance to be
disabled. So this patch aim to fix this issue by adding pci_release call
in pci_remove, it will gurranty that all pci clean up will be done before
pci removal.

Signed-off-by: Jeff Guo <jia.guo@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2018-10-25 02:11:22 +02:00
Stephen Hemminger
ab856f2947 igb_uio: fix refcount if open returns error
This fixes the problem of reference count leak if
igbuio_pci_enable_interrupts fails.

Also, replace mutex and integer with a kernel atomic counter.
This is standard pattern for kernel devices.

Fixes: 19685d5aa79c ("igb_uio: allow multi-process access")
Cc: stable@dpdk.org

Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2018-10-11 13:47:19 +02:00
Luca Boccassi
e0974f31c6 igb_uio: install module when building with meson
Install in $kerneldir/../extra/dpdk. Usually $kerneldir should something
like: /lib/modules/$kver/build, so this directory will match the default
one used by legacy makefiles.

Fixes: a52f4574f798 ("igb_uio: build with meson")
Cc: stable@dpdk.org

Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2018-09-17 12:18:30 +02:00
David Marchand
e533e9ef06 igb_uio: fix build with lock down checks
Caught on ubuntu-16.04 with hwe kernel for aarch64:

$ uname -a
Linux ubuntu1604arm64es 4.13.0-43-generic #48~16.04.1-Ubuntu SMP Thu May
17 13:08:01 UTC 2018 aarch64 aarch64 aarch64 GNU/Linux

== Build kernel/linux/igb_uio
  CC [M] .../kernel/linux/igb_uio/igb_uio.o
In file included from .../kernel/linux/igb_uio/igb_uio.c:20:0:
.../igb_uio/compat.h: In function ‘igbuio_kernel_is_locked_down’:
.../igb_uio/compat.h:146:7:
error: "CONFIG_EFI_SECURE_BOOT_LOCK_DOWN" is not defined [-Werror=undef]
 #elif CONFIG_EFI_SECURE_BOOT_LOCK_DOWN
       ^
cc1: all warnings being treated as errors

Fixes: d67014c3d38b ("igb_uio: fail and log if kernel lock down is enabled")

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2018-07-11 18:49:21 +02:00
Rafal Kozik
eeffc9ef70 igb_uio: add write combining option
Write combining (WC) increases NIC performance by making better
utilization of PCI bus, but cannot be use by all PMD.

To get internal_addr memory need to be mapped. But as memory could not be
mapped twice: with and without WC it should be skipped for WC. [1]

To do not spoil other drivers that potentially could use internal_addr,
parameter wc_activate adds possibility to skip it for those PMDs,
that do not use it.

[1] https://www.kernel.org/doc/ols/2008/ols2008v2-pages-135-144.pdf
	section 5.3 and 5.4

Signed-off-by: Rafal Kozik <rk@semihalf.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2018-06-30 00:12:58 +02:00
Ferruh Yigit
d67014c3d3 igb_uio: fail and log if kernel lock down is enabled
When EFI secure boot is enabled, it is possible to lock down kernel and
prevent accessing device BARs and this makes igb_uio unusable.

Lock down patches are not part of the vanilla kernel but they are
applied and used by some distros already [1].

It is not possible to fix this issue, but intention of this patch is to
detect and log if kernel lock down enabled and don't insert the module
for that case.

The challenge is since this feature enabled by distros, they have
different config options and APIs for it. This patch is done based on
Fedora and Ubuntu kernel source, may needs to add more distro specific
support.

[1]
kernel.ubuntu.com/git/ubuntu/ubuntu-artful.git/commit/?id=99f9ef18d5b6
And a few more patches too.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
2018-06-27 17:02:54 +02:00
Hemant Agrawal
7aa838bc4c kernel: add missing SPDX license identifiers
Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
2018-05-25 10:30:44 +02:00
Bruce Richardson
89200580ef kernel: fix cross-build of Linux modules with meson
When cross-compiling, if no kernel_dir was specified, then the kernel
modules were still being compiled for the build machine. Fix this by
only building modules on cross-compile when we have a kernel_dir value
set. Print out a message indicating why we are skipping kernel
compilation, and in case that the headers for kernel compile are not
found, print a warning instead of erroring out.

Fixes: a52f4574f798 ("igb_uio: build with meson")

Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
2018-05-08 22:21:38 +02:00
Luca Boccassi
816d967717 igb_uio: pass MODULE_CFLAGS in Kbuild
With the legacy build system MODULE_CFLAGS can be set to pass compiler
flags specific for the kernel modules builds.
This is used currently by Ubuntu and Debian.
Set ccflags-y in the Kbuild to achieve the same result with Meson, and
to keep backward compatbility with older scripts.

Fixes regression in Ubuntu/Debian when the Kbuild is included in the
DKMS source package, as DKMS will pick it up silently by default if
present, causing the MODULE_CFLAGS to be ignored.

Fixes: a52f4574f798 ("igb_uio: build with meson")
Cc: stable@dpdk.org

Signed-off-by: Luca Boccassi <bluca@debian.org>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2018-05-01 16:46:22 +02:00
Scott Branden
08efcf533f igb_uio: fix build on Linux < 3.16
Starting from Linux v3.16 pci_is_bridge() is in linux/pci.h,
 in previous versions it is in drivers/pci/pci.h which is private header.

Fix build error when calling pci_is_bridge by not calling/supporting
pci_is_bridge with kernel versions before 3.16.

Fixes: 6f0841b7701b ("igb_uio: bind error if PCIe bridge")

Reported-by: Ferruh Yigit <ferruh.yigit@intel.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2018-04-20 11:10:55 +02:00
Darren Edamura
6f0841b770 igb_uio: bind error if PCIe bridge
Probe function should exit immediately if pcie bridge detected

Signed-off-by: Darren Edamura <darren.edamura@broadcom.com>
Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
Signed-off-by: Scott Branden <scott.branden@broadcom.com>
Signed-off-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
Acked-by: Ferruh Yigit <ferruh.yigit@intel.com>
2018-04-11 23:39:46 +02:00
Hemant Agrawal
acaa9ee991 move kernel modules directories
This patch moves the kernel modules code from EAL to a common place.
 - Separate the kernel module code from user space code.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
Tested-by: Bruce Richardson <bruce.richardson@intel.com>
2018-03-21 23:04:21 +01:00