From 9f43d200d677abc8e9ef5e0b7214b00d607b4069 Mon Sep 17 00:00:00 2001 From: dongshen Date: Wed, 9 Sep 2020 13:05:45 -0700 Subject: [PATCH] acrn-config: define VMx_BOOT_ARGS macros in misc_cfg_h.py so that vm_configurations.h/vm_configurations.c are consistent for different boards Debugged and refactored the split_cmdline() function Tracked-On: #5229 Signed-off-by: dongshen --- misc/acrn-config/board_config/misc_cfg_h.py | 41 +++++++++++++++++-- .../scenario_config/vm_configurations_c.py | 27 +----------- 2 files changed, 39 insertions(+), 29 deletions(-) diff --git a/misc/acrn-config/board_config/misc_cfg_h.py b/misc/acrn-config/board_config/misc_cfg_h.py index cc8f92795..4aa3f09b8 100644 --- a/misc/acrn-config/board_config/misc_cfg_h.py +++ b/misc/acrn-config/board_config/misc_cfg_h.py @@ -153,10 +153,10 @@ def cpu_affinity_output(cpu_bits, i, config): if "SOS_VM" == common.VM_TYPES[i]: print("", file=config) - print("#define SOS_VM_CONFIG_CPU_AFFINITY {0}".format( + print("#define SOS_VM_CONFIG_CPU_AFFINITY\t{0}".format( cpu_bits['cpu_map']), file=config) else: - print("#define VM{0}_CONFIG_CPU_AFFINITY {1}".format( + print("#define VM{0}_CONFIG_CPU_AFFINITY\t{1}".format( i, cpu_bits['cpu_map']), file=config) @@ -190,12 +190,43 @@ def pci_dev_num_per_vm_gen(config): for vm_i,vm_type in common.VM_TYPES.items(): if "POST_LAUNCHED_VM" == scenario_cfg_lib.VM_DB[vm_type]['load_type']: if shmem_enabled == 'y' and vm_i in shmem_num.keys(): - print("#define VM{}_CONFIG_PCI_DEV_NUM {}U".format(vm_i, shmem_num[vm_i]), file=config) + print("#define VM{}_CONFIG_PCI_DEV_NUM\t{}U".format(vm_i, shmem_num[vm_i]), file=config) elif "PRE_LAUNCHED_VM" == scenario_cfg_lib.VM_DB[vm_type]['load_type']: shmem_num_i = 0 if shmem_enabled == 'y' and vm_i in shmem_num.keys(): shmem_num_i = shmem_num[vm_i] - print("#define VM{}_CONFIG_PCI_DEV_NUM {}U".format(vm_i, pci_dev_num[vm_i] + shmem_num_i), file=config) + print("#define VM{}_CONFIG_PCI_DEV_NUM\t{}U".format(vm_i, pci_dev_num[vm_i] + shmem_num_i), file=config) + + print("", file=config) + + +def split_cmdline(cmd_str, config): + + cmd_list = [i for i in cmd_str.strip('"').split()] + if not cmd_list: return + + last_idx = len(cmd_list) - 1 + for idx, cmd_arg in enumerate(cmd_list): + if idx == 0: + print('"', end="", file=config) + elif idx % 4 == 0: + print("\\\n", end="", file=config) + + if idx == last_idx: + print('{}"'.format(cmd_arg), file=config) + else: + print('{} '.format(cmd_arg), end="", file=config) + + +def boot_args_per_vm_gen(config): + kern_args = common.get_leaf_tag_map(common.SCENARIO_INFO_FILE, "os_config", "bootargs") + + for vm_i,vm_type in common.VM_TYPES.items(): + if "PRE_LAUNCHED_VM" == scenario_cfg_lib.VM_DB[vm_type]['load_type']: + if vm_i in kern_args.keys() and kern_args[vm_i]: + print("#define VM{}_BOOT_ARGS\t".format(vm_i), end="", file=config) + split_cmdline(kern_args[vm_i].strip(), config) + print("", file=config) print("", file=config) @@ -365,6 +396,8 @@ def generate_file(config): pci_dev_num_per_vm_gen(config) + boot_args_per_vm_gen(config) + print("{}".format(MISC_CFG_END), file=config) return err_dic diff --git a/misc/acrn-config/scenario_config/vm_configurations_c.py b/misc/acrn-config/scenario_config/vm_configurations_c.py index cc1981221..ad48884fe 100644 --- a/misc/acrn-config/scenario_config/vm_configurations_c.py +++ b/misc/acrn-config/scenario_config/vm_configurations_c.py @@ -139,29 +139,6 @@ def vuart_output(vm_type, i, vm_info, config): print("\t\t},", file=config) -def split_cmdline(cmd_str, config): - - cmd_list = [i for i in cmd_str.strip('"').split() if i != ''] - - if cmd_list: - cmd_len = len(cmd_list) - i = 0 - for cmd_arg in cmd_list: - if not cmd_arg.strip(): - continue - - if i == 0: - print('"', end="", file=config) - - if i % 4 == 0 and i != 0: - print("\\\n\t\t\t\t", end="", file=config) - - print('{} '.format(cmd_arg), end="", file=config) - i += 1 - if i == cmd_len: - print('"', file=config) - - def is_need_epc(epc_section, i, config): """ Check if it is need epc section @@ -334,8 +311,8 @@ def gen_pre_launch_vm(vm_type, vm_i, scenario_items, config): print("\t\t\t.kernel_entry_addr = {0},".format(vm_info.os_cfg.kern_entry_addr[vm_i]), file=config) if vm_i in vm_info.os_cfg.kern_args.keys() and vm_info.os_cfg.kern_args[vm_i]: - print("\t\t\t.bootargs = ", end="", file=config) - split_cmdline(vm_info.os_cfg.kern_args[vm_i].strip(), config) + print("\t\t\t.bootargs = VM{0}_BOOT_ARGS,".format(vm_i), file=config) + print("\t\t},", file=config) print("\t\t.acpi_config = {", file=config) print('\t\t\t.acpi_mod_tag = "ACPI_VM{}",'.format(vm_i), file=config)