mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-18 19:57:31 +00:00
config_tools: update the usage of cpu affinity param in launch script
Update the usage of cpu affinity param in launch script generation logic, use apic_id got from board XML file instead of pcpu id from scenario XML file according to the refined usage '--cpu_affinity lapic_id'. The generated script will look like this: `--cpu_affinity 0,2 \` Tracked-On: #6690 Signed-off-by: Kunhui-Li <kunhuix.li@intel.com>
This commit is contained in:
parent
8a44067f8b
commit
49b7a65876
@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
import scenario_cfg_lib
|
import scenario_cfg_lib
|
||||||
import launch_cfg_lib
|
import launch_cfg_lib
|
||||||
|
import lxml.etree
|
||||||
import common
|
import common
|
||||||
import pt
|
import pt
|
||||||
|
|
||||||
@ -531,10 +532,35 @@ def get_cpu_affinity_list(cpu_affinity, vmid):
|
|||||||
return pcpu_id_list
|
return pcpu_id_list
|
||||||
|
|
||||||
|
|
||||||
|
def get_apic_id_list(scenario_pcpu_id_list):
|
||||||
|
|
||||||
|
apic_id_list = []
|
||||||
|
board_etree = lxml.etree.parse(common.BOARD_INFO_FILE)
|
||||||
|
board_root = board_etree.getroot()
|
||||||
|
board_pcpu_list = board_root.find('CPU_PROCESSOR_INFO').text.strip().split(',')
|
||||||
|
if isinstance(board_pcpu_list, list):
|
||||||
|
board_pcpu_list = [cpu.strip() for cpu in board_pcpu_list]
|
||||||
|
|
||||||
|
if scenario_pcpu_id_list is not None:
|
||||||
|
for scenario_pcup_id in scenario_pcpu_id_list:
|
||||||
|
if scenario_pcup_id not in board_pcpu_list:
|
||||||
|
key = "scenario config error"
|
||||||
|
launch_cfg_lib.ERR_LIST[key] = "No available cpu {} in {} file.".format(scenario_pcup_id, common.BOARD_INFO_FILE)
|
||||||
|
|
||||||
|
for pcpu_id in scenario_pcpu_id_list:
|
||||||
|
apic_id = common.get_node(f"//processors/die/core/thread[cpu_id='{pcpu_id}']/apic_id/text()", board_etree)
|
||||||
|
apic_id_list.append(int(apic_id, 16))
|
||||||
|
|
||||||
|
return apic_id_list
|
||||||
|
|
||||||
|
|
||||||
def pcpu_arg_set(dm, vmid, config):
|
def pcpu_arg_set(dm, vmid, config):
|
||||||
|
|
||||||
pcpu_id_list = get_cpu_affinity_list(dm["cpu_affinity"], vmid)
|
pcpu_id_list = get_cpu_affinity_list(dm["cpu_affinity"], vmid)
|
||||||
if pcpu_id_list:
|
apic_id_list = get_apic_id_list(pcpu_id_list)
|
||||||
print(" --cpu_affinity {} \\".format(','.join(pcpu_id_list)), file=config)
|
|
||||||
|
if apic_id_list:
|
||||||
|
print(" --cpu_affinity {} \\".format(','.join([str(id) for id in apic_id_list])), file=config)
|
||||||
|
|
||||||
|
|
||||||
def dm_arg_set(names, sel, virt_io, dm, sriov, vmid, config):
|
def dm_arg_set(names, sel, virt_io, dm, sriov, vmid, config):
|
||||||
|
Loading…
Reference in New Issue
Block a user