currently the uncore power management implementation is vendor specific.
Added new vendor agnostic uncore power management implementation similar
to rte_power and rename specific implementations ("rte_power_intel_uncore")
to "power_intel_uncore" along with functions.

Signed-off-by: Sivaprasad Tummala <sivaprasad.tumm...@amd.com>
---
 app/test/test_power_intel_uncore.c            |  10 +-
 config/rte_config.h                           |   1 +
 examples/l3fwd-power/main.c                   |   2 +-
 lib/power/meson.build                         |   5 +-
 ...er_intel_uncore.c => power_intel_uncore.c} |  51 +++--
 ...er_intel_uncore.h => power_intel_uncore.h} |  66 +++---
 lib/power/rte_power_uncore.c                  | 189 ++++++++++++++++++
 lib/power/rte_power_uncore.h                  |  32 +++
 lib/power/version.map                         |   6 +
 9 files changed, 313 insertions(+), 49 deletions(-)
 rename lib/power/{rte_power_intel_uncore.c => power_intel_uncore.c} (90%)
 rename lib/power/{rte_power_intel_uncore.h => power_intel_uncore.h} (77%)
 create mode 100644 lib/power/rte_power_uncore.c

diff --git a/app/test/test_power_intel_uncore.c 
b/app/test/test_power_intel_uncore.c
index 31163af84e..27f4684f76 100644
--- a/app/test/test_power_intel_uncore.c
+++ b/app/test/test_power_intel_uncore.c
@@ -14,7 +14,7 @@ test_power_intel_uncore(void)
 }
 
 #else
-#include <rte_power_intel_uncore.h>
+#include <rte_power_uncore.h>
 #include <power_common.h>
 
 #define MAX_UNCORE_FREQS 32
@@ -246,11 +246,15 @@ test_power_intel_uncore(void)
 {
        int ret;
 
+       ret = rte_power_set_uncore_env(UNCORE_PM_ENV_INTEL_UNCORE);
+       if (ret < 0)
+               goto fail_all;
+
        ret = rte_power_uncore_get_num_pkgs();
        if (ret == 0) {
                printf("Uncore frequency management not supported/enabled on 
this kernel. "
-               "Please enable CONFIG_INTEL_UNCORE_FREQ_CONTROL if on x86 with 
linux kernel"
-               " >= 5.6\n");
+               "Please enable CONFIG_INTEL_UNCORE_FREQ_CONTROL if on intel x86 
with "
+               "linux kernel >= 5.6\n");
                return TEST_SKIPPED;
        }
 
diff --git a/config/rte_config.h b/config/rte_config.h
index 400e44e3cf..ccca68b4f3 100644
--- a/config/rte_config.h
+++ b/config/rte_config.h
@@ -87,6 +87,7 @@
 
 /* rte_power defines */
 #define RTE_MAX_LCORE_FREQS 64
+#define RTE_MAX_UNCORE_FREQS 64
 
 /* rte_graph defines */
 #define RTE_GRAPH_BURST_SIZE 256
diff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c
index 3f01cbd9e2..a34a7958f0 100644
--- a/examples/l3fwd-power/main.c
+++ b/examples/l3fwd-power/main.c
@@ -46,7 +46,7 @@
 #include <rte_metrics.h>
 #include <rte_telemetry.h>
 #include <rte_power_pmd_mgmt.h>
-#include <rte_power_intel_uncore.h>
+#include <rte_power_uncore.h>
 
 #include "perf_core.h"
 #include "main.h"
diff --git a/lib/power/meson.build b/lib/power/meson.build
index 1ce8b7c07d..9693c3ba7d 100644
--- a/lib/power/meson.build
+++ b/lib/power/meson.build
@@ -18,13 +18,14 @@ sources = files(
         'power_cppc_cpufreq.c',
         'power_kvm_vm.c',
         'power_pstate_cpufreq.c',
+        'power_intel_uncore.c',
         'rte_power.c',
-        'rte_power_intel_uncore.c',
+        'rte_power_uncore.c',
         'rte_power_pmd_mgmt.c',
 )
 headers = files(
         'rte_power.h',
-        'rte_power_intel_uncore.h',
+        'rte_power_uncore.h',
         'rte_power_pmd_mgmt.h',
         'rte_power_guest_channel.h',
 )
