xref: /dpdk/doc/guides/windows_gsg/run_apps.rst (revision 443b949e17953a1094f80532d600a1ee540f2ba4)
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