diff --git a/buildtools/map-list-symbol.sh b/buildtools/map-list-symbol.sh
index a834399816..b76e2417c5 100755
--- a/buildtools/map-list-symbol.sh
+++ b/buildtools/map-list-symbol.sh
@@ -61,8 +61,12 @@ for file in $@; do
 		if (current_section == "") {
 			next;
 		}
-		if ("'$version'" != "" && "'$version'" != current_version) {
-			next;
+		if ("'$version'" != "") {
+			if ("'$version'" == "unset" && current_version != "") {
+				next;
+			} else if ("'$version'" != "unset" && "'$version'" != current_version) {
+				next;
+			}
 		}
 		gsub(";","");
 		if ("'$symbol'" == "all" || $1 == "'$symbol'") {
diff --git a/devtools/check-symbol-maps.sh b/devtools/check-symbol-maps.sh
index ba2f892f56..6121f78ec6 100755
--- a/devtools/check-symbol-maps.sh
+++ b/devtools/check-symbol-maps.sh
@@ -97,4 +97,19 @@ if [ -n "$bad_format_maps" ] ; then
     ret=1
 fi
 
+find_non_versioned_maps ()
+{
+    for map in $@ ; do
+        [ $(buildtools/map-list-symbol.sh -S EXPERIMENTAL -V unset $map | wc -l) = '0' ] ||
+            echo $map
+    done
+}
+
+non_versioned_maps=$(find_non_versioned_maps $@)
+if [ -n "$non_versioned_maps" ] ; then
+    echo "Found non versioned maps:"
+    echo "$non_versioned_maps"
+    ret=1
+fi
+
 exit $ret
diff --git a/doc/guides/contributing/abi_policy.rst b/doc/guides/contributing/abi_policy.rst
index 5fd4052585..3c4478692a 100644
--- a/doc/guides/contributing/abi_policy.rst
+++ b/doc/guides/contributing/abi_policy.rst
@@ -331,7 +331,22 @@ become part of a tracked ABI version.
 Note that marking an API as experimental is a multi step process.
 To mark an API as experimental, the symbols which are desired to be exported
 must be placed in an EXPERIMENTAL version block in the corresponding libraries'
-version map script.
+version map script. Experimental symbols must be commented so
+that it is clear in which DPDK version they were introduced.
+
+.. code-block:: none
+
+ EXPERIMENTAL {
+        global:
+
+        # added in 20.11
+        rte_foo_init;
+        rte_foo_configure;
+
+        # added in 21.02
+        rte_foo_cleanup;
+ ...
+
 Secondly, the corresponding prototypes of those exported functions (in the
 development header files), must be marked with the ``__rte_experimental`` tag
 (see ``rte_compat.h``).
diff --git a/drivers/baseband/acc/version.map b/drivers/baseband/acc/version.map
index 1b6b1cd10d..fa39a63f0f 100644
--- a/drivers/baseband/acc/version.map
+++ b/drivers/baseband/acc/version.map
@@ -5,5 +5,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 22.11
 	rte_acc_configure;
 };
diff --git a/drivers/baseband/fpga_5gnr_fec/version.map b/drivers/baseband/fpga_5gnr_fec/version.map
index 2da20cabc1..855ce55703 100644
--- a/drivers/baseband/fpga_5gnr_fec/version.map
+++ b/drivers/baseband/fpga_5gnr_fec/version.map
@@ -5,6 +5,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 20.11
 	rte_fpga_5gnr_fec_configure;
 
 };
diff --git a/drivers/baseband/fpga_lte_fec/version.map b/drivers/baseband/fpga_lte_fec/version.map
index 83f3a8a267..2c8e60375d 100644
--- a/drivers/baseband/fpga_lte_fec/version.map
+++ b/drivers/baseband/fpga_lte_fec/version.map
@@ -5,6 +5,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 20.11
 	rte_fpga_lte_fec_configure;
-
 };
diff --git a/drivers/bus/pci/version.map b/drivers/bus/pci/version.map
index 9e4d8f5e54..5d9dced5b2 100644
--- a/drivers/bus/pci/version.map
+++ b/drivers/bus/pci/version.map
@@ -17,6 +17,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 20.11
 	rte_pci_find_ext_capability;
 
 	# added in 21.08
diff --git a/drivers/dma/dpaa2/version.map b/drivers/dma/dpaa2/version.map
index 7dc2d6e185..713ed41f0c 100644
--- a/drivers/dma/dpaa2/version.map
+++ b/drivers/dma/dpaa2/version.map
@@ -3,6 +3,9 @@ DPDK_24 {
 };
 
 EXPERIMENTAL {
+	global:
+
+	# added in 22.07
 	rte_dpaa2_qdma_completed_multi;
 	rte_dpaa2_qdma_copy_multi;
 	rte_dpaa2_qdma_vchan_fd_us_enable;
diff --git a/drivers/event/dlb2/version.map b/drivers/event/dlb2/version.map
index 8aabf8b727..1d0a0a75d7 100644
--- a/drivers/event/dlb2/version.map
+++ b/drivers/event/dlb2/version.map
@@ -5,5 +5,6 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 20.11
 	rte_pmd_dlb2_set_token_pop_mode;
 };