diff --git a/lib/power/rte_power_intel_uncore.c b/lib/power/power_intel_uncore.c
similarity index 90%
rename from lib/power/rte_power_intel_uncore.c
rename to lib/power/power_intel_uncore.c
index 3b8724385f..258cf78dff 100644
--- a/lib/power/rte_power_intel_uncore.c
+++ b/lib/power/power_intel_uncore.c
@@ -8,7 +8,7 @@
 
 #include <rte_memcpy.h>
 
-#include "rte_power_intel_uncore.h"
+#include "power_intel_uncore.h"
 #include "power_common.h"
 
 #define MAX_UNCORE_FREQS 32
@@ -246,7 +246,7 @@ static int
 check_pkg_die_values(unsigned int pkg, unsigned int die)
 {
        unsigned int max_pkgs, max_dies;
-       max_pkgs = rte_power_uncore_get_num_pkgs();
+       max_pkgs = power_intel_uncore_get_num_pkgs();
        if (max_pkgs == 0)
                return -1;
        if (pkg >= max_pkgs) {
@@ -255,7 +255,7 @@ check_pkg_die_values(unsigned int pkg, unsigned int die)
                return -1;
        }
 
-       max_dies = rte_power_uncore_get_num_dies(pkg);
+       max_dies = power_intel_uncore_get_num_dies(pkg);
        if (max_dies == 0)
                return -1;
        if (die >= max_dies) {
@@ -268,7 +268,7 @@ check_pkg_die_values(unsigned int pkg, unsigned int die)
 }
 
 int
-rte_power_uncore_init(unsigned int pkg, unsigned int die)
+power_intel_uncore_init(unsigned int pkg, unsigned int die)
 {
        struct uncore_power_info *ui;
 
@@ -298,7 +298,7 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die)
 }
 
 int
-rte_power_uncore_exit(unsigned int pkg, unsigned int die)
+power_intel_uncore_exit(unsigned int pkg, unsigned int die)
 {
        struct uncore_power_info *ui;
 
@@ -333,7 +333,7 @@ rte_power_uncore_exit(unsigned int pkg, unsigned int die)
 }
 
 uint32_t
-rte_power_get_uncore_freq(unsigned int pkg, unsigned int die)
+power_get_intel_uncore_freq(unsigned int pkg, unsigned int die)
 {
        int ret = check_pkg_die_values(pkg, die);
        if (ret < 0)
@@ -343,7 +343,7 @@ rte_power_get_uncore_freq(unsigned int pkg, unsigned int 
die)
 }
 
 int
-rte_power_set_uncore_freq(unsigned int pkg, unsigned int die, uint32_t index)
+power_set_intel_uncore_freq(unsigned int pkg, unsigned int die, uint32_t index)
 {
        int ret = check_pkg_die_values(pkg, die);
        if (ret < 0)
@@ -353,7 +353,7 @@ rte_power_set_uncore_freq(unsigned int pkg, unsigned int 
die, uint32_t index)
 }
 
 int
-rte_power_uncore_freq_max(unsigned int pkg, unsigned int die)
+power_intel_uncore_freq_max(unsigned int pkg, unsigned int die)
 {
        int ret = check_pkg_die_values(pkg, die);
        if (ret < 0)
@@ -364,7 +364,7 @@ rte_power_uncore_freq_max(unsigned int pkg, unsigned int 
die)
 
 
 int
-rte_power_uncore_freq_min(unsigned int pkg, unsigned int die)
+power_intel_uncore_freq_min(unsigned int pkg, unsigned int die)
 {
        int ret = check_pkg_die_values(pkg, die);
        if (ret < 0)
@@ -376,7 +376,32 @@ rte_power_uncore_freq_min(unsigned int pkg, unsigned int 
die)
 }
 
 int
-rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned int die)
+power_intel_uncore_freqs(unsigned int pkg, unsigned int die,
+                                uint32_t *freqs, uint32_t num)
+{
+       struct uncore_power_info *ui;
+
+       int ret = check_pkg_die_values(pkg, die);
+       if (ret < 0)
+               return -1;
+
+       if (freqs == NULL) {
+               RTE_LOG(ERR, POWER, "NULL buffer supplied\n");
+               return 0;
+       }
+
+       ui = &uncore_info[pkg][die];
+       if (num < ui->nb_freqs) {
+               RTE_LOG(ERR, POWER, "Buffer size is not enough\n");
+               return 0;
+       }
+       rte_memcpy(freqs, ui->freqs, ui->nb_freqs * sizeof(uint32_t));
+
+       return ui->nb_freqs;
+}
+
+int
+power_intel_uncore_get_num_freqs(unsigned int pkg, unsigned int die)
 {
        int ret = check_pkg_die_values(pkg, die);
        if (ret < 0)
@@ -386,7 +411,7 @@ rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned 
int die)
 }
 
 unsigned int
