RELEASE: 2024.1.0
=================

This release is validated
	- On VCU118 for QDMA5.0 2022.1 example design
	- On XCVP1202 for CPM5 2022.1 example design
	- On XCVC1902 for CPM4 2022.1 example design

RELEASE: 2023.2.1
=================

This release is validated
	- On VCU1525 for QDMA5.0 2022.1 example design
	- On VCU1525 for QDMA4.0 2020.2 example design
	- On VCU1525 for QDMA3.1 2019.2 example design
	- On XCVP1202 for CPM5 2022.1 example design
	- On XCVC1902 for CPM4 2022.1 example design

SUPPORTED FEATURES:
===================
2018.2 Features
---------------
- Support for both the AXI4 Memory Mapped(MM) and AXI4 Streaming(ST) Interfaces
- 2048 Queue Sets
	- 2048 H2C Descriptor Rings
	- 2048 C2H Descriptor Rings
	- 2048 C2H Completion Rings
- Supports Polling Mode
- Interrupts
	- 2048 MSI-X Vectors
	- Up to 8 MSI-X per Function
	- Interrupt Aggregation
	- User Interrupts
	- Error Interrupts
- C2H Stream Completion queue entry coalescing
- Supports SR-IOV with up to 4 Physical Functions(PF) and 252 Virtual Functions(VF)
- Allows only Privileged/Physical functions to program the contexts and registers
- Function Level Reset(FLR) Support
- Mailbox Support
- Descriptor bypass(8, 16, 32 descriptor sizes)
- Descriptor Prefetching
- Asynchronous and Synchronous IO support
- ST H2C to C2H and C2H to H2C loopback support
- Driver configuration through sysfs
- Zero byte transfer support
- Dynamic queue configuration
- Dynamic driver configuration

2018.3 Features
---------------
- Auto mode support for PF & VF driver
	- MM and ST H2C requests are services in poll mode
	- ST C2H is services in Interrupt Aggregation mode
- Support 64B descriptor format in bypass mode
- Support for Completion queue descriptors of 64 bytes size
- Support flexible BAR mapping for QDMA configuration register space
- Indirect programming of FMAP registers
- Support disabling overflow check in completion ring
- Version for SW and HW
- ECC Support
- Flexible interrupt allocation between PF/VF
- Greater than 32 vectors per function
- Legacy Interrupt Support
- VF driver support in direct and indirect interrupt mode

2019.1 Features
---------------
- Interrupt support for Mailbox events
- Support Completions in Memory mapped mode
- Interoperability between Linux driver (as PF/VF) and DPDK driver (as PF/VF)
- Driver restructuring to partition QDMA access code such that it can be used across different drivers

2019.2 Features
---------------
- Support for PF device removal when its VF devices are active
- Support for Interrupt moderation and adaptive counter threshold
- Support for configurable number of User and Data interrupts
- Added user logic pluggable interfaces for processing the descriptors and completions
- Added new interfaces for updating the Consumer Index and Producer Index

2020.1 Updates
--------------
- Modified the directory structure for driver source code.
- Application names are changed as "dma-ctl", "dma-perf", "dma-to-device", "dma-from-device"
- Support QDMA4.0 context and register changes
- Common driver to support QDMA3.1 and QDMA4.0 designs
- Support multiple bus numbers on single card
- Updated and validated the example design with marker changes for QDMA4.0 and without marker changes for QDMA3.1
- Added support for more than 256 functions 
- Modified the driver interface to pass the module parameters for more than 256 functions
- Support for Function Level Reset (FLR) of both PFs and VFs.

2020.1 Patch Updates
--------------------
- Resolved HW errors observed with QDMA4.0 MM only design
- Addressed VF performance issues.

2020.2 Updates
--------------
- Added support for detailed register dump
- Added support for post processing HW error messages
- Added support for Debug mode and Internal only mode
- Added support for Versal PDI programming through keyhole interface