diff --git a/drivers/mempool/cnxk/version.map b/drivers/mempool/cnxk/version.map
index 775d46d934..8249417527 100644
--- a/drivers/mempool/cnxk/version.map
+++ b/drivers/mempool/cnxk/version.map
@@ -4,6 +4,8 @@ DPDK_24 {
 
 EXPERIMENTAL {
 	global:
+
+	# added in 23.07
 	rte_pmd_cnxk_mempool_is_hwpool;
 	rte_pmd_cnxk_mempool_mbuf_exchange;
 	rte_pmd_cnxk_mempool_range_check_disable;
diff --git a/drivers/net/atlantic/version.map b/drivers/net/atlantic/version.map
index b063baa7a4..cbe9ee9263 100644
--- a/drivers/net/atlantic/version.map
+++ b/drivers/net/atlantic/version.map
@@ -5,6 +5,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 19.05
 	rte_pmd_atl_macsec_enable;
 	rte_pmd_atl_macsec_disable;
 	rte_pmd_atl_macsec_config_txsc;
diff --git a/drivers/net/i40e/version.map b/drivers/net/i40e/version.map
index 3ba31f4768..52b7a3269a 100644
--- a/drivers/net/i40e/version.map
+++ b/drivers/net/i40e/version.map
@@ -42,9 +42,14 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 19.11
+	rte_pmd_i40e_set_switch_dev;
+
+	# added in 20.08
 	rte_pmd_i40e_get_fdir_info;
 	rte_pmd_i40e_get_fdir_stats;
 	rte_pmd_i40e_set_gre_key_len;
+
+	# added in 23.07
 	rte_pmd_i40e_set_pf_src_prune;
-	rte_pmd_i40e_set_switch_dev;
 };
diff --git a/drivers/net/ixgbe/version.map b/drivers/net/ixgbe/version.map
index 2c9d977f5c..9a6ef29b1d 100644
--- a/drivers/net/ixgbe/version.map
+++ b/drivers/net/ixgbe/version.map
@@ -43,6 +43,7 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 20.08
 	rte_pmd_ixgbe_get_fdir_info;
 	rte_pmd_ixgbe_get_fdir_stats;
 };
diff --git a/lib/argparse/version.map b/lib/argparse/version.map
index 9b68464600..46da99a3e2 100644
--- a/lib/argparse/version.map
+++ b/lib/argparse/version.map
@@ -1,6 +1,7 @@
 EXPERIMENTAL {
 	global:
 
+	# added in 24.03
 	rte_argparse_parse;
 	rte_argparse_parse_type;
 
diff --git a/lib/metrics/version.map b/lib/metrics/version.map
index 4763ac6b8b..9766a1af5b 100644
--- a/lib/metrics/version.map
+++ b/lib/metrics/version.map
@@ -16,11 +16,11 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 20.05
 	rte_metrics_tel_encode_json_format;
 	rte_metrics_tel_reg_all_ethdev;
 	rte_metrics_tel_get_global_stats;
 	rte_metrics_tel_get_port_stats_ids;
 	rte_metrics_tel_get_ports_stats_json;
 	rte_metrics_tel_extract_data;
-
 };
diff --git a/lib/mldev/version.map b/lib/mldev/version.map
index 1978695314..84bdd6c300 100644
--- a/lib/mldev/version.map
+++ b/lib/mldev/version.map
@@ -1,6 +1,7 @@
 EXPERIMENTAL {
 	global:
 
+	# added in 22.11
 	rte_ml_dequeue_burst;
 	rte_ml_dev_close;
 	rte_ml_dev_configure;
diff --git a/lib/regexdev/version.map b/lib/regexdev/version.map
index 3c6e9fffa1..4c0435180c 100644
--- a/lib/regexdev/version.map
+++ b/lib/regexdev/version.map
@@ -1,7 +1,7 @@
 EXPERIMENTAL {
 	global:
 
-	rte_regex_devices;
+	# added in 20.08
 	rte_regexdev_attr_get;
 	rte_regexdev_attr_set;
 	rte_regexdev_close;
@@ -12,8 +12,6 @@ EXPERIMENTAL {
 	rte_regexdev_enqueue_burst;
 	rte_regexdev_get_dev_id;
 	rte_regexdev_info_get;
-	rte_regexdev_is_valid_dev;
-	rte_regexdev_logtype;
 	rte_regexdev_queue_pair_setup;
 	rte_regexdev_rule_db_compile_activate;
 	rte_regexdev_rule_db_export;
@@ -27,6 +25,11 @@ EXPERIMENTAL {
 	rte_regexdev_xstats_names_get;
 	rte_regexdev_xstats_reset;
 
+	# added in 22.03
+	rte_regex_devices;
+	rte_regexdev_is_valid_dev;
+	rte_regexdev_logtype;
+
 	local: *;
 };
 
diff --git a/lib/reorder/version.map b/lib/reorder/version.map
index ea60759106..5baeab56f8 100644
--- a/lib/reorder/version.map
+++ b/lib/reorder/version.map
@@ -15,11 +15,13 @@ DPDK_24 {
 EXPERIMENTAL {
 	global:
 
+	# added in 20.11
 	rte_reorder_seqn_dynfield_offset;
 
 	# added in 23.03
 	rte_reorder_drain_up_to_seqn;
 	rte_reorder_min_seqn_set;
+
 	# added in 23.07
 	rte_reorder_memory_footprint_get;
 };