-rte_power_uncore_get_num_pkgs(void)
+power_intel_uncore_get_num_pkgs(void)
 {
        DIR *d;
        struct dirent *dir;
@@ -416,14 +441,14 @@ rte_power_uncore_get_num_pkgs(void)
 }
 
 unsigned int
-rte_power_uncore_get_num_dies(unsigned int pkg)
+power_intel_uncore_get_num_dies(unsigned int pkg)
 {
        DIR *d;
        struct dirent *dir;
        unsigned int count = 0, max_pkgs;
        char filter[FILTER_LENGTH];
 
-       max_pkgs = rte_power_uncore_get_num_pkgs();
+       max_pkgs = power_intel_uncore_get_num_pkgs();
        if (max_pkgs == 0)
                return 0;
        if (pkg >= max_pkgs) {
diff --git a/lib/power/rte_power_intel_uncore.h b/lib/power/power_intel_uncore.h
similarity index 77%
rename from lib/power/rte_power_intel_uncore.h
rename to lib/power/power_intel_uncore.h
index 0bd9f193a1..32d6b1f7a4 100644
--- a/lib/power/rte_power_intel_uncore.h
+++ b/lib/power/power_intel_uncore.h
@@ -2,8 +2,8 @@
  * Copyright(c) 2022 Intel Corporation
  */
 
-#ifndef RTE_POWER_INTEL_UNCORE_H
-#define RTE_POWER_INTEL_UNCORE_H
+#ifndef POWER_INTEL_UNCORE_H
+#define POWER_INTEL_UNCORE_H
 
 /**
  * @file
@@ -12,6 +12,7 @@
 
 #include <rte_compat.h>
 #include "rte_power.h"
+#include "rte_power_uncore.h"
 
 #ifdef __cplusplus
 extern "C" {
@@ -34,9 +35,7 @@ extern "C" {
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
-int
-rte_power_uncore_init(unsigned int pkg, unsigned int die);
+int power_intel_uncore_init(unsigned int pkg, unsigned int die);
 
 /**
  * Exit uncore frequency management on a specific die on a package.
@@ -56,9 +55,7 @@ rte_power_uncore_init(unsigned int pkg, unsigned int die);
  *  - 0 on success.
  *  - Negative on error.
  */
-__rte_experimental
-int
-rte_power_uncore_exit(unsigned int pkg, unsigned int die);
+int power_intel_uncore_exit(unsigned int pkg, unsigned int die);
 
 /**
  * Return the current index of available frequencies of a specific die on a 
package.
@@ -77,9 +74,7 @@ rte_power_uncore_exit(unsigned int pkg, unsigned int die);
  *  The current index of available frequencies.
  *  If error, it will return 'RTE_POWER_INVALID_FREQ_INDEX = (~0)'.
  */
-__rte_experimental
-uint32_t
-rte_power_get_uncore_freq(unsigned int pkg, unsigned int die);
+uint32_t power_get_intel_uncore_freq(unsigned int pkg, unsigned int die);
 
 /**
  * Set minimum and maximum uncore frequency for specified die on a package
@@ -102,9 +97,7 @@ rte_power_get_uncore_freq(unsigned int pkg, unsigned int 
die);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
-int
-rte_power_set_uncore_freq(unsigned int pkg, unsigned int die, uint32_t index);
+int power_set_intel_uncore_freq(unsigned int pkg, unsigned int die, uint32_t 
index);
 
 /**
  * Set minimum and maximum uncore frequency for specified die on a package
@@ -125,9 +118,7 @@ rte_power_set_uncore_freq(unsigned int pkg, unsigned int 
die, uint32_t index);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
-int
-rte_power_uncore_freq_max(unsigned int pkg, unsigned int die);
+int power_intel_uncore_freq_max(unsigned int pkg, unsigned int die);
 
 /**
  * Set minimum and maximum uncore frequency for specified die on a package
@@ -148,9 +139,30 @@ rte_power_uncore_freq_max(unsigned int pkg, unsigned int 
die);
  *  - 0 on success without frequency changed.
  *  - Negative on error.
  */
-__rte_experimental
-int
-rte_power_uncore_freq_min(unsigned int pkg, unsigned int die);
+int power_intel_uncore_freq_min(unsigned int pkg, unsigned int die);
+
+/**
+ * Return the list of available frequencies in the index array.
+ *
+ * This function should NOT be called in the fast path.
+ *
+ * @param pkg
+ *  Package number.
+ *  Each physical CPU in a system is referred to as a package.
+ * @param die
+ *  Die number.
+ *  Each package can have several dies connected together via the uncore mesh.
+ * @param freqs
+ *  The buffer array to save the frequencies.
+ * @param num
+ *  The number of frequencies to get.
+ *
+ * @return
+ *  - The number of available index's in frequency array.
+ *  - Negative on error.
+ */
+int power_intel_uncore_freqs(unsigned int pkg, unsigned int die,
+                               unsigned int *freqs, unsigned int num);
 
 /**
  * Return the list length of available frequencies in the index array.
@@ -168,9 +180,7 @@ rte_power_uncore_freq_min(unsigned int pkg, unsigned int 
die);
  *  - The number of available index's in frequency array.
  *  - Negative on error.
  */
-__rte_experimental
-int
-rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned int die);
+int power_intel_uncore_get_num_freqs(unsigned int pkg, unsigned int die);
 
 /**
  * Return the number of packages (CPUs) on a system
@@ -182,9 +192,7 @@ rte_power_uncore_get_num_freqs(unsigned int pkg, unsigned 
int die);
  *  - Zero on error.
  *  - Number of package on system on success.
  */
-__rte_experimental
-unsigned int
-rte_power_uncore_get_num_pkgs(void);
+unsigned int power_intel_uncore_get_num_pkgs(void);
 
 /**
  * Return the number of dies for pakckages (CPUs) specified
@@ -200,12 +208,10 @@ rte_power_uncore_get_num_pkgs(void);
  *  - Zero on error.
  *  - Number of dies for package on sucecss.
  */
-__rte_experimental
-unsigned int
-rte_power_uncore_get_num_dies(unsigned int pkg);
+unsigned int power_intel_uncore_get_num_dies(unsigned int pkg);
 
 #ifdef __cplusplus
 }
 #endif
 
