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