2020.2 Patch Updates
--------------------
- Added support for MM Channel Selection and Keyhole feature in dmaperf
- Fixed bug in in driver which caused crash during performance run

2022.1 Updates
--------------
CPM5
	- Tandem Boot support 
	- FMAP context dump
	- Debug register dump for ST and MM Errors
	- Dual Instance support

2022.1.1 Patch Updates
----------------------
- Ported changes from pull request https://github.com/Xilinx/dma_ip_drivers/pull/167 to fix XRT build issues while integrating qdma linux driver in to XRT stack

2022.1.2 Patch Updates
----------------------
- Added VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.

2022.1.3 Patch Updates
----------------------
- Ported changes from pull request https://github.com/Xilinx/dma_ip_drivers/pull/170 to fix coverity issues

2022.1.4 Patch Updates
----------------------
- Added support for more than 2K queues for PF/VF
- Added support for Fedora36

2022.1.5 Patch Updates
----------------------
- Added PF/VF 4K queues support for CPM5 design. This feature is applicable only when corresponding RTL support is added.

2023.1.0 Updates
----------------
- Updated the queue list command for >2048 Q's.
- Added support to accomodate H2C & C2H Q's offset with fixed intervals for dma-perf application.

2023.1.1 Updates
----------------
- Optimized the driver code and HW register settings for performance improvements.

2023.1.2 Updates
----------------
- Added support for Fedora37 & CentOS9 distros.

2023.1.3 Updates
----------------
- dma-ctl application is updated to append q params during queue start.

2023.2.0 Updates
----------------
- Added driver support for CPM4 design.

2023.2.1 Updates
----------------
- Added driver support to enable 10 bit tag for CPM5 design.

2024.1.0 Updates
----------------
- Added support for kernel version 6.4.x.
- Added support for Fedora40 & Centos-Stream9 distros.
- Added support for AlmaLinux 9.4
- Reduced descriptor data transfer length to 32KB for EQDMA Soft 5.0 design.
- Fixed bugs in driver.

KNOWN ISSUES:
=============
- CPM4 Only
	- Due to HW PDI limitaion,
		- VF is supported in poll mode only.
		- VF functionality on VM is not verfied.

- Observed MMAP failure for applications when device is binded QDMA Linux driver on Fedora37. Fix will be availbale in upcoming release.

- CPM5 Only
	- Performace optimizations are not finalized, Performance report with optimizations will be available in next patch release.

- All Designs
	- In interrupt mode, Sometimes completions are not received when C2H PIDX updates are held for 64 descriptors
	- On QDMA4.0 2020.1 design, HW error observed during the probe of the VFs

DRIVER LIMITATIONS:
===================
- CPM5 Only
	- VF functionality is verified with 240 VF's as per CPM5 HW limitation

- All Designs
	- Driver compilation on Fedora 28 with gcc8.1 results in compilation warnings
	- Big endian systems are not supported
	- For optimal QDMA streaming performance, packet buffers of the descriptor ring should be aligned to at least 256 bytes.
	- FLR is not supported in the Driver for CentOS because linux kernels provided in CentOS versions does not support the driver call back registration for FLR functionality

- EQDMA Soft IP 5.0
	- QDMA: Fix user BAR check issue
		- The existing driver code assmues the presence of the user BAR as indicated in the functional example design. If this user BAR is not detected during the driver probing process,
                  it results in a failure. However, this check is specific to example design and some customer designs might not contain user BAR. So bypassing the user BAR check to prevent
                  driver returning error and proceed further.



/*
 * This file is part of the Xilinx DMA IP Core driver for Linux
 *
 * Copyright (c) 2017-2022, Xilinx, Inc. All rights reserved.
 * Copyright (c) 2022-2024, Advanced Micro Devices, Inc. All rights reserved.
 *
 * This source code is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * The full GNU General Public License is included in this distribution in
 * the file called "COPYING".
 */
