examples/vm_power: respect core mask
authorDavid Hunt <david.hunt@intel.com>
Fri, 15 Jan 2021 12:52:50 +0000 (12:52 +0000)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 28 Jan 2021 22:17:18 +0000 (23:17 +0100)
When vm_power_manager is started, it takes over power management on
all cores. This should be limited to cores defined in the core mask.

When initialising, if a core is not on the coremask, skip it.
Applies to both initialisation and exit.

Signed-off-by: David Hunt <david.hunt@intel.com>
examples/vm_power_manager/channel_manager.c
examples/vm_power_manager/power_manager.c

index a263150..9dca6f6 100644 (file)
@@ -455,6 +455,9 @@ add_all_channels(const char *vm_name)
                                        CHANNEL_MGR_SOCKET_PATH, dir->d_name);
                        continue;
                }
+               if (rte_lcore_index(channel_num) == -1)
+                       continue;
+
                /* if channel has not been added previously */
                if (channel_exists(vm_info, channel_num))
                        continue;
@@ -512,6 +515,8 @@ add_channels(const char *vm_name, unsigned *channel_list,
        }
 
        for (i = 0; i < len_channel_list; i++) {
+               if (rte_lcore_index(i) == -1)
+                       continue;
 
                if (channel_list[i] >= RTE_MAX_LCORE) {
                        RTE_LOG(INFO, CHANNEL_MANAGER, "Channel(%u) is out of range "
@@ -574,6 +579,9 @@ add_host_channels(void)
        }
 
        for (i = 0; i < ci->core_count; i++) {
+               if (rte_lcore_index(i) == -1)
+                       continue;
+
                if (ci->cd[i].global_enabled_cpus == 0)
                        continue;
 
index c5cf6bf..739372d 100644 (file)
@@ -96,6 +96,9 @@ power_manager_init(void)
                max_core_num = ci->core_count;
 
        for (i = 0; i < max_core_num; i++) {
+               if (rte_lcore_index(i) == -1)
+                       continue;
+
                if (ci->cd[i].global_enabled_cpus) {
                        if (rte_power_init(i) < 0)
                                RTE_LOG(ERR, POWER_MANAGER,
@@ -170,6 +173,9 @@ power_manager_exit(void)
                max_core_num = ci->core_count;
 
        for (i = 0; i < max_core_num; i++) {
+               if (rte_lcore_index(i) == -1)
+                       continue;
+
                if (ci->cd[i].global_enabled_cpus) {
                        if (rte_power_exit(i) < 0) {
                                RTE_LOG(ERR, POWER_MANAGER, "Unable to shutdown power manager "