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