diff --git a/MAINTAINERS b/MAINTAINERS
index e5d92aa74926..2f1ab5a0f328 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -483,7 +483,7 @@ F: doc/guides/prog_guide/mldev.rst
 F: app/test-mldev/
 F: doc/guides/tools/testmldev.rst
 
-DMA device API - EXPERIMENTAL
+DMA device API
 M: Chengwen Feng <fengchengwen@huawei.com>
 F: lib/dmadev/
 F: drivers/dma/skeleton/
diff --git a/lib/dmadev/rte_dmadev.h b/lib/dmadev/rte_dmadev.h
index 493263a5d627..2c09939ff6c5 100644
--- a/lib/dmadev/rte_dmadev.h
+++ b/lib/dmadev/rte_dmadev.h
@@ -158,9 +158,6 @@ extern "C" {
 #define RTE_DMADEV_DEFAULT_MAX 64
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure the maximum number of dmadevs.
  * @note This function can be invoked before the primary process rte_eal_init()
  * to change the maximum number of dmadevs. If not invoked, the maximum number
@@ -172,13 +169,9 @@ extern "C" {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dev_max(size_t dev_max);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the device identifier for the named DMA device.
  *
  * @param name
@@ -188,13 +181,9 @@ int rte_dma_dev_max(size_t dev_max);
  *   Returns DMA device identifier on success.
  *   - <0: Failure to find named DMA device.
  */
-__rte_experimental
 int rte_dma_get_dev_id_by_name(const char *name);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check whether the dev_id is valid.
  *
  * @param dev_id
@@ -203,20 +192,15 @@ int rte_dma_get_dev_id_by_name(const char *name);
  * @return
  *   - If the device index is valid (true) or not (false).
  */
-__rte_experimental
 bool rte_dma_is_valid(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Get the total number of DMA devices that have been successfully
  * initialised.
  *
  * @return
  *   The total number of usable DMA devices.
  */
-__rte_experimental
 uint16_t rte_dma_count_avail(void);
 
 /**
@@ -227,7 +211,6 @@ uint16_t rte_dma_count_avail(void);
  * @return
  *   Next valid dmadev, UINT16_MAX if there is none.
  */
-__rte_experimental
 int16_t rte_dma_next_dev(int16_t start_dev_id);
 
 /** Utility macro to iterate over all available dmadevs */
@@ -318,9 +301,6 @@ struct rte_dma_info {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve information of a DMA device.
  *
  * @param dev_id
@@ -332,7 +312,6 @@ struct rte_dma_info {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_info_get(int16_t dev_id, struct rte_dma_info *dev_info);
 
 /**
@@ -357,9 +336,6 @@ struct rte_dma_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Configure a DMA device.
  *
  * This function must be invoked first before any other function in the
@@ -375,13 +351,9 @@ struct rte_dma_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Start a DMA device.
  *
  * The device start step is the last one and consists of setting the DMA
@@ -393,13 +365,9 @@ int rte_dma_configure(int16_t dev_id, const struct rte_dma_conf *dev_conf);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_start(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Stop a DMA device.
  *
  * The device can be restarted with a call to rte_dma_start().
@@ -410,13 +378,9 @@ int rte_dma_start(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stop(int16_t dev_id);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Close a DMA device.
  *
  * The device cannot be restarted after this call.
@@ -427,7 +391,6 @@ int rte_dma_stop(int16_t dev_id);
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_close(int16_t dev_id);
 
 /**
@@ -620,9 +583,6 @@ struct rte_dma_vchan_conf {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Allocate and set up a virtual DMA channel.
  *
  * @param dev_id
@@ -637,7 +597,6 @@ struct rte_dma_vchan_conf {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_vchan_setup(int16_t dev_id, uint16_t vchan,
 			const struct rte_dma_vchan_conf *conf);
 
@@ -666,9 +625,6 @@ struct rte_dma_stats {
 #define RTE_DMA_ALL_VCHAN	0xFFFFu
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Retrieve basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -683,14 +639,10 @@ struct rte_dma_stats {
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
 		      struct rte_dma_stats *stats);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Reset basic statistics of a or all virtual DMA channel(s).
  *
  * @param dev_id
@@ -702,7 +654,6 @@ int rte_dma_stats_get(int16_t dev_id, uint16_t vchan,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_stats_reset(int16_t dev_id, uint16_t vchan);
 
 /**
@@ -718,9 +669,6 @@ enum rte_dma_vchan_status {
 };
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Determine if all jobs have completed on a device channel.
  * This function is primarily designed for testing use, as it allows a process to check if
  * all jobs are completed, without actually gathering completions from those jobs.
@@ -735,14 +683,10 @@ enum rte_dma_vchan_status {
  *   0 - call completed successfully
  *   < 0 - error code indicating there was a problem calling the API
  */
-__rte_experimental
 int
 rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *status);
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Dump DMA device info.
  *
  * @param dev_id
@@ -753,7 +697,6 @@ rte_dma_vchan_status(int16_t dev_id, uint16_t vchan, enum rte_dma_vchan_status *
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 int rte_dma_dump(int16_t dev_id, FILE *f);
 
 /**
@@ -864,9 +807,6 @@ struct rte_dma_sge {
 /**@}*/
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a copy operation onto the virtual DMA channel.
  *
  * This queues up a copy operation to be performed by hardware, if the 'flags'
@@ -892,7 +832,6 @@ struct rte_dma_sge {
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 	     uint32_t length, uint64_t flags)
@@ -910,9 +849,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a scatter-gather list copy operation onto the virtual DMA channel.
  *
  * This queues up a scatter-gather list copy operation to be performed by
@@ -942,7 +878,6 @@ rte_dma_copy(int16_t dev_id, uint16_t vchan, rte_iova_t src, rte_iova_t dst,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 		struct rte_dma_sge *dst, uint16_t nb_src, uint16_t nb_dst,
@@ -963,9 +898,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Enqueue a fill operation onto the virtual DMA channel.
  *
  * This queues up a fill operation to be performed by hardware, if the 'flags'
@@ -991,7 +923,6 @@ rte_dma_copy_sg(int16_t dev_id, uint16_t vchan, struct rte_dma_sge *src,
  *   - -ENOSPC: if no space left to enqueue.
  *   - other values < 0 on failure.
  */
-__rte_experimental
 static inline int
 rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 	     rte_iova_t dst, uint32_t length, uint64_t flags)
@@ -1010,9 +941,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Trigger hardware to begin performing enqueued operations.
  *
  * Writes the "doorbell" to the hardware to trigger it
@@ -1026,7 +954,6 @@ rte_dma_fill(int16_t dev_id, uint16_t vchan, uint64_t pattern,
  * @return
  *   0 on success. Otherwise negative value is returned.
  */
-__rte_experimental
 static inline int
 rte_dma_submit(int16_t dev_id, uint16_t vchan)
 {
@@ -1043,9 +970,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been successfully completed.
  * Once an operation has been reported as completed, the results of that
  * operation will be visible to all cores on the system.
@@ -1067,7 +991,6 @@ rte_dma_submit(int16_t dev_id, uint16_t vchan)
  *   The number of operations that successfully completed. This return value
  *   must be less than or equal to the value of nb_cpls.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 		  uint16_t *last_idx, bool *has_error)
@@ -1102,9 +1025,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Return the number of operations that have been completed, and the operations
  * result may succeed or fail.
  * Once an operation has been reported as completed successfully, the results of that
@@ -1130,7 +1050,6 @@ rte_dma_completed(int16_t dev_id, uint16_t vchan, const uint16_t nb_cpls,
  *   If this number is greater than zero (assuming n), then n values in the
  *   status array are also set.
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 			 const uint16_t nb_cpls, uint16_t *last_idx,
@@ -1154,9 +1073,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
 }
 
 /**
- * @warning
- * @b EXPERIMENTAL: this API may change without prior notice.
- *
  * Check remaining capacity in descriptor ring for the current burst.
  *
  * @param dev_id
@@ -1168,7 +1084,6 @@ rte_dma_completed_status(int16_t dev_id, uint16_t vchan,
  *   - Remaining space in the descriptor ring for the current burst.
  *   - 0 on error
  */
-__rte_experimental
 static inline uint16_t
 rte_dma_burst_capacity(int16_t dev_id, uint16_t vchan)
 {
diff --git a/lib/dmadev/version.map b/lib/dmadev/version.map
index 7031d6b335e9..2a3736514c8f 100644
--- a/lib/dmadev/version.map
+++ b/lib/dmadev/version.map
@@ -1,4 +1,4 @@
-EXPERIMENTAL {
+DPDK_24 {
 	global:
 
 	rte_dma_close;
