Following are change highlights associated with official releases. Important
bug fixes are all mentioned, but some internal enhancements are omitted here
for brevity.

* 2.1.1 (2025/8/13)

  New features
  - Support DKMS

  Bug fixes:
  - Fix nvmlDeviceGetIndex for MIG device handle
  - Fix driver installer for arm64 platforms
  - Fix invalid MIG config caused kmd crash
  - Fix display p2p status in dlsmi topo query
  - Fix MAX_ORDER for 6.4 and later linux kernel
  - Fix Video A7 hang on some platforms

* 2.1.0 (2025/8/6)

  New features
  - Limited system power-management support
    - policy -1: reject pm when any task running, support pm otherwise
    - policy  0: always report pm not supported.
    - policy  1: enable pm, but will kill previously running tasks after
                 resume/restore.
  - Support config P2P by dlsmi utility (Please see dlsmi p2p -h)
  - Support hot reset (dlsmi -r) on windows. NOTIE: may be risky.

  Bug fixes:
  - Fix hot reset (including init reset) crash on 4M BAR0 products (some KS28, KS38, etc)
  - Fix a kernel mode crash issue when out-of-memory in mapping page table
  - Fix board ID detection on Windows
  - Fix kernel driver install on riscv on linux kernel version 6.8 and later
  - Fix a vpu random not response issue, caused by vpu mailbox memory order not guaranteed
    - Fix A7 kernel crash when out of memory, by disable oom-killer, over-commit, etc

  Optimizations and refactors:
  - Add arm64 atomic alternatives (lse or llsc)
  - Support dump VPU A7 kmsg in dlsmi debug utility
  - Improve VPU performance a bit, especially for high FPS and multiple-session cases.

* 2.0.14 (2025/6/26)

  New features:
  - Support KS20-A (M.2 interface)
  - Support 4M BAR0 for V2 ULPS products

  Bug fixes:
  - Fix page table dirty check after mprotect API

  Optimizations and refactors:

* 2.0.13 (2025/5/28)

  New features:
  - Support show detailed product name in device-manager on Windows
  - Support multi-threaded reset device in 'dlsmi -r'
  - Support(workaround) device reset on Linux before 3.16

  Bug fixes:
  - Correct kernel driver unload for multi-gpu products
  - Fix page pool start offset, fix map host memory
  - Fix upload vpu firmware
  - Fix detect indices for multi-chip boards
  - Fix retrain pcie link speed
  - Report system power-management not supported on Linux
    - Prevent Linux from suspending
  - Fix a kmd crash issue when too many DDR allocations before task commit

  Optimizations and refactors:
  - Enlarge top firmware connection wait timeout

* 2.0.12 (2025/4/28)

  This release initially supports KS38.

  New features:
  - Add kernel driver parameters for Windows
  - Support more debug functionalities in dlsmi interface

  Bug fixes:
  - Fix sub chip id and board id detection for KS38 QUAD
    - Correct dlsmi summary for KS38 QUAD
  - Fix a random memory allocation fail issue on Windows

* 2.0.11 (2025/4/24)

  This release is mainly to support small BAR4 size for V2 ULPS products.

  New features:
  - Support small BAR4 size (often 8MB) for V2 ULPS products
  - Support query board level power-usage, etc for multi-gpu products, such as KS38
  - Support debugfs functionalities in dlsmi interface

  Optimizations and refactors:
  - Reduce MSI-X interrupt usage on Windows
  - Improve driver version string on Windows

* 2.0.10 (2025/4/16)

  New features:
  - Support GPUDirect kernel API.
  - Support display board id in dlsmi summary for multi-chip board.
  - Support query board level power usage and power limit for multi-chip board.
  - Support KS19 product, which does not support video codec.
  - Support KS15 product, which includes only 1 MME.
  - Support query DDR utilization on V2 ULPS products.

  Bug fixes:
  - Fix kernel mode crash when out of host memory when page table mapping.
  - Correct PCIe link status detection, especially in virtualization environment.
  - Correct legacy IRQ handler on Windows.

  Optimizations and refactors:
  - Remove some deprecated denglin extension APIs in dlml.
  - Optimize retraining PCIe link speed.

* 2.0.9 (2025/3/25)

  This release initially supports V2 ULPS products (KS20), and fix several CPU cache
  relevant issues on arm64 and riscv64 platforms.

  New features:
  - Support new product_type specifiction, mainly for V2 ULPS.
  - Support report cuda kernel pagefault (fault address, fault type, etc) on V2 ULPS.
  - Support downgrade pcie link speed when enter low power mode
  - Upgrade dlml to R560, support latest nccl
  - Support V2 ULPS products
    - BAR4 region remapping for 64MB BAR4
    - Top firmware version check
    - Hardware modules detection

  Bug fixes:
  - Fix access P2P BAR from host CPU.
  - Fix multiple CPU cache sync issues on arm64 and riscv platforms.
  - Fix unexpected interrupt when use legacy IRQ.
  - Fix list V2 ULP and V3 products in dl-modprobe.
  - Fix unexpected behavior when CPU write by P2P BAR on some arm64 platforms.

  Optimizations and refactors:
  - Improve video channel mailbox performance.

* 2.0.6 (2025/2/8)

  Bug fixes:
  - Fix random hang because interrupt handle cannot read latest value from hardware.
  - Fix build error on riscv linux platform.

  Optimizations and refactors:
  - Print driver version when load kernel module
  - Wait device ready (not in reset state) in device context initialization.
  - Windows sign

* 2.0.5 (2025/1/20)

  New features:
  - Add Compute Throughput in chip_info.

  Bug fixes:
  - Correct 32bit register access issue on sunway64.
  - Add remove /dev/denglin-shm node in 'dl-modprobe -r' command.

  Optimizations and refactors:
  - Improve video application performance.
    - Optimize data reads/writes to channel A7.
    - Reduce VPU A7 to host response data size to reduce Host CPU cost.
    - Eliminate a memcpy in VPU A7 side to improve performance.
  - Optimize debug dump script. Now all debug dump logs are saved into a single
    text file.
  - Remove unused top-mailbox error prints.
  - Improve driver installation experience, remove unused prints.

* 2.0.2 (2024/12/30)

  Bug fixes:
  - Correct read timestamp for perf counter values.
  - Fix DMMU page fault when trace enabled.

* 2.0.0 (2024/12/21)

  New features:
  - Use force_VA mode instead of hybrid_PA mode for DDR memory.
    - Avoid dangerous accessing of host PA in abnormal cuda kernels.
  - Relink pcie when pcie Gen limited by the device itself.
  - Support YUV strides in jpeg encode.
  - Support driver versioning on windows.
  - Update dlml to R515.

  Bug fixes:
  - Correct identify GPU by UUID in dlsmi.
  - Fix unexpected soft lockup because of busy irq bottom-half thread.
  - Correct device module masks (affinity mask) on V2 ULP(S) serial.
  - Correct query GPU utilization, such as shown in 'dlsmi'.
    Peviously utilization was read from 12.7s before.
  - Correct product name when product type overriden by insmod parameters.
  - Correct read SU debug registers.
  - Fix vidoe encoder hang after CLIP enabled in previous decode.
  - Fix check p2p capability, especially on simulated PCI (not PCIe) platforms.

  Optimizations and refactors:
  - Optimize P2P device grouping.
  - Print SGC/SGM busy state in hang_detect.