-#endif /* RTE_POWER_INTEL_UNCORE_H */
+#endif /* POWER_INTEL_UNCORE_H */
diff --git a/lib/power/rte_power_uncore.c b/lib/power/rte_power_uncore.c
new file mode 100644
index 0000000000..79303ebb3a
--- /dev/null
+++ b/lib/power/rte_power_uncore.c
@@ -0,0 +1,189 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2010-2014 Intel Corporation
+ * Copyright(c) 2023 AMD Corporation
+ */
+
+#include <errno.h>
+
+#include <rte_errno.h>
+#include <rte_spinlock.h>
+
+#include "rte_power_uncore.h"
+#include "power_intel_uncore.h"
+
+enum uncore_power_mgmt_env default_uncore_env = UNCORE_PM_ENV_NOT_SET;
+
+static rte_spinlock_t global_env_cfg_lock = RTE_SPINLOCK_INITIALIZER;
+
+static uint32_t
+power_get_dummy_uncore_freq(unsigned int pkg __rte_unused,
+              unsigned int die __rte_unused)
+{
+       return 0;
+}
+
+static int
+power_set_dummy_uncore_freq(unsigned int pkg __rte_unused,
+              unsigned int die __rte_unused, uint32_t index __rte_unused)
+{
+       return 0;
+}
+
+static int
+power_dummy_uncore_freq_max(unsigned int pkg __rte_unused,
+              unsigned int die __rte_unused)
+{
+       return 0;
+}
+
+static int
+power_dummy_uncore_freq_min(unsigned int pkg __rte_unused,
+              unsigned int die __rte_unused)
+{
+       return 0;
+}
+
+static int
+power_dummy_uncore_freqs(unsigned int pkg __rte_unused, unsigned int die 
__rte_unused,
+                       uint32_t *freqs __rte_unused, uint32_t num __rte_unused)
+{
+       return 0;
+}
+
+static int
+power_dummy_uncore_get_num_freqs(unsigned int pkg __rte_unused,
+              unsigned int die __rte_unused)
+{
+       return 0;
+}
+
+static unsigned int
+power_dummy_uncore_get_num_pkgs(void)
+{
+       return 0;
+}
+
+static unsigned int
+power_dummy_uncore_get_num_dies(unsigned int pkg __rte_unused)
+{
+       return 0;
+}
+
+/* function pointers */
+rte_power_get_uncore_freq_t rte_power_get_uncore_freq = 
power_get_dummy_uncore_freq;
+rte_power_set_uncore_freq_t rte_power_set_uncore_freq = 
power_set_dummy_uncore_freq;
+rte_power_uncore_freq_change_t rte_power_uncore_freq_max = 
power_dummy_uncore_freq_max;
+rte_power_uncore_freq_change_t rte_power_uncore_freq_min = 
power_dummy_uncore_freq_min;
+rte_power_uncore_freqs_t rte_power_uncore_freqs = power_dummy_uncore_freqs;
+rte_power_uncore_get_num_freqs_t rte_power_uncore_get_num_freqs =
+                                       power_dummy_uncore_get_num_freqs;
+rte_power_uncore_get_num_pkgs_t rte_power_uncore_get_num_pkgs =
+                                       power_dummy_uncore_get_num_pkgs;
+rte_power_uncore_get_num_dies_t rte_power_uncore_get_num_dies =
+                                       power_dummy_uncore_get_num_dies;
+
+static void
+reset_power_uncore_function_ptrs(void)
+{
+       rte_power_get_uncore_freq = power_get_dummy_uncore_freq;
+       rte_power_set_uncore_freq = power_set_dummy_uncore_freq;
+       rte_power_uncore_freq_max = power_dummy_uncore_freq_max;
+       rte_power_uncore_freq_min = power_dummy_uncore_freq_min;
+       rte_power_uncore_freqs  = power_dummy_uncore_freqs;
+       rte_power_uncore_get_num_freqs = power_dummy_uncore_get_num_freqs;
+       rte_power_uncore_get_num_pkgs = power_dummy_uncore_get_num_pkgs;
+       rte_power_uncore_get_num_dies = power_dummy_uncore_get_num_dies;
+}
+
+int
+rte_power_set_uncore_env(enum uncore_power_mgmt_env env)
+{
+       rte_spinlock_lock(&global_env_cfg_lock);
+
+       if (default_uncore_env != UNCORE_PM_ENV_NOT_SET) {
+               RTE_LOG(ERR, POWER, "Uncore Power Management Env already 
set.\n");
+               rte_spinlock_unlock(&global_env_cfg_lock);
+               return -1;
+       }
+
+       int ret = 0;
+
+       if (env == UNCORE_PM_ENV_INTEL_UNCORE) {
+               rte_power_get_uncore_freq = power_get_intel_uncore_freq;
+               rte_power_set_uncore_freq = power_set_intel_uncore_freq;
+               rte_power_uncore_freq_min  = power_intel_uncore_freq_min;
+               rte_power_uncore_freq_max  = power_intel_uncore_freq_max;
+               rte_power_uncore_freqs = power_intel_uncore_freqs;
+               rte_power_uncore_get_num_freqs = 
power_intel_uncore_get_num_freqs;
+               rte_power_uncore_get_num_pkgs = power_intel_uncore_get_num_pkgs;
+               rte_power_uncore_get_num_dies = power_intel_uncore_get_num_dies;
+       } else {
+               RTE_LOG(ERR, POWER, "Invalid Power Management Environment(%d) 
set\n",
+                               env);
+               ret = -1;
+               goto out;
+       }
+
+       default_uncore_env = env;
+out:
+       rte_spinlock_unlock(&global_env_cfg_lock);
+       return ret;
+}
+
+void
+rte_power_unset_uncore_env(void)
+{
+       rte_spinlock_lock(&global_env_cfg_lock);
+       default_uncore_env = UNCORE_PM_ENV_NOT_SET;
+       reset_power_uncore_function_ptrs();
+       rte_spinlock_unlock(&global_env_cfg_lock);
+}
+
+enum uncore_power_mgmt_env
+rte_power_get_uncore_env(void)
+{
+       return default_uncore_env;
+}
+
+int
+rte_power_uncore_init(unsigned int pkg, unsigned int die)
+{
+       int ret = -1;
+
+       switch (default_uncore_env) {
+       case UNCORE_PM_ENV_INTEL_UNCORE:
+               return power_intel_uncore_init(pkg, die);
+       default:
+               RTE_LOG(INFO, POWER, "Uncore Env isn't set yet!\n");
+       }
+
+       /* Auto detect Environment */
+       RTE_LOG(INFO, POWER, "Attempting to initialise Intel Uncore power 
mgmt...\n");
+       ret = power_intel_uncore_init(pkg, die);
+       if (ret == 0) {
+               rte_power_set_uncore_env(UNCORE_PM_ENV_INTEL_UNCORE);
+               goto out;
+       }
+
+       if (default_uncore_env == UNCORE_PM_ENV_NOT_SET) {
+               RTE_LOG(ERR, POWER, "Unable to set Power Management Environment 
"
+                               "for package %u Die %u\n", pkg, die);
+               ret = 0;
+       }
+out:
+       return ret;
+}
+
+int
+rte_power_uncore_exit(unsigned int pkg, unsigned int die)
+{
+       switch (default_uncore_env) {
+       case UNCORE_PM_ENV_INTEL_UNCORE:
+               return power_intel_uncore_exit(pkg, die);
+       default:
+               RTE_LOG(ERR, POWER, "Uncore Env has not been set,"
+                              "unable to exit gracefully\n");
+       }
+       return -1;
+
+}
diff --git a/lib/power/rte_power_uncore.h b/lib/power/rte_power_uncore.h
index e27f483eae..a43346b186 100644
--- a/lib/power/rte_power_uncore.h
+++ b/lib/power/rte_power_uncore.h
@@ -22,6 +22,38 @@ extern "C" {
 enum uncore_power_mgmt_env { UNCORE_PM_ENV_NOT_SET,
                UNCORE_PM_ENV_INTEL_UNCORE, UNCORE_PM_ENV_AMD_HSMP};
 
+/**
+ * Set the default uncore power management implementation. If this is not 
called prior
+ * to rte_power_uncore_init(), then auto-detect of the environment will take 
place.
+ * It is thread safe. New env can be set only in uninitialized state
+ * (thus rte_power_unset_uncore_env must be called if different env was 
already set).
+ *
+ * @param env
+ *  env. The environment in which to initialise Uncore Power Management for.
+ *
+ * @return
+ *  - 0 on success.
+ *  - Negative on error.
+ */
+__rte_experimental
+int rte_power_set_uncore_env(enum uncore_power_mgmt_env env);
+
+/**
+ * Unset the global uncore environment configuration.
+ * This can only be called after all threads have completed.
+ */
+__rte_experimental
+void rte_power_unset_uncore_env(void);
+
+/**
+ * Get the default uncore power management implementation.
+ *
+ * @return
+ *  power_management_env The configured environment.
+ */
+__rte_experimental
+enum uncore_power_mgmt_env rte_power_get_uncore_env(void);
+
 /**
  * Initialize uncore frequency management for specific die on a package.
  * It will get the available frequencies and prepare to set new die 
frequencies.
diff --git a/lib/power/version.map b/lib/power/version.map
index b8b54f768e..c22813e89a 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -52,4 +52,10 @@ EXPERIMENTAL {
        rte_power_uncore_get_num_freqs;
        rte_power_uncore_get_num_pkgs;
        rte_power_uncore_init;
+
+       # added in 23.11
+       rte_power_uncore_freqs;
+       rte_power_set_uncore_env;
+       rte_power_unset_uncore_env;
+       rte_power_get_uncore_env;
 };
-- 
2.34.1

Reply via email to