1ad67b672SDmitry Kozlyuk.. SPDX-License-Identifier: BSD-3-Clause 2ad67b672SDmitry Kozlyuk Copyright(c) 2020 Dmitry Kozlyuk 3ad67b672SDmitry Kozlyuk 4ad67b672SDmitry KozlyukRunning DPDK Applications 5ad67b672SDmitry Kozlyuk========================= 6ad67b672SDmitry Kozlyuk 7c08bd191SDmitry KozlyukGrant *Lock pages in memory* Privilege 8c08bd191SDmitry Kozlyuk-------------------------------------- 9c08bd191SDmitry Kozlyuk 10c08bd191SDmitry KozlyukUse of hugepages ("large pages" in Windows terminology) requires 11c08bd191SDmitry Kozlyuk``SeLockMemoryPrivilege`` for the user running an application. 12c08bd191SDmitry Kozlyuk 13*443b949eSDavid Marchand#. Open *Local Security Policy* snap-in, either: 14c08bd191SDmitry Kozlyuk 15c08bd191SDmitry Kozlyuk * Control Panel / Computer Management / Local Security Policy; 16c08bd191SDmitry Kozlyuk * or Win+R, type ``secpol``, press Enter. 17c08bd191SDmitry Kozlyuk 18*443b949eSDavid Marchand#. Open *Local Policies / User Rights Assignment / Lock pages in memory.* 19c08bd191SDmitry Kozlyuk 20*443b949eSDavid Marchand#. Add desired users or groups to the list of grantees. 21c08bd191SDmitry Kozlyuk 22*443b949eSDavid Marchand#. Privilege is applied upon next logon. In particular, if privilege has been 23c08bd191SDmitry Kozlyuk granted to current user, a logoff is required before it is available. 24c08bd191SDmitry Kozlyuk 25c08bd191SDmitry KozlyukSee `Large-Page Support`_ in MSDN for details. 26c08bd191SDmitry Kozlyuk 27c08bd191SDmitry Kozlyuk.. _Large-Page Support: https://docs.microsoft.com/en-us/windows/win32/memory/large-page-support 28c08bd191SDmitry Kozlyuk 29c08bd191SDmitry Kozlyuk 30e0ae3db0SDmitry KozlyukInstall Drivers 31e0ae3db0SDmitry Kozlyuk--------------- 322a5d547aSDmitry Kozlyuk 33e0ae3db0SDmitry KozlyukCertain kernel-mode drivers are required to run DPDK applications. 34e0ae3db0SDmitry KozlyukRefer to `Windows documentation <https://git.dpdk.org/dpdk-kmods/tree/windows>`_ 35e0ae3db0SDmitry Kozlyukin ``dpdk-kmods`` repository for common instructions on system setup, 36e0ae3db0SDmitry Kozlyukdriver build and installation. 37e0ae3db0SDmitry KozlyukThe drivers are not signed, so signature enforcement has to be disabled. 382a5d547aSDmitry Kozlyuk 392a5d547aSDmitry Kozlyuk.. warning:: 402a5d547aSDmitry Kozlyuk 412a5d547aSDmitry Kozlyuk Disabling driver signature enforcement weakens OS security. 422a5d547aSDmitry Kozlyuk It is discouraged in production environments. 432a5d547aSDmitry Kozlyuk 442a5d547aSDmitry Kozlyuk 45e0ae3db0SDmitry Kozlyukvirt2phys 46e0ae3db0SDmitry Kozlyuk~~~~~~~~~ 472a5d547aSDmitry Kozlyuk 48e0ae3db0SDmitry KozlyukAccess to physical addresses is provided by a kernel-mode driver, virt2phys. 49e0ae3db0SDmitry KozlyukIt is mandatory for allocating physically-contiguous memory which is required 50e0ae3db0SDmitry Kozlyukby hardware PMDs. 512a5d547aSDmitry Kozlyuk 522a5d547aSDmitry KozlyukWhen loaded successfully, the driver is shown in *Device Manager* as *Virtual 532a5d547aSDmitry Kozlyukto physical address translator* device under *Kernel bypass* category. 542a5d547aSDmitry KozlyukInstalled driver persists across reboots. 552a5d547aSDmitry Kozlyuk 562a5d547aSDmitry KozlyukIf DPDK is unable to communicate with the driver, a warning is printed 572a5d547aSDmitry Kozlyukon initialization (debug-level logs provide more details): 582a5d547aSDmitry Kozlyuk 592a5d547aSDmitry Kozlyuk.. code-block:: text 602a5d547aSDmitry Kozlyuk 612a5d547aSDmitry Kozlyuk EAL: Cannot open virt2phys driver interface 622a5d547aSDmitry Kozlyuk 632a5d547aSDmitry Kozlyuk 64e0ae3db0SDmitry KozlyukNetUIO 65e0ae3db0SDmitry Kozlyuk~~~~~~ 66e0ae3db0SDmitry Kozlyuk 67e0ae3db0SDmitry KozlyukNetUIO kernel-mode driver provides access to the device hardware resources. 68e0ae3db0SDmitry KozlyukIt is mandatory for all hardware PMDs, except for mlx5 PMD. 69e0ae3db0SDmitry Kozlyuk 70e0ae3db0SDmitry KozlyukRefer to `NetUIO documentation <https://git.dpdk.org/dpdk-kmods/tree/windows/netuio/README.rst>`_ 71e0ae3db0SDmitry Kozlyukin ``dpdk-kmods`` repository for instructions to build and set up the driver. 72e0ae3db0SDmitry KozlyukDevices supported by NetUIO are listed in ``netuio.inf``. 73e0ae3db0SDmitry KozlyukThe list can be extended in order to try running DPDK with new devices. 74e0ae3db0SDmitry Kozlyuk 752a5d547aSDmitry Kozlyuk 76ad67b672SDmitry KozlyukRun the ``helloworld`` Example 77ad67b672SDmitry Kozlyuk------------------------------ 78ad67b672SDmitry Kozlyuk 79ad67b672SDmitry KozlyukNavigate to the examples in the build directory and run `dpdk-helloworld.exe`. 80ad67b672SDmitry Kozlyuk 81ad67b672SDmitry Kozlyuk.. code-block:: console 82ad67b672SDmitry Kozlyuk 83ad67b672SDmitry Kozlyuk cd C:\Users\me\dpdk\build\examples 8426a6946aSDmitry Kozlyuk dpdk-helloworld.exe -l 0-3 85ad67b672SDmitry Kozlyuk hello from core 1 86ad67b672SDmitry Kozlyuk hello from core 3 87ad67b672SDmitry Kozlyuk hello from core 0 88ad67b672SDmitry Kozlyuk hello from core 2 89