xref: /dpdk/doc/guides/compressdevs/uadk.rst (revision dbfe80274aabd3751ee646b7922b84a3801db3a3)
1d66269c0SZhangfei Gao.. SPDX-License-Identifier: BSD-3-Clause
2d66269c0SZhangfei Gao   Copyright 2024-2025 Huawei Technologies Co.,Ltd. All rights reserved.
3d66269c0SZhangfei Gao   Copyright 2024-2025 Linaro ltd.
4d66269c0SZhangfei Gao
5d66269c0SZhangfei GaoUADK Compression Poll Mode Driver
6d66269c0SZhangfei Gao=================================
7d66269c0SZhangfei Gao
8d66269c0SZhangfei GaoUADK compression PMD provides poll mode compression & decompression driver.
9d66269c0SZhangfei GaoAll compression operations are using UADK library compression API,
10d66269c0SZhangfei Gaowhich is algorithm-level API, abstracting accelerators' low-level implementations.
11d66269c0SZhangfei Gao
12d66269c0SZhangfei GaoUADK compression PMD relies on `UADK library <https://github.com/Linaro/uadk>`_.
13d66269c0SZhangfei Gao
14d66269c0SZhangfei GaoUADK is a framework for user applications to access hardware accelerators.
15d66269c0SZhangfei GaoUADK relies on IOMMU SVA (Shared Virtual Address) feature,
16d66269c0SZhangfei Gaowhich shares the same page table between IOMMU and MMU.
17d66269c0SZhangfei GaoAs a result, the user application can directly use the virtual address for device DMA,
18d66269c0SZhangfei Gaowhich enhances performance as well as easy usability.
19d66269c0SZhangfei Gao
20d66269c0SZhangfei Gao
21d66269c0SZhangfei GaoFeatures
22d66269c0SZhangfei Gao--------
23d66269c0SZhangfei Gao
24d66269c0SZhangfei GaoUADK compression PMD has support for:
25d66269c0SZhangfei Gao
26d66269c0SZhangfei GaoCompression/Decompression algorithm:
27d66269c0SZhangfei Gao
28d66269c0SZhangfei Gao    * DEFLATE - using Fixed and Dynamic Huffman encoding
29d66269c0SZhangfei Gao
30d66269c0SZhangfei GaoWindow size support:
31d66269c0SZhangfei Gao
32d66269c0SZhangfei Gao    * 32K
33d66269c0SZhangfei Gao
34d66269c0SZhangfei Gao
35d66269c0SZhangfei GaoTest steps
36d66269c0SZhangfei Gao----------
37d66269c0SZhangfei Gao
38d66269c0SZhangfei Gao#. Build UADK
39d66269c0SZhangfei Gao
40d66269c0SZhangfei Gao   .. code-block:: console
41d66269c0SZhangfei Gao
42d66269c0SZhangfei Gao      git clone https://github.com/Linaro/uadk.git
43d66269c0SZhangfei Gao      cd uadk
44d66269c0SZhangfei Gao      mkdir build
45d66269c0SZhangfei Gao      ./autogen.sh
46d66269c0SZhangfei Gao      ./configure --prefix=$PWD/build
47d66269c0SZhangfei Gao      make
48d66269c0SZhangfei Gao      make install
49d66269c0SZhangfei Gao
50d66269c0SZhangfei Gao   .. note::
51d66269c0SZhangfei Gao
52d66269c0SZhangfei Gao      Without ``--prefix``, UADK will be installed to ``/usr/local/lib`` by default.
53d66269c0SZhangfei Gao
54d66269c0SZhangfei Gao   .. note::
55d66269c0SZhangfei Gao
56d66269c0SZhangfei Gao      If get error: "cannot find -lnuma", please install the libnuma-dev.
57d66269c0SZhangfei Gao
58d66269c0SZhangfei Gao#. Run pkg-config libwd to ensure env is setup correctly
59d66269c0SZhangfei Gao
60d66269c0SZhangfei Gao   .. code-block:: console
61d66269c0SZhangfei Gao
62d66269c0SZhangfei Gao      export PKG_CONFIG_PATH=$PWD/build/lib/pkgconfig
63d66269c0SZhangfei Gao      pkg-config libwd --cflags --libs -I/usr/local/include -L/usr/local/lib -lwd
64d66269c0SZhangfei Gao
65d66269c0SZhangfei Gao   .. note::
66d66269c0SZhangfei Gao
67d66269c0SZhangfei Gao      export ``PKG_CONFIG_PATH`` is required on demand,
68d66269c0SZhangfei Gao      not needed if UADK is installed to ``/usr/local/lib``.
69d66269c0SZhangfei Gao
70d66269c0SZhangfei Gao#. Build DPDK
71d66269c0SZhangfei Gao
72d66269c0SZhangfei Gao   .. code-block:: console
73d66269c0SZhangfei Gao
74d66269c0SZhangfei Gao      cd dpdk
75d66269c0SZhangfei Gao      mkdir build
76d66269c0SZhangfei Gao      meson setup build (--reconfigure)
77d66269c0SZhangfei Gao      cd build
78d66269c0SZhangfei Gao      ninja
79d66269c0SZhangfei Gao      sudo ninja install
80*dbfe8027SZhangfei Gao
81*dbfe8027SZhangfei Gao#. Prepare hugepages for DPDK (see also :doc:`../tools/hugepages`)
82*dbfe8027SZhangfei Gao
83*dbfe8027SZhangfei Gao   .. code-block:: console
84*dbfe8027SZhangfei Gao
85*dbfe8027SZhangfei Gao      echo 1024 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
86*dbfe8027SZhangfei Gao      echo 1024 > /sys/devices/system/node/node1/hugepages/hugepages-2048kB/nr_hugepages
87*dbfe8027SZhangfei Gao      echo 1024 > /sys/devices/system/node/node2/hugepages/hugepages-2048kB/nr_hugepages
88*dbfe8027SZhangfei Gao      echo 1024 > /sys/devices/system/node/node3/hugepages/hugepages-2048kB/nr_hugepages
89*dbfe8027SZhangfei Gao      mkdir -p /mnt/huge_2mb
90*dbfe8027SZhangfei Gao      mount -t hugetlbfs none /mnt/huge_2mb -o pagesize=2MB
91*dbfe8027SZhangfei Gao
92*dbfe8027SZhangfei Gao#. Run test app
93*dbfe8027SZhangfei Gao
94*dbfe8027SZhangfei Gao   .. code-block:: console
95*dbfe8027SZhangfei Gao
96*dbfe8027SZhangfei Gao	sudo dpdk-test --vdev=compress_uadk
97*dbfe8027SZhangfei Gao	RTE>>compressdev_autotest
98*dbfe8027SZhangfei Gao	RTE>>quit
99