[v4] kernel/linux: remove igb_uio
Checks
Commit Message
As decided in the Technical Board in November 2019,
the kernel module igb_uio is moved to the dpdk-kmods repository
in the /linux/igb_uio/ directory.
Minutes of Technical Board meeting:
https://mails.dpdk.org/archives/dev/2019-November/151763.html
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Stephen Hemminger <stephen@networkplumber.org>
---
v4: Cc more maintainers
v3: update more docs and provide a link to the new repo
v2: update few docs (including release notes)
---
MAINTAINERS | 1 -
doc/guides/bbdevs/fpga_5gnr_fec.rst | 3 +-
doc/guides/bbdevs/fpga_lte_fec.rst | 3 +-
doc/guides/cryptodevs/ccp.rst | 3 +-
doc/guides/cryptodevs/qat.rst | 3 +-
doc/guides/howto/lm_bond_virtio_sriov.rst | 2 +-
doc/guides/howto/lm_virtio_vhost_user.rst | 2 +-
doc/guides/howto/openwrt.rst | 5 -
doc/guides/linux_gsg/enable_func.rst | 3 +-
doc/guides/linux_gsg/linux_drivers.rst | 23 +-
doc/guides/nics/build_and_test.rst | 2 +-
doc/guides/nics/ena.rst | 4 +-
doc/guides/rel_notes/deprecation.rst | 7 -
doc/guides/rel_notes/release_20_11.rst | 4 +-
doc/guides/sample_app_ug/multi_process.rst | 2 -
drivers/bus/pci/bsd/pci.c | 2 +-
kernel/linux/igb_uio/Kbuild | 2 -
kernel/linux/igb_uio/compat.h | 154 -----
kernel/linux/igb_uio/igb_uio.c | 660 ---------------------
kernel/linux/igb_uio/meson.build | 20 -
kernel/linux/meson.build | 2 +-
21 files changed, 21 insertions(+), 886 deletions(-)
delete mode 100644 kernel/linux/igb_uio/Kbuild
delete mode 100644 kernel/linux/igb_uio/compat.h
delete mode 100644 kernel/linux/igb_uio/igb_uio.c
delete mode 100644 kernel/linux/igb_uio/meson.build
Comments
On 10/5/20 12:42 PM, Thomas Monjalon wrote:
> As decided in the Technical Board in November 2019,
> the kernel module igb_uio is moved to the dpdk-kmods repository
> in the /linux/igb_uio/ directory.
>
> Minutes of Technical Board meeting:
> https://mails.dpdk.org/archives/dev/2019-November/151763.html
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
On Mon, Oct 5, 2020 at 3:45 PM Andrew Rybchenko
<arybchenko@solarflare.com> wrote:
>
> On 10/5/20 12:42 PM, Thomas Monjalon wrote:
> > As decided in the Technical Board in November 2019,
> > the kernel module igb_uio is moved to the dpdk-kmods repository
> > in the /linux/igb_uio/ directory.
> >
> > Minutes of Technical Board meeting:
> > https://mails.dpdk.org/archives/dev/2019-November/151763.html
> >
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> > Acked-by: Stephen Hemminger <stephen@networkplumber.org>
>
> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
>
On 10/5/2020 10:42 AM, Thomas Monjalon wrote:
> As decided in the Technical Board in November 2019,
> the kernel module igb_uio is moved to the dpdk-kmods repository
> in the /linux/igb_uio/ directory.
>
> Minutes of Technical Board meeting:
> https://mails.dpdk.org/archives/dev/2019-November/151763.html
>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
> v4: Cc more maintainers
> v3: update more docs and provide a link to the new repo
> v2: update few docs (including release notes)
> ---
> MAINTAINERS | 1 -
> doc/guides/bbdevs/fpga_5gnr_fec.rst | 3 +-
> doc/guides/bbdevs/fpga_lte_fec.rst | 3 +-
> doc/guides/cryptodevs/ccp.rst | 3 +-
> doc/guides/cryptodevs/qat.rst | 3 +-
> doc/guides/howto/lm_bond_virtio_sriov.rst | 2 +-
> doc/guides/howto/lm_virtio_vhost_user.rst | 2 +-
> doc/guides/howto/openwrt.rst | 5 -
> doc/guides/linux_gsg/enable_func.rst | 3 +-
> doc/guides/linux_gsg/linux_drivers.rst | 23 +-
> doc/guides/nics/build_and_test.rst | 2 +-
> doc/guides/nics/ena.rst | 4 +-
> doc/guides/rel_notes/deprecation.rst | 7 -
> doc/guides/rel_notes/release_20_11.rst | 4 +-
> doc/guides/sample_app_ug/multi_process.rst | 2 -
> drivers/bus/pci/bsd/pci.c | 2 +-
> kernel/linux/igb_uio/Kbuild | 2 -
> kernel/linux/igb_uio/compat.h | 154 -----
> kernel/linux/igb_uio/igb_uio.c | 660 ---------------------
> kernel/linux/igb_uio/meson.build | 20 -
> kernel/linux/meson.build | 2 +-
> 21 files changed, 21 insertions(+), 886 deletions(-)
> delete mode 100644 kernel/linux/igb_uio/Kbuild
> delete mode 100644 kernel/linux/igb_uio/compat.h
> delete mode 100644 kernel/linux/igb_uio/igb_uio.c
> delete mode 100644 kernel/linux/igb_uio/meson.build
>
Patch doesn't apply cleanly, not sure why, CI seems having same problem:
http://mails.dpdk.org/archives/test-report/2020-October/156378.html
<...>
> index 7789c572bb..080b44955a 100644
> --- a/doc/guides/linux_gsg/linux_drivers.rst
> +++ b/doc/guides/linux_gsg/linux_drivers.rst
> @@ -27,33 +27,20 @@ can provide the uio capability. This module can be loaded using the command:
>
> ``uio_pci_generic`` module doesn't support the creation of virtual functions.
>
> -As an alternative to the ``uio_pci_generic``, the DPDK also includes the igb_uio
> -module which can be found in the kernel/linux subdirectory referred to above. It can
> -be loaded as shown below:
> +As an alternative to the ``uio_pci_generic``, there is the ``igb_uio`` module
> +which can be found in the repository `dpdk-kmods <http://git.dpdk.org/dpdk-kmods>`_.
> +It can be loaded as shown below:
>
> .. code-block:: console
>
> sudo modprobe uio
> - sudo insmod <build_dir>/kernel/linux/igb_uio/igb_uio.ko
> -
> -.. note::
> -
> - Building DPDK Linux kernel modules is disabled by default starting from DPDK 20.02.
> - To enable them again, the config option "enable_kmods" needs to be set
> - in the meson build configuration.
> - See :ref:`adjusting_build_options` for details on how to set/clear build options.
> - It is planned to move ``igb_uio`` module to a different git repository.
> -
> -.. note::
> -
> - For some devices which lack support for legacy interrupts, e.g. virtual function
> - (VF) devices, the ``igb_uio`` module may be needed in place of ``uio_pci_generic``.
> + sudo insmod igb_uio.ko
>
> .. note::
>
> If UEFI secure boot is enabled, the Linux kernel may disallow the use of
> UIO on the system. Therefore, devices for use by DPDK should be bound to the
> - ``vfio-pci`` kernel module rather than ``igb_uio`` or ``uio_pci_generic``.
> + ``vfio-pci`` kernel module rather than any UIO-based module.
> For more details see :ref:`linux_gsg_binding_kernel` below.
Should we change the order of the kernel drivers, currently first section is
"UIO" and second section is "VFIO". Since we encoruage vfio and move igb_uio out
of the repo, should we list the "VfIO" first?
<...>
> index 4e61431c6c..243bd940a4 100644
> --- a/doc/guides/rel_notes/release_20_11.rst
> +++ b/doc/guides/rel_notes/release_20_11.rst
> @@ -122,9 +122,11 @@ Removed Items
>
> * vhost: Dequeue zero-copy support has been removed.
>
> +* kernel: The module ``igb_uio`` has been moved to the git repository
> +``dpdk-kmods`` in a new directory ``linux/igb_uio``.
> +
Doc build giving warning on this:
WARNING: Bullet list ends without a blank line; unexpected unindent.
Except from above minor comments looks good to me,
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
06/10/2020 12:16, Ferruh Yigit:
> On 10/5/2020 10:42 AM, Thomas Monjalon wrote:
> > As decided in the Technical Board in November 2019,
> > the kernel module igb_uio is moved to the dpdk-kmods repository
> > in the /linux/igb_uio/ directory.
[...]
> Patch doesn't apply cleanly, not sure why, CI seems having same problem:
> http://mails.dpdk.org/archives/test-report/2020-October/156378.html
That's because I used --irreversible-delete to minimize the size of the patch.
[...]
> > If UEFI secure boot is enabled, the Linux kernel may disallow the use of
> > UIO on the system. Therefore, devices for use by DPDK should be bound to the
> > - ``vfio-pci`` kernel module rather than ``igb_uio`` or ``uio_pci_generic``.
> > + ``vfio-pci`` kernel module rather than any UIO-based module.
> > For more details see :ref:`linux_gsg_binding_kernel` below.
>
> Should we change the order of the kernel drivers, currently first section is
> "UIO" and second section is "VFIO". Since we encoruage vfio and move igb_uio out
> of the repo, should we list the "VfIO" first?
Absolutely.
In general we need to encourage more VFIO and remove some references
to igb_uio. But I don't want to do such "marketing" change in this patch.
The goal of this patch is just to move the code.
[...]
> > +* kernel: The module ``igb_uio`` has been moved to the git repository
> > +``dpdk-kmods`` in a new directory ``linux/igb_uio``.
> > +
>
> Doc build giving warning on this:
> WARNING: Bullet list ends without a blank line; unexpected unindent.
Probably a merge issue. That's fine on my side.
> Except from above minor comments looks good to me,
> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Do we agree I can merge without any change?
On 10/6/2020 11:54 AM, Thomas Monjalon wrote:
> 06/10/2020 12:16, Ferruh Yigit:
>> On 10/5/2020 10:42 AM, Thomas Monjalon wrote:
>>> As decided in the Technical Board in November 2019,
>>> the kernel module igb_uio is moved to the dpdk-kmods repository
>>> in the /linux/igb_uio/ directory.
>
> [...]
>> Patch doesn't apply cleanly, not sure why, CI seems having same problem:
>> http://mails.dpdk.org/archives/test-report/2020-October/156378.html
>
> That's because I used --irreversible-delete to minimize the size of the patch.
>
> [...]
>>> If UEFI secure boot is enabled, the Linux kernel may disallow the use of
>>> UIO on the system. Therefore, devices for use by DPDK should be bound to the
>>> - ``vfio-pci`` kernel module rather than ``igb_uio`` or ``uio_pci_generic``.
>>> + ``vfio-pci`` kernel module rather than any UIO-based module.
>>> For more details see :ref:`linux_gsg_binding_kernel` below.
>>
>> Should we change the order of the kernel drivers, currently first section is
>> "UIO" and second section is "VFIO". Since we encoruage vfio and move igb_uio out
>> of the repo, should we list the "VfIO" first?
>
> Absolutely.
> In general we need to encourage more VFIO and remove some references
> to igb_uio. But I don't want to do such "marketing" change in this patch.
> The goal of this patch is just to move the code.
>
OK.
> [...]
>>> +* kernel: The module ``igb_uio`` has been moved to the git repository
>>> +``dpdk-kmods`` in a new directory ``linux/igb_uio``.
>>> +
>>
>> Doc build giving warning on this:
>> WARNING: Bullet list ends without a blank line; unexpected unindent.
>
> Probably a merge issue. That's fine on my side.
>
I can see it is wrong in the patch itself, please double check in your end to be
sure warning is not hidden in doc build.
I am good as long as there is no warning.
>> Except from above minor comments looks good to me,
>> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
>
> Do we agree I can merge without any change?
>
Agree if the above doc warning is gone.
06/10/2020 13:09, Ferruh Yigit:
> On 10/6/2020 11:54 AM, Thomas Monjalon wrote:
> > 06/10/2020 12:16, Ferruh Yigit:
> >> On 10/5/2020 10:42 AM, Thomas Monjalon wrote:
> >>> +* kernel: The module ``igb_uio`` has been moved to the git repository
> >>> +``dpdk-kmods`` in a new directory ``linux/igb_uio``.
> >>> +
> >>
> >> Doc build giving warning on this:
> >> WARNING: Bullet list ends without a blank line; unexpected unindent.
> >
> > Probably a merge issue. That's fine on my side.
>
> I can see it is wrong in the patch itself, please double check in your end to be
> sure warning is not hidden in doc build.
Yes you're right.
I misinterpreted the warning, now I see the missing indent,
and my sphinx reports the problem as well.
06/10/2020 13:09, Ferruh Yigit:
> On 10/6/2020 11:54 AM, Thomas Monjalon wrote:
> > 06/10/2020 12:16, Ferruh Yigit:
> >> On 10/5/2020 10:42 AM, Thomas Monjalon wrote:
> >>> As decided in the Technical Board in November 2019,
> >>> the kernel module igb_uio is moved to the dpdk-kmods repository
> >>> in the /linux/igb_uio/ directory.
> >
> > [...]
> >> Except from above minor comments looks good to me,
> >> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
> >
> > Do we agree I can merge without any change?
>
> Agree if the above doc warning is gone.
Fixed the warning and applied.
igb_uio is now retired in http://git.dpdk.org/dpdk-kmods/tree/linux/igb_uio
Next steps:
- remove unneeded references to igb_uio.
- plan what to do with kni.
@@ -290,7 +290,6 @@ F: doc/guides/linux_gsg/
Linux UIO
M: Ferruh Yigit <ferruh.yigit@intel.com>
-F: kernel/linux/igb_uio/
F: drivers/bus/pci/linux/*uio*
Linux VFIO
@@ -93,8 +93,7 @@ the UIO driver by repeating this command for every function.
.. code-block:: console
- cd <dpdk-top-level-directory>
- insmod ./build/kmod/igb_uio.ko
+ insmod igb_uio.ko
echo "8086 0d8f" > /sys/bus/pci/drivers/igb_uio/new_id
lspci -vd8086:0d8f
@@ -92,8 +92,7 @@ the UIO driver by repeating this command for every function.
.. code-block:: console
- cd <dpdk-top-level-directory>
- insmod ./build/kmod/igb_uio.ko
+ insmod igb_uio.ko
echo "1172 5052" > /sys/bus/pci/drivers/igb_uio/new_id
lspci -vd1172:
@@ -75,9 +75,8 @@ Initialization
Bind the CCP devices to DPDK UIO driver module before running the CCP PMD stack.
e.g. for the 0x1456 device::
- cd to the top-level DPDK directory
modprobe uio
- insmod ./build/kmod/igb_uio.ko
+ insmod igb_uio.ko
echo "1022 1456" > /sys/bus/pci/drivers/igb_uio/new_id
Another way to bind the CCP devices to DPDK UIO driver is by using the ``dpdk-devbind.py`` script.
@@ -642,9 +642,8 @@ Install the DPDK igb_uio driver, bind the VF PCI Device id to it and use lspci
to confirm the VF devices are now in use by igb_uio kernel driver,
e.g. for the C62x device::
- cd to the top-level DPDK directory
modprobe uio
- insmod ./build/kmod/igb_uio.ko
+ insmod igb_uio.ko
echo "8086 37c9" > /sys/bus/pci/drivers/igb_uio/new_id
lspci -vvd:37c9
@@ -591,7 +591,7 @@ Set up DPDK in the Virtual Machine
rmmod virtio-pci ixgbevf
modprobe uio
- insmod /root/dpdk/<build_dir>/kernel/linux/igb_uio/igb_uio.ko
+ insmod igb_uio.ko
/root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:03.0
/root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:04.0
@@ -421,7 +421,7 @@ setup_dpdk_virtio_in_vm.sh
rmmod virtio-pci
modprobe uio
- insmod /root/dpdk/<build_dir>/kernel/linux/igb_uio/igb_uio.ko
+ insmod igb_uio.ko
/root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:03.0
/root/dpdk/usertools/dpdk-devbind.py -b igb_uio 0000:00:04.0
@@ -103,11 +103,6 @@ first.
meson builddir --cross-file openwrt-cross
ninja -C builddir
-.. note::
-
- For compiling the igb_uio with the kernel version used in target machine,
- you need to explicitly specify kernel_dir in meson_options.txt.
-
Running DPDK application on OpenWrt
-----------------------------------
@@ -155,4 +155,5 @@ This results in pass-through of the DMAR (DMA Remapping) lookup in the host.
Also, if ``INTEL_IOMMU_DEFAULT_ON`` is not set in the kernel, the ``intel_iommu=on`` kernel parameter must be used too.
This ensures that the Intel IOMMU is being initialized as expected.
-Please note that while using ``iommu=pt`` is compulsory for ``igb_uio driver``, the ``vfio-pci`` driver can actually work with both ``iommu=pt`` and ``iommu=on``.
+Please note that while using ``iommu=pt`` is compulsory for ``igb_uio`` driver,
+the ``vfio-pci`` driver can actually work with both ``iommu=pt`` and ``iommu=on``.
@@ -27,33 +27,20 @@ can provide the uio capability. This module can be loaded using the command:
``uio_pci_generic`` module doesn't support the creation of virtual functions.
-As an alternative to the ``uio_pci_generic``, the DPDK also includes the igb_uio
-module which can be found in the kernel/linux subdirectory referred to above. It can
-be loaded as shown below:
+As an alternative to the ``uio_pci_generic``, there is the ``igb_uio`` module
+which can be found in the repository `dpdk-kmods <http://git.dpdk.org/dpdk-kmods>`_.
+It can be loaded as shown below:
.. code-block:: console
sudo modprobe uio
- sudo insmod <build_dir>/kernel/linux/igb_uio/igb_uio.ko
-
-.. note::
-
- Building DPDK Linux kernel modules is disabled by default starting from DPDK 20.02.
- To enable them again, the config option "enable_kmods" needs to be set
- in the meson build configuration.
- See :ref:`adjusting_build_options` for details on how to set/clear build options.
- It is planned to move ``igb_uio`` module to a different git repository.
-
-.. note::
-
- For some devices which lack support for legacy interrupts, e.g. virtual function
- (VF) devices, the ``igb_uio`` module may be needed in place of ``uio_pci_generic``.
+ sudo insmod igb_uio.ko
.. note::
If UEFI secure boot is enabled, the Linux kernel may disallow the use of
UIO on the system. Therefore, devices for use by DPDK should be bound to the
- ``vfio-pci`` kernel module rather than ``igb_uio`` or ``uio_pci_generic``.
+ ``vfio-pci`` kernel module rather than any UIO-based module.
For more details see :ref:`linux_gsg_binding_kernel` below.
.. note::
@@ -69,7 +69,7 @@ This section demonstrates how to setup and run ``testpmd`` in Linux.
.. code-block:: console
modprobe uio
- insmod ./x86_64-native-linux-gcc/kmod/igb_uio.ko
+ insmod igb_uio.ko
or
@@ -169,8 +169,8 @@ Prerequisites
(*) ENAv2 hardware supports Low Latency Queue v2 (LLQv2). This feature
reduces the latency of the packets by pushing the header directly through
the PCI to the device, before the DMA is even triggered. For proper work
- kernel PCI driver must support write combining (WC). In mainline version of
- ``igb_uio`` (in DPDK repo) it must be enabled by loading module with
+ kernel PCI driver must support write combining (WC).
+ In DPDK ``igb_uio`` it must be enabled by loading module with
``wc_activate=1`` flag (example below). However, mainline's vfio-pci
driver in kernel doesn't have WC support yet (planed to be added).
If vfio-pci used user should be either turn off ENAv2 (to avoid performance
@@ -78,13 +78,6 @@ Deprecation Notices
These wrappers must be used for patches that need to be merged in 20.08
onwards. This change will not introduce any performance degradation.
-* igb_uio: In the view of reducing the kernel dependency from the main tree,
- as a first step, the Technical Board decided to move ``igb_uio``
- kernel module to the dpdk-kmods repository in the /linux/igb_uio/ directory
- in 20.11.
- Minutes of Technical Board Meeting of `2019-11-06
- <https://mails.dpdk.org/archives/dev/2019-November/151763.html>`_.
-
* lib: will fix extending some enum/define breaking the ABI. There are multiple
samples in DPDK that enum/define terminated with a ``.*MAX.*`` value which is
used by iterators, and arrays holding these values are sized with this
@@ -122,9 +122,11 @@ Removed Items
* vhost: Dequeue zero-copy support has been removed.
+* kernel: The module ``igb_uio`` has been moved to the git repository
+``dpdk-kmods`` in a new directory ``linux/igb_uio``.
+
* Removed Python 2 support since it was EOL'd in January 2020.
-
API Changes
-----------
@@ -64,8 +64,6 @@ The process should start successfully and display a command prompt as follows:
EAL: Virtual area found at 0x7ff200000000 (size = 0x40000000)
...
- EAL: check igb_uio module
- EAL: check module finished
EAL: Master core 0 is ready (tid=54e41820)
EAL: Core 1 is ready (tid=53b32700)
@@ -50,7 +50,7 @@
* This code is used to simulate a PCI probe by parsing information in
* sysfs. Moreover, when a registered driver matches a device, the
* kernel driver currently using it is unloaded and replaced by
- * igb_uio module, which is a very minimal userland driver for Intel
+ * nic_uio module, which is a very minimal userland driver for Intel
* network card, only providing access to PCI BAR to applications, and
* enabling bus master.
*/
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
deleted file mode 100644
@@ -1,7 +1,7 @@
# SPDX-License-Identifier: BSD-3-Clause
# Copyright(c) 2018 Intel Corporation
-subdirs = ['igb_uio', 'kni']
+subdirs = ['kni']
# if we are cross-compiling we need kernel_dir specified
if get_option('kernel_dir') == '' and meson.is_cross_build()