From 9305a8637ce59afb54e51a003624da125b293539 Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Fri, 24 Jul 2020 10:46:12 +0800 Subject: [PATCH] acrn-config: add passthru TPM for whl-ipc-i5/i7 Add support to generate passthru TPM information for whl-ipc-i5/i7. Tracked-On: #5077 Signed-off-by: Wei Liu Acked-by: Victor Sun --- misc/acrn-config/board_config/misc_cfg_h.py | 13 +++++++++++++ misc/acrn-config/library/board_cfg_lib.py | 12 ++++++++++++ .../scenario_config/vm_configurations_c.py | 9 +++++++++ 3 files changed, 34 insertions(+) diff --git a/misc/acrn-config/board_config/misc_cfg_h.py b/misc/acrn-config/board_config/misc_cfg_h.py index 7a1f3c1c3..581bbe6cf 100644 --- a/misc/acrn-config/board_config/misc_cfg_h.py +++ b/misc/acrn-config/board_config/misc_cfg_h.py @@ -5,6 +5,7 @@ import common import board_cfg_lib +import scenario_cfg_lib MISC_CFG_HEADER = """#ifndef MISC_CFG_H #define MISC_CFG_H""" @@ -238,6 +239,18 @@ def generate_file(config): for cat_mask in cat_mask_list: print("#define CLOS_MASK_{}\t\t\t{}U".format(idx, cat_mask), file=config) idx += 1 + print("", file=config) + + vm0_pre_launch = False + common.get_vm_types() + for vm_idx,vm_type in common.VM_TYPES.items(): + if vm_idx == 0 and scenario_cfg_lib.VM_DB[vm_type]['load_type'] == "PRE_LAUNCHED_VM": + vm0_pre_launch = True + + if vm0_pre_launch and board_cfg_lib.is_tpm_passthru(): + print("#define VM0_PASSTHROUGH_TPM", file=config) + print("#define VM0_TPM_BUFFER_BASE_ADDR 0xFED40000UL", file=config) + print("#define VM0_TPM_BUFFER_SIZE 0x5000UL", file=config) print("", file=config) diff --git a/misc/acrn-config/library/board_cfg_lib.py b/misc/acrn-config/library/board_cfg_lib.py index b2e42041e..d392e131b 100644 --- a/misc/acrn-config/library/board_cfg_lib.py +++ b/misc/acrn-config/library/board_cfg_lib.py @@ -32,6 +32,8 @@ KNOWN_HIDDEN_PDEVS_BOARD_DB = { TSN_DEVS = ["8086:4b30", "8086:4b31", "8086:4b32", "8086:4ba0", "8086:4ba1", "8086:4ba2", "8086:4bb0", "8086:4bb1", "8086:4bb2", "8086:a0ac", "8086:43ac", "8086:43a2"] +TPM_PASSTHRU_BOARD = ['whl-ipc-i5', 'whl-ipc-i7'] + KNOWN_CAPS_PCI_DEVS_DB = { "TSN":TSN_DEVS, } @@ -557,3 +559,13 @@ def get_known_caps_pci_devs(): break return known_caps_pci_devs + + +def is_tpm_passthru(): + + tpm_passthru = False + (_, board) = common.get_board_name() + if board in TPM_PASSTHRU_BOARD: + tpm_passthru = True + + return tpm_passthru diff --git a/misc/acrn-config/scenario_config/vm_configurations_c.py b/misc/acrn-config/scenario_config/vm_configurations_c.py index a773fcfdb..8d8800c79 100644 --- a/misc/acrn-config/scenario_config/vm_configurations_c.py +++ b/misc/acrn-config/scenario_config/vm_configurations_c.py @@ -344,6 +344,15 @@ def gen_pre_launch_vm(vm_type, vm_i, scenario_items, 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) + if vm_i == 0 and board_cfg_lib.is_tpm_passthru(): + print("#ifdef VM0_PASSTHROUGH_TPM", file=config) + print("\t\t.pt_tpm2 = true,", file=config) + print("\t\t.mmiodevs[0] = {", file=config) + print("\t\t\t.base_gpa = 0xFED40000UL,", file=config) + print("\t\t\t.base_hpa = VM0_TPM_BUFFER_BASE_ADDR,", file=config) + print("\t\t\t.size = VM0_TPM_BUFFER_SIZE,", file=config) + print("\t\t},", file=config) + print("#endif", file=config) print("\t},", file=config)