mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-09-26 03:04:31 +00:00
acrn-config: configuration source refactor for new layout
Now the hypervisor configuration source code layout is changed, so acrn-config need to change accordingly to make sure XML based configuration build success; Tracked-On: #5077 Signed-off-by: Wei Liu <weix.w.liu@intel.com> Acked-by: Victor Sun <victor.sun@intel.com>
This commit is contained in:
@@ -26,11 +26,11 @@ def generate_file(vm_info, config):
|
||||
:param config: it is pointer for for file write to
|
||||
:return: None
|
||||
"""
|
||||
sub_name_count = board_cfg_lib.parser_pci()
|
||||
board_cfg_lib.parser_pci()
|
||||
|
||||
compared_bdf = []
|
||||
|
||||
for cnt_sub_name in sub_name_count.keys():
|
||||
for cnt_sub_name in board_cfg_lib.SUB_NAME_COUNT.keys():
|
||||
i_cnt = 0
|
||||
for bdf, bar_attr in board_cfg_lib.PCI_DEV_BAR_DESC.pci_dev_dic.items():
|
||||
if cnt_sub_name == bar_attr.name and bdf not in compared_bdf:
|
||||
@@ -42,34 +42,32 @@ def generate_file(vm_info, config):
|
||||
|
||||
i_cnt += 1
|
||||
|
||||
idx = 0
|
||||
print("{}".format(scenario_cfg_lib.HEADER_LICENSE), file=config)
|
||||
print("", file=config)
|
||||
print("#include <vm_config.h>", file=config)
|
||||
print("#include <pci_devices.h>", file=config)
|
||||
print("#include <vpci.h>", file=config)
|
||||
print("#include <vbar_base.h>", file=config)
|
||||
print("#include <mmu.h>", file=config)
|
||||
print("#include <page.h>", file=config)
|
||||
print("", file=config)
|
||||
print("/* The vbar_base info of pt devices is included in device MACROs which defined in",
|
||||
file=config)
|
||||
print(" * arch/x86/configs/$(CONFIG_BOARD)/pci_devices.h.", file=config)
|
||||
print(" * The memory range of vBAR should exactly match with the e820 layout of VM.",
|
||||
file=config)
|
||||
print(" */", file=config)
|
||||
for vm_i, pci_bdf_devs_list in vm_info.cfg_pci.pci_devs.items():
|
||||
pci_cnt = 1
|
||||
if not pci_bdf_devs_list:
|
||||
continue
|
||||
|
||||
pci_cnt = 1
|
||||
if idx == 0:
|
||||
print("", file=config)
|
||||
print("#define PTDEV(PCI_DEV)\t\tPCI_DEV, PCI_DEV##_VBAR",file=config)
|
||||
print("", file=config)
|
||||
print("struct acrn_vm_pci_dev_config " +
|
||||
"vm{}_pci_devs[{}] = {{".format(vm_i, vm_info.cfg_pci.pci_dev_num[vm_i]), file=config)
|
||||
"vm{}_pci_devs[VM{}_CONFIG_PCI_DEV_NUM] = {{".format(vm_i, vm_i), file=config)
|
||||
print("\t{", file=config)
|
||||
print("\t\t.emu_type = {},".format(PCI_DEV_TYPE[0]), file=config)
|
||||
print("\t\t.vbdf.bits = {.b = 0x00U, .d = 0x00U, .f = 0x00U},", file=config)
|
||||
print("\t\t.vdev_ops = &vhostbridge_ops,", file=config)
|
||||
print("\t},", file=config)
|
||||
|
||||
idx += 1
|
||||
for pci_bdf_dev in pci_bdf_devs_list:
|
||||
if not pci_bdf_dev:
|
||||
continue
|
||||
@@ -81,7 +79,7 @@ def generate_file(vm_info, config):
|
||||
print("\t\t.vbdf.bits = {{.b = 0x00U, .d = 0x0{}U, .f = 0x00U}},".format(pci_cnt), file=config)
|
||||
for bdf, bar_attr in board_cfg_lib.PCI_DEV_BAR_DESC.pci_dev_dic.items():
|
||||
if bdf == pci_bdf_dev:
|
||||
print("\t\t{},".format(board_cfg_lib.PCI_DEV_BAR_DESC.pci_dev_dic[bdf].name_w_i_cnt), file=config)
|
||||
print("\t\tPTDEV({}),".format(board_cfg_lib.PCI_DEV_BAR_DESC.pci_dev_dic[bdf].name_w_i_cnt), file=config)
|
||||
else:
|
||||
continue
|
||||
print("\t},", file=config)
|
||||
|
@@ -20,8 +20,7 @@ import board_defconfig
|
||||
from hv_item import HvInfo
|
||||
|
||||
ACRN_PATH = common.SOURCE_ROOT_DIR
|
||||
ACRN_CONFIG_DEF = ACRN_PATH + 'hypervisor/scenarios/'
|
||||
ACRN_CONFIGS = ACRN_PATH + "hypervisor/arch/x86/configs/"
|
||||
ACRN_CONFIG_DEF = ACRN_PATH + 'misc/vm_configs/scenarios/'
|
||||
GEN_FILE = ["vm_configurations.h", "vm_configurations.c", "pci_dev.c", ".config"]
|
||||
|
||||
|
||||
@@ -148,20 +147,20 @@ def main(args):
|
||||
|
||||
if params['--out']:
|
||||
if os.path.isabs(params['--out']):
|
||||
scenario_dir = os.path.join(params['--out'], scenario + '/')
|
||||
config_hv = os.path.join(params['--out'], board_name + GEN_FILE[3])
|
||||
scen_output = params['--out'] + "/scenarios/" + scenario + "/"
|
||||
else:
|
||||
scenario_dir = os.path.join(ACRN_PATH + params['--out'], scenario + '/')
|
||||
config_hv = os.path.join(ACRN_PATH + params['--out'], board_name + GEN_FILE[3])
|
||||
scen_output = ACRN_PATH + params['--out'] + "/scenarios/" + scenario + "/"
|
||||
else:
|
||||
scenario_dir = os.path.join(ACRN_CONFIG_DEF, scenario + '/')
|
||||
config_hv = os.path.join(ACRN_CONFIGS, board_name + GEN_FILE[3])
|
||||
common.print_yel("{}".format("Override board defconfig...", warn=True))
|
||||
common.mkdir(scenario_dir)
|
||||
scen_output = ACRN_CONFIG_DEF + "/scenarios/" + scenario + "/"
|
||||
|
||||
vm_config_h = scenario_dir + GEN_FILE[0]
|
||||
vm_config_c = scenario_dir + GEN_FILE[1]
|
||||
pci_config_c = scenario_dir + GEN_FILE[2]
|
||||
scen_board = scen_output + board_name + "/"
|
||||
common.mkdir(scen_board)
|
||||
common.mkdir(scen_output)
|
||||
|
||||
vm_config_h = scen_output + GEN_FILE[0]
|
||||
vm_config_c = scen_output + GEN_FILE[1]
|
||||
pci_config_c = scen_board + GEN_FILE[2]
|
||||
config_hv = scen_board + board_name + GEN_FILE[3]
|
||||
|
||||
# parse the scenario.xml
|
||||
get_scenario_item_values(params['--board'], params['--scenario'])
|
||||
|
@@ -341,7 +341,7 @@ def gen_pre_launch_vm(vm_type, vm_i, scenario_items, config):
|
||||
return err_dic
|
||||
|
||||
if vm_info.cfg_pci.pci_devs[vm_i] and vm_info.cfg_pci.pci_devs[vm_i] != None:
|
||||
print("\t\t.pci_dev_num = {}U,".format(vm_info.cfg_pci.pci_dev_num[vm_i]), file=config)
|
||||
print("\t\t.pci_dev_num = VM{}_CONFIG_PCI_DEV_NUM,".format(vm_i), file=config)
|
||||
print("\t\t.pci_devs = vm{}_pci_devs,".format(vm_i), file=config)
|
||||
|
||||
print("\t},", file=config)
|
||||
@@ -370,7 +370,7 @@ def pre_launch_definiation(vm_info, config):
|
||||
if "PRE_LAUNCHED_VM" != scenario_cfg_lib.VM_DB[vm_type]['load_type']:
|
||||
continue
|
||||
print("extern struct acrn_vm_pci_dev_config " +
|
||||
"vm{}_pci_devs[{}];".format(vm_i, vm_info.cfg_pci.pci_dev_num[vm_i]), file=config)
|
||||
"vm{}_pci_devs[VM{}_CONFIG_PCI_DEV_NUM];".format(vm_i, vm_i), file=config)
|
||||
print("", file=config)
|
||||
|
||||
def generate_file(scenario_items, config):
|
||||
|
@@ -34,7 +34,7 @@ def cpu_affinity_output(vm_info, i, config):
|
||||
return
|
||||
|
||||
cpu_bits = vm_info.get_cpu_bitmap(i)
|
||||
print("#define VM{0}_CONFIG_CPU_AFFINITY\t\t{1}".format(
|
||||
print("#define VM{0}_CONFIG_CPU_AFFINITY {1}".format(
|
||||
i, cpu_bits['cpu_map']), file=config)
|
||||
|
||||
def clos_config_output(scenario_items, i, config):
|
||||
@@ -53,10 +53,16 @@ def clos_config_output(scenario_items, i, config):
|
||||
|
||||
def scenario_vm_num(scenario_items, config):
|
||||
|
||||
print("", file=config)
|
||||
print("/* SOS_VM_NUM can only be 0U or 1U;", file=config)
|
||||
print(" * When SOS_VM_NUM is 0U, MAX_POST_VM_NUM must be 0U too;", file=config)
|
||||
print(" * MAX_POST_VM_NUM must be bigger than CONFIG_MAX_KATA_VM_NUM;", file=config)
|
||||
print(" */", file=config)
|
||||
|
||||
load_type_cnt = scenario_items['vm'].load_order_cnt
|
||||
print("#define PRE_VM_NUM\t\t{}U".format(load_type_cnt.pre_vm), file=config)
|
||||
print("#define SOS_VM_NUM\t\t{}U".format(load_type_cnt.sos_vm), file=config)
|
||||
print("#define MAX_POST_VM_NUM\t\t{}U".format(load_type_cnt.post_vm), file=config)
|
||||
print("#define PRE_VM_NUM\t\t\t{}U".format(load_type_cnt.pre_vm), file=config)
|
||||
print("#define SOS_VM_NUM\t\t\t{}U".format(load_type_cnt.sos_vm), file=config)
|
||||
print("#define MAX_POST_VM_NUM\t\t\t{}U".format(load_type_cnt.post_vm), file=config)
|
||||
print("#define CONFIG_MAX_KATA_VM_NUM\t\t{}U".format(scenario_cfg_lib.KATA_VM_COUNT), file=config)
|
||||
|
||||
|
||||
@@ -72,16 +78,17 @@ def gen_pre_launch_vm(scenario_items, config):
|
||||
cpu_bits = vm_info.get_cpu_bitmap(vm_i)
|
||||
cpu_affinity_output(vm_info, vm_i, config)
|
||||
clos_config_output(scenario_items, vm_i, config)
|
||||
print("#define VM{0}_CONFIG_MEM_START_HPA\t\t{1}UL".format(
|
||||
print("#define VM{0}_CONFIG_MEM_START_HPA {1}UL".format(
|
||||
vm_i, vm_info.mem_info.mem_start_hpa[vm_i]), file=config)
|
||||
print("#define VM{0}_CONFIG_MEM_SIZE\t\t\t{1}UL".format(
|
||||
print("#define VM{0}_CONFIG_MEM_SIZE {1}UL".format(
|
||||
vm_i, vm_info.mem_info.mem_size[vm_i]), file=config)
|
||||
if vm_info.mem_info.mem_start_hpa2[vm_i] not in (None, ''):
|
||||
print("#define VM{0}_CONFIG_MEM_START_HPA2\t\t{1}UL".format(
|
||||
print("#define VM{0}_CONFIG_MEM_START_HPA2 {1}UL".format(
|
||||
vm_i, vm_info.mem_info.mem_start_hpa2[vm_i]), file=config)
|
||||
print("#define VM{0}_CONFIG_MEM_SIZE_HPA2\t\t{1}UL".format(
|
||||
print("#define VM{0}_CONFIG_MEM_SIZE_HPA2 {1}UL".format(
|
||||
vm_i, vm_info.mem_info.mem_size_hpa2[vm_i]), file=config)
|
||||
|
||||
print("#define VM{}_CONFIG_PCI_DEV_NUM {}U".format(vm_i, vm_info.cfg_pci.pci_dev_num[vm_i]), file=config)
|
||||
print("", file=config)
|
||||
vm_i += 1
|
||||
|
||||
@@ -89,26 +96,34 @@ def gen_pre_launch_vm(scenario_items, config):
|
||||
def gen_post_launch_header(scenario_items, config):
|
||||
vm_i = 0
|
||||
vm_info = scenario_items['vm']
|
||||
is_post_vm_available = False
|
||||
for vm_type in common.VM_TYPES.values():
|
||||
if "POST_LAUNCHED_VM" != scenario_cfg_lib.VM_DB[vm_type]['load_type']:
|
||||
vm_i += 1
|
||||
continue
|
||||
|
||||
is_post_vm_available = True
|
||||
cpu_affinity_output(vm_info, vm_i, config)
|
||||
clos_config_output(scenario_items, vm_i, config)
|
||||
vm_i += 1
|
||||
|
||||
if is_post_vm_available:
|
||||
print("", file=config)
|
||||
|
||||
|
||||
def gen_sos_header(scenario_items, config):
|
||||
|
||||
if 'SOS_VM' not in common.VM_TYPES.values():
|
||||
return
|
||||
print("", file=config)
|
||||
print("#define SOS_VM_BOOTARGS\t\t\tSOS_ROOTFS\t\\", file=config)
|
||||
print("\t\t\t\t\tSOS_CONSOLE\t\\", file=config)
|
||||
print("\t\t\t\t\tSOS_IDLE\t\\", file=config)
|
||||
print("\t\t\t\t\tSOS_BOOTARGS_DIFF", file=config)
|
||||
|
||||
for vm_i,vm_type in common.VM_TYPES.items():
|
||||
if vm_type == 'SOS_VM':
|
||||
clos_config_output(scenario_items, vm_i, config)
|
||||
print("", file=config)
|
||||
|
||||
|
||||
def gen_header_file(scenario_items, config):
|
||||
@@ -120,15 +135,15 @@ def gen_header_file(scenario_items, config):
|
||||
|
||||
def get_dm_owned_guest_flag_mask(vm_info, config):
|
||||
|
||||
print("", file=config)
|
||||
if "SOS_VM" not in common.VM_TYPES.values():
|
||||
print("#define DM_OWNED_GUEST_FLAG_MASK\t0UL", file=config)
|
||||
print("#define DM_OWNED_GUEST_FLAG_MASK 0UL", file=config)
|
||||
else:
|
||||
print("/* Bits mask of guest flags that can be programmed by device model." +
|
||||
" Other bits are set by hypervisor only */", file=config)
|
||||
print("#define DM_OWNED_GUEST_FLAG_MASK\t" +
|
||||
print("#define DM_OWNED_GUEST_FLAG_MASK " +
|
||||
"(GUEST_FLAG_SECURE_WORLD_ENABLED | GUEST_FLAG_LAPIC_PASSTHROUGH | \\\n" +
|
||||
"\t\t\t\t\t\tGUEST_FLAG_RT | GUEST_FLAG_IO_COMPLETION_POLLING)", file=config)
|
||||
|
||||
print("", file=config)
|
||||
|
||||
|
||||
@@ -141,15 +156,10 @@ def generate_file(scenario_items, config):
|
||||
vm_info = scenario_items['vm']
|
||||
gen_common_header(config)
|
||||
|
||||
print("#include <misc_cfg.h>\n", file=config)
|
||||
for vm_i,pci_dev_num in vm_info.cfg_pci.pci_dev_num.items():
|
||||
if pci_dev_num >= 2:
|
||||
print("#include <pci_devices.h>", file=config)
|
||||
break
|
||||
get_dm_owned_guest_flag_mask(vm_info, config)
|
||||
print("#include <misc_cfg.h>", file=config)
|
||||
print("#include <pci_devices.h>", file=config)
|
||||
scenario_vm_num(scenario_items, config)
|
||||
print("", file=config)
|
||||
get_dm_owned_guest_flag_mask(vm_info, config)
|
||||
|
||||
gen_header_file(scenario_items, config)
|
||||
print("", file=config)
|
||||
print("{0}".format(VM_END_DEFINE), file=config)
|
||||
|
Reference in New Issue
Block a user