示例#1
0
def gen_dsdt(dest_vm_acpi_path, passthru_devices, board_info):
    '''
    generate dsdt.asl
    :param dest_vm_acpi_path: the path to store generated ACPI asl code
    :param passthru_devices:
    :return:
    '''
    dsdt_asl = 'dsdt.asl'
    p_dsdt_start = r'{'
    (bdf_desc_map, bdf_vpid_map) = board_cfg_lib.get_pci_info(board_info)
    with open(os.path.join(dest_vm_acpi_path, dsdt_asl), 'w') as dest:
        lines = []
        with open(os.path.join(TEMPLATE_ACPI_PATH, dsdt_asl), 'r') as src:
            for line in src.readlines():
                lines.append(line)
                if line.startswith(p_dsdt_start):
                    for passthru_device in passthru_devices:
                        passthru_bdf = None
                        passthru_vpid = None
                        for bdf in bdf_desc_map.keys():
                            if bdf_desc_map[bdf].find(passthru_device) >= 0:
                                passthru_bdf = bdf
                                break
                        if passthru_bdf is not None and passthru_bdf in bdf_vpid_map.keys(
                        ):
                            passthru_vpid = bdf_vpid_map[passthru_bdf]
                        if passthru_device in ['TPM2']:
                            tpm2_asl = os.path.join(TEMPLATE_ACPI_PATH,
                                                    'dsdt_tpm2.asl')
                            start = False
                            with open(tpm2_asl, 'r') as tpm2_src:
                                for tpm2_line in tpm2_src.readlines():
                                    if tpm2_line.startswith('{'):
                                        start = True
                                        continue
                                    if tpm2_line.startswith('}'):
                                        start = False
                                        continue
                                    if start:
                                        lines.append(tpm2_line)
                        elif passthru_vpid is not None and passthru_vpid == TSN_DEVICE_LIST[
                                1]:
                            otn1_asl = os.path.join(TEMPLATE_ACPI_PATH,
                                                    'dsdt_tsn_otn1.asl')
                            start = False
                            with open(otn1_asl, 'r') as otn1_src:
                                for otn1_line in otn1_src.readlines():
                                    if otn1_line.startswith('{'):
                                        start = True
                                        continue
                                    if otn1_line.startswith('}'):
                                        start = False
                                        continue
                                    if start:
                                        lines.append(otn1_line)
                        else:
                            pass
        dest.writelines(lines)
def pci_devs_check(pci_bdf_devs, branch_tag, tag_str):
    """
    Check vm pci devices
    :param item: vm pci_devs item in xml
    :return: None
    """
    (bdf_desc_map, bdf_vpid_map) = board_cfg_lib.get_pci_info(common.BOARD_INFO_FILE)
    for id_key, pci_bdf_devs_list in pci_bdf_devs.items():
        for pci_bdf_dev in pci_bdf_devs_list:
            if pci_bdf_dev and pci_bdf_dev not in bdf_desc_map.keys():
                key = "vm:id={},{},{}".format(id_key, branch_tag, tag_str)
                ERR_LIST[key] = "The {} is unkonw device of PCI".format(pci_bdf_dev)
示例#3
0
def avl_pci_devs():

    pci_dev_list = []
    (bdf_desc_map,
     bdf_vpid_map) = board_cfg_lib.get_pci_info(common.BOARD_INFO_FILE)
    pci_dev_list = common.get_avl_dev_info(bdf_desc_map,
                                           PT_SUB_PCI['ethernet'])
    tmp_pci_list = common.get_avl_dev_info(bdf_desc_map, PT_SUB_PCI['sata'])
    pci_dev_list.extend(tmp_pci_list)
    tmp_pci_list = common.get_avl_dev_info(bdf_desc_map, PT_SUB_PCI['nvme'])
    pci_dev_list.extend(tmp_pci_list)

    return pci_dev_list
示例#4
0
 def __init__(self, board_info):
     self.board_info = board_info
     (self.bdf_desc_map,
      self.bdf_vpid_map) = board_cfg_lib.get_pci_info(board_info)