mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-06-22 05:30:24 +00:00
acrn-config: get default pci mmcfg base address
parse default pci mmcfg base address from target board. Tracked-On: #4173 Signed-off-by: Wei Liu <weix.w.liu@intel.com> Acked-by: Victor Sun <victor.sun@intel.com>
This commit is contained in:
parent
0d998d6ac6
commit
0e273e996c
@ -168,6 +168,7 @@ def platform_info_parser(config, default_platform):
|
|||||||
write_direct_info_parser(config, "<WAKE_VECTOR_INFO>", "</WAKE_VECTOR_INFO>")
|
write_direct_info_parser(config, "<WAKE_VECTOR_INFO>", "</WAKE_VECTOR_INFO>")
|
||||||
write_direct_info_parser(config, "<RESET_REGISTER_INFO>", "</RESET_REGISTER_INFO>")
|
write_direct_info_parser(config, "<RESET_REGISTER_INFO>", "</RESET_REGISTER_INFO>")
|
||||||
drhd_info_parser(config)
|
drhd_info_parser(config)
|
||||||
|
write_direct_info_parser(config, "<MMCFG_BASE_INFO>", "</MMCFG_BASE_INFO>")
|
||||||
|
|
||||||
|
|
||||||
def generate_file(config, default_platform):
|
def generate_file(config, default_platform):
|
||||||
|
@ -115,6 +115,9 @@ DWORD_LEN = 4
|
|||||||
PACK_TYPE_LEN = 12
|
PACK_TYPE_LEN = 12
|
||||||
WAKE_VECTOR_OFFSET_32 = 12
|
WAKE_VECTOR_OFFSET_32 = 12
|
||||||
WAKE_VECTOR_OFFSET_64 = 24
|
WAKE_VECTOR_OFFSET_64 = 24
|
||||||
|
MCFG_OFFSET = 4
|
||||||
|
MCFG_ENTRY1_OFFSET = 60
|
||||||
|
MCFG_ENTRY0_BASE_OFFSET = 44
|
||||||
|
|
||||||
S3_PKG = SxPkg()
|
S3_PKG = SxPkg()
|
||||||
S5_PKG = SxPkg()
|
S5_PKG = SxPkg()
|
||||||
@ -559,6 +562,23 @@ def store_px_data(sysnode, config):
|
|||||||
|
|
||||||
p_cnt += 1
|
p_cnt += 1
|
||||||
|
|
||||||
|
def store_mmcfg_base_data(mmcfg_node, config):
|
||||||
|
|
||||||
|
print("\t/* PCI mmcfg base of MCFG */", file=config)
|
||||||
|
with open(mmcfg_node, 'rb') as mmcfg:
|
||||||
|
mmcfg.read(MCFG_OFFSET)
|
||||||
|
mmcfg_len_obj = mmcfg.read(DWORD_LEN)
|
||||||
|
mmcfg_len_int = int.from_bytes(mmcfg_len_obj, 'little')
|
||||||
|
|
||||||
|
if mmcfg_len_int > MCFG_ENTRY1_OFFSET:
|
||||||
|
parser_lib.print_red("Multiple PCI segment groups is not supported!", err=True)
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
mmcfg.seek(MCFG_ENTRY0_BASE_OFFSET, 0)
|
||||||
|
mmcfg_base_addr_obj = mmcfg.read(DWORD_LEN)
|
||||||
|
mmcfg_base_addr = int.from_bytes(mmcfg_base_addr_obj, 'little')
|
||||||
|
print("\t#define DEFAULT_PCI_MMCFG_BASE {}UL".format(hex(mmcfg_base_addr)), file=config)
|
||||||
|
|
||||||
|
|
||||||
def gen_acpi_info(config):
|
def gen_acpi_info(config):
|
||||||
"""This will parser the sys node form SYS_PATH and generate ACPI info
|
"""This will parser the sys node form SYS_PATH and generate ACPI info
|
||||||
@ -590,6 +610,10 @@ def gen_acpi_info(config):
|
|||||||
store_px_data(SYS_PATH[2], config)
|
store_px_data(SYS_PATH[2], config)
|
||||||
print("{0}".format("\t</PX_INFO>\n"), file=config)
|
print("{0}".format("\t</PX_INFO>\n"), file=config)
|
||||||
|
|
||||||
|
print("{0}".format("\t<MMCFG_BASE_INFO>"), file=config)
|
||||||
|
store_mmcfg_base_data(SYS_PATH[1] + 'MCFG', config)
|
||||||
|
print("{0}".format("\t</MMCFG_BASE_INFO>\n"), file=config)
|
||||||
|
|
||||||
|
|
||||||
def generate_info(board_file):
|
def generate_info(board_file):
|
||||||
"""This will generate ACPI info from board file
|
"""This will generate ACPI info from board file
|
||||||
|
Loading…
Reference in New Issue
Block a user