Merge tpm 2021/06/15 v1
-----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEuBi5yt+QicLVzsZrda1lgCoLQhEFAmDIwqsACgkQda1lgCoL QhGa9QgAg0Ai+7Low6hBXiHdKi0dYzfCAIrtkcDimXNMfdyzjckOy+QANrAvAnbV PEJbQfzucdGhbEYRwPTzcEFfN853Z9JItXNcAfOaYBnFTmUayj2t1hz2hONfSvQP 6AQzNTfe7lJoroFfft+On5aLg+veZrSp+YudBn3NMM0AnMnwigvzCiSkHCWkplNf SAZcWOb9e07tiR2ZUq95VII3o6jBSE2MTXO28X6FIYnABcN7Maz6yxIxflfBVwYI GkeJ4oWsNrVntowKB9gp7DGi0InaO0SMM3OUd4r68n0+pPHMLuE6xMz+nuBazGP+ ekey0YsnJ0mKCwLFNAo38LPzM+Dcdw== =LEDV -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2021-06-15-1' into staging Merge tpm 2021/06/15 v1 # gpg: Signature made Tue 15 Jun 2021 16:09:31 BST # gpg: using RSA key B818B9CADF9089C2D5CEC66B75AD65802A0B4211 # gpg: Good signature from "Stefan Berger <stefanb@linux.vnet.ibm.com>" [unknown] # gpg: WARNING: This key is not certified with a trusted signature! # gpg: There is no indication that the signature belongs to the owner. # Primary key fingerprint: B818 B9CA DF90 89C2 D5CE C66B 75AD 6580 2A0B 4211 * remotes/stefanberger/tags/pull-tpm-2021-06-15-1: tpm: Return QMP error when TPM is disabled in build sysemu: Make TPM structures inaccessible if CONFIG_TPM is not defined acpi: Eliminate all TPM related code if CONFIG_TPM is not set arm: Eliminate all TPM related code if CONFIG_TPM is not set i386: Eliminate all TPM related code if CONFIG_TPM is not set Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
1dd259ae24
|
@ -2707,7 +2707,6 @@ TPM
|
||||||
M: Stefan Berger <stefanb@linux.ibm.com>
|
M: Stefan Berger <stefanb@linux.ibm.com>
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: tpm.c
|
F: tpm.c
|
||||||
F: stubs/tpm.c
|
|
||||||
F: hw/tpm/*
|
F: hw/tpm/*
|
||||||
F: include/hw/acpi/tpm.h
|
F: include/hw/acpi/tpm.h
|
||||||
F: include/sysemu/tpm*
|
F: include/sysemu/tpm*
|
||||||
|
|
|
@ -2044,6 +2044,7 @@ build_hdr:
|
||||||
"FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_id);
|
"FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
/*
|
/*
|
||||||
* build_tpm2 - Build the TPM2 table as specified in
|
* build_tpm2 - Build the TPM2 table as specified in
|
||||||
* table 7: TCG Hardware Interface Description Table Format for TPM 2.0
|
* table 7: TCG Hardware Interface Description Table Format for TPM 2.0
|
||||||
|
@ -2101,6 +2102,7 @@ void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
|
||||||
(void *)(table_data->data + tpm2_start),
|
(void *)(table_data->data + tpm2_start),
|
||||||
"TPM2", table_data->len - tpm2_start, 4, oem_id, oem_table_id);
|
"TPM2", table_data->len - tpm2_start, 4, oem_id, oem_table_id);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
Aml *build_crs(PCIHostState *host, CrsRangeSet *range_set, uint32_t io_offset,
|
Aml *build_crs(PCIHostState *host, CrsRangeSet *range_set, uint32_t io_offset,
|
||||||
uint32_t mmio32_offset, uint64_t mmio64_offset,
|
uint32_t mmio32_offset, uint64_t mmio64_offset,
|
||||||
|
|
|
@ -437,6 +437,7 @@ static bool vfio_platform_match(SysBusDevice *sbdev,
|
||||||
|
|
||||||
#endif /* CONFIG_LINUX */
|
#endif /* CONFIG_LINUX */
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
/*
|
/*
|
||||||
* add_tpm_tis_fdt_node: Create a DT node for TPM TIS
|
* add_tpm_tis_fdt_node: Create a DT node for TPM TIS
|
||||||
*
|
*
|
||||||
|
@ -467,6 +468,7 @@ static int add_tpm_tis_fdt_node(SysBusDevice *sbdev, void *opaque)
|
||||||
g_free(nodename);
|
g_free(nodename);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static int no_fdt_node(SysBusDevice *sbdev, void *opaque)
|
static int no_fdt_node(SysBusDevice *sbdev, void *opaque)
|
||||||
{
|
{
|
||||||
|
@ -488,7 +490,9 @@ static const BindingEntry bindings[] = {
|
||||||
TYPE_BINDING(TYPE_VFIO_AMD_XGBE, add_amd_xgbe_fdt_node),
|
TYPE_BINDING(TYPE_VFIO_AMD_XGBE, add_amd_xgbe_fdt_node),
|
||||||
VFIO_PLATFORM_BINDING("amd,xgbe-seattle-v1a", add_amd_xgbe_fdt_node),
|
VFIO_PLATFORM_BINDING("amd,xgbe-seattle-v1a", add_amd_xgbe_fdt_node),
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
TYPE_BINDING(TYPE_TPM_TIS_SYSBUS, add_tpm_tis_fdt_node),
|
TYPE_BINDING(TYPE_TPM_TIS_SYSBUS, add_tpm_tis_fdt_node),
|
||||||
|
#endif
|
||||||
TYPE_BINDING(TYPE_RAMFB_DEVICE, no_fdt_node),
|
TYPE_BINDING(TYPE_RAMFB_DEVICE, no_fdt_node),
|
||||||
TYPE_BINDING("", NULL), /* last element */
|
TYPE_BINDING("", NULL), /* last element */
|
||||||
};
|
};
|
||||||
|
|
|
@ -205,6 +205,7 @@ static void acpi_dsdt_add_gpio(Aml *scope, const MemMapEntry *gpio_memmap,
|
||||||
aml_append(scope, dev);
|
aml_append(scope, dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms)
|
static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms)
|
||||||
{
|
{
|
||||||
PlatformBusDevice *pbus = PLATFORM_BUS_DEVICE(vms->platform_bus_dev);
|
PlatformBusDevice *pbus = PLATFORM_BUS_DEVICE(vms->platform_bus_dev);
|
||||||
|
@ -236,6 +237,7 @@ static void acpi_dsdt_add_tpm(Aml *scope, VirtMachineState *vms)
|
||||||
aml_append(dev, aml_name_decl("_CRS", crs));
|
aml_append(dev, aml_name_decl("_CRS", crs));
|
||||||
aml_append(scope, dev);
|
aml_append(scope, dev);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
|
build_iort(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
|
||||||
|
@ -642,7 +644,9 @@ build_dsdt(GArray *table_data, BIOSLinker *linker, VirtMachineState *vms)
|
||||||
}
|
}
|
||||||
|
|
||||||
acpi_dsdt_add_power_button(scope);
|
acpi_dsdt_add_power_button(scope);
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
acpi_dsdt_add_tpm(scope, vms);
|
acpi_dsdt_add_tpm(scope, vms);
|
||||||
|
#endif
|
||||||
|
|
||||||
aml_append(dsdt, scope);
|
aml_append(dsdt, scope);
|
||||||
|
|
||||||
|
@ -745,11 +749,13 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
|
||||||
build_iort(tables_blob, tables->linker, vms);
|
build_iort(tables_blob, tables->linker, vms);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
if (tpm_get_version(tpm_find()) == TPM_VERSION_2_0) {
|
if (tpm_get_version(tpm_find()) == TPM_VERSION_2_0) {
|
||||||
acpi_add_table(table_offsets, tables_blob);
|
acpi_add_table(table_offsets, tables_blob);
|
||||||
build_tpm2(tables_blob, tables->linker, tables->tcpalog, vms->oem_id,
|
build_tpm2(tables_blob, tables->linker, tables->tcpalog, vms->oem_id,
|
||||||
vms->oem_table_id);
|
vms->oem_table_id);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* XSDT is pointed to by RSDP */
|
/* XSDT is pointed to by RSDP */
|
||||||
xsdt = tables_blob->len;
|
xsdt = tables_blob->len;
|
||||||
|
|
|
@ -2599,7 +2599,9 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
|
||||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE);
|
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_AMD_XGBE);
|
||||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_RAMFB_DEVICE);
|
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_RAMFB_DEVICE);
|
||||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_PLATFORM);
|
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_VFIO_PLATFORM);
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_TPM_TIS_SYSBUS);
|
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_TPM_TIS_SYSBUS);
|
||||||
|
#endif
|
||||||
mc->block_default_type = IF_VIRTIO;
|
mc->block_default_type = IF_VIRTIO;
|
||||||
mc->no_cdrom = 1;
|
mc->no_cdrom = 1;
|
||||||
mc->pci_allow_0_address = true;
|
mc->pci_allow_0_address = true;
|
||||||
|
|
|
@ -107,7 +107,9 @@ typedef struct AcpiPmInfo {
|
||||||
typedef struct AcpiMiscInfo {
|
typedef struct AcpiMiscInfo {
|
||||||
bool is_piix4;
|
bool is_piix4;
|
||||||
bool has_hpet;
|
bool has_hpet;
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
TPMVersion tpm_version;
|
TPMVersion tpm_version;
|
||||||
|
#endif
|
||||||
const unsigned char *dsdt_code;
|
const unsigned char *dsdt_code;
|
||||||
unsigned dsdt_size;
|
unsigned dsdt_size;
|
||||||
uint16_t pvpanic_port;
|
uint16_t pvpanic_port;
|
||||||
|
@ -286,7 +288,9 @@ static void acpi_get_misc_info(AcpiMiscInfo *info)
|
||||||
}
|
}
|
||||||
|
|
||||||
info->has_hpet = hpet_find();
|
info->has_hpet = hpet_find();
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
info->tpm_version = tpm_get_version(tpm_find());
|
info->tpm_version = tpm_get_version(tpm_find());
|
||||||
|
#endif
|
||||||
info->pvpanic_port = pvpanic_port();
|
info->pvpanic_port = pvpanic_port();
|
||||||
info->applesmc_io_base = applesmc_port();
|
info->applesmc_io_base = applesmc_port();
|
||||||
}
|
}
|
||||||
|
@ -1371,7 +1375,9 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
|
||||||
uint32_t nr_mem = machine->ram_slots;
|
uint32_t nr_mem = machine->ram_slots;
|
||||||
int root_bus_limit = 0xFF;
|
int root_bus_limit = 0xFF;
|
||||||
PCIBus *bus = NULL;
|
PCIBus *bus = NULL;
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
TPMIf *tpm = tpm_find();
|
TPMIf *tpm = tpm_find();
|
||||||
|
#endif
|
||||||
int i;
|
int i;
|
||||||
VMBusBridge *vmbus_bridge = vmbus_bridge_find();
|
VMBusBridge *vmbus_bridge = vmbus_bridge_find();
|
||||||
|
|
||||||
|
@ -1604,10 +1610,12 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
if (TPM_IS_TIS_ISA(tpm_find())) {
|
if (TPM_IS_TIS_ISA(tpm_find())) {
|
||||||
aml_append(crs, aml_memory32_fixed(TPM_TIS_ADDR_BASE,
|
aml_append(crs, aml_memory32_fixed(TPM_TIS_ADDR_BASE,
|
||||||
TPM_TIS_ADDR_SIZE, AML_READ_WRITE));
|
TPM_TIS_ADDR_SIZE, AML_READ_WRITE));
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
aml_append(scope, aml_name_decl("_CRS", crs));
|
aml_append(scope, aml_name_decl("_CRS", crs));
|
||||||
|
|
||||||
/* reserve GPE0 block resources */
|
/* reserve GPE0 block resources */
|
||||||
|
@ -1753,6 +1761,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
|
||||||
/* Scan all PCI buses. Generate tables to support hotplug. */
|
/* Scan all PCI buses. Generate tables to support hotplug. */
|
||||||
build_append_pci_bus_devices(scope, bus, pm->pcihp_bridge_en);
|
build_append_pci_bus_devices(scope, bus, pm->pcihp_bridge_en);
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
if (TPM_IS_TIS_ISA(tpm)) {
|
if (TPM_IS_TIS_ISA(tpm)) {
|
||||||
if (misc->tpm_version == TPM_VERSION_2_0) {
|
if (misc->tpm_version == TPM_VERSION_2_0) {
|
||||||
dev = aml_device("TPM");
|
dev = aml_device("TPM");
|
||||||
|
@ -1780,11 +1789,13 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
|
||||||
|
|
||||||
aml_append(scope, dev);
|
aml_append(scope, dev);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
aml_append(sb_scope, scope);
|
aml_append(sb_scope, scope);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
if (TPM_IS_CRB(tpm)) {
|
if (TPM_IS_CRB(tpm)) {
|
||||||
dev = aml_device("TPM");
|
dev = aml_device("TPM");
|
||||||
aml_append(dev, aml_name_decl("_HID", aml_string("MSFT0101")));
|
aml_append(dev, aml_name_decl("_HID", aml_string("MSFT0101")));
|
||||||
|
@ -1799,6 +1810,7 @@ build_dsdt(GArray *table_data, BIOSLinker *linker,
|
||||||
|
|
||||||
aml_append(sb_scope, dev);
|
aml_append(sb_scope, dev);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
aml_append(dsdt, sb_scope);
|
aml_append(dsdt, sb_scope);
|
||||||
|
|
||||||
|
@ -1828,6 +1840,7 @@ build_hpet(GArray *table_data, BIOSLinker *linker, const char *oem_id,
|
||||||
"HPET", sizeof(*hpet), 1, oem_id, oem_table_id);
|
"HPET", sizeof(*hpet), 1, oem_id, oem_table_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
static void
|
static void
|
||||||
build_tpm_tcpa(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
|
build_tpm_tcpa(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
|
||||||
const char *oem_id, const char *oem_table_id)
|
const char *oem_id, const char *oem_table_id)
|
||||||
|
@ -1854,6 +1867,7 @@ build_tpm_tcpa(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
|
||||||
(void *)(table_data->data + tcpa_start),
|
(void *)(table_data->data + tcpa_start),
|
||||||
"TCPA", sizeof(*tcpa), 2, oem_id, oem_table_id);
|
"TCPA", sizeof(*tcpa), 2, oem_id, oem_table_id);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#define HOLE_640K_START (640 * KiB)
|
#define HOLE_640K_START (640 * KiB)
|
||||||
#define HOLE_640K_END (1 * MiB)
|
#define HOLE_640K_END (1 * MiB)
|
||||||
|
@ -2403,6 +2417,7 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
|
||||||
build_hpet(tables_blob, tables->linker, x86ms->oem_id,
|
build_hpet(tables_blob, tables->linker, x86ms->oem_id,
|
||||||
x86ms->oem_table_id);
|
x86ms->oem_table_id);
|
||||||
}
|
}
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
if (misc.tpm_version != TPM_VERSION_UNSPEC) {
|
if (misc.tpm_version != TPM_VERSION_UNSPEC) {
|
||||||
if (misc.tpm_version == TPM_VERSION_1_2) {
|
if (misc.tpm_version == TPM_VERSION_1_2) {
|
||||||
acpi_add_table(table_offsets, tables_blob);
|
acpi_add_table(table_offsets, tables_blob);
|
||||||
|
@ -2414,6 +2429,7 @@ void acpi_build(AcpiBuildTables *tables, MachineState *machine)
|
||||||
x86ms->oem_id, x86ms->oem_table_id);
|
x86ms->oem_id, x86ms->oem_table_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
if (pcms->numa_nodes) {
|
if (pcms->numa_nodes) {
|
||||||
acpi_add_table(table_offsets, tables_blob);
|
acpi_add_table(table_offsets, tables_blob);
|
||||||
build_srat(tables_blob, tables->linker, machine);
|
build_srat(tables_blob, tables->linker, machine);
|
||||||
|
@ -2605,8 +2621,10 @@ void acpi_setup(void)
|
||||||
AcpiBuildTables tables;
|
AcpiBuildTables tables;
|
||||||
AcpiBuildState *build_state;
|
AcpiBuildState *build_state;
|
||||||
Object *vmgenid_dev;
|
Object *vmgenid_dev;
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
TPMIf *tpm;
|
TPMIf *tpm;
|
||||||
static FwCfgTPMConfig tpm_config;
|
static FwCfgTPMConfig tpm_config;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!x86ms->fw_cfg) {
|
if (!x86ms->fw_cfg) {
|
||||||
ACPI_BUILD_DPRINTF("No fw cfg. Bailing out.\n");
|
ACPI_BUILD_DPRINTF("No fw cfg. Bailing out.\n");
|
||||||
|
@ -2638,6 +2656,7 @@ void acpi_setup(void)
|
||||||
acpi_add_rom_blob(acpi_build_update, build_state,
|
acpi_add_rom_blob(acpi_build_update, build_state,
|
||||||
tables.linker->cmd_blob, ACPI_BUILD_LOADER_FILE);
|
tables.linker->cmd_blob, ACPI_BUILD_LOADER_FILE);
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
fw_cfg_add_file(x86ms->fw_cfg, ACPI_BUILD_TPMLOG_FILE,
|
fw_cfg_add_file(x86ms->fw_cfg, ACPI_BUILD_TPMLOG_FILE,
|
||||||
tables.tcpalog->data, acpi_data_len(tables.tcpalog));
|
tables.tcpalog->data, acpi_data_len(tables.tcpalog));
|
||||||
|
|
||||||
|
@ -2651,6 +2670,7 @@ void acpi_setup(void)
|
||||||
fw_cfg_add_file(x86ms->fw_cfg, "etc/tpm/config",
|
fw_cfg_add_file(x86ms->fw_cfg, "etc/tpm/config",
|
||||||
&tpm_config, sizeof tpm_config);
|
&tpm_config, sizeof tpm_config);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
vmgenid_dev = find_vmgenid_dev();
|
vmgenid_dev = find_vmgenid_dev();
|
||||||
if (vmgenid_dev) {
|
if (vmgenid_dev) {
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#include "hw/acpi/aml-build.h"
|
#include "hw/acpi/aml-build.h"
|
||||||
#include "sysemu/tpm.h"
|
#include "sysemu/tpm.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
|
|
||||||
#define TPM_TIS_ADDR_BASE 0xFED40000
|
#define TPM_TIS_ADDR_BASE 0xFED40000
|
||||||
#define TPM_TIS_ADDR_SIZE 0x5000
|
#define TPM_TIS_ADDR_SIZE 0x5000
|
||||||
|
|
||||||
|
@ -209,4 +211,6 @@ REG32(CRB_DATA_BUFFER, 0x80)
|
||||||
|
|
||||||
void tpm_build_ppi_acpi(TPMIf *tpm, Aml *dev);
|
void tpm_build_ppi_acpi(TPMIf *tpm, Aml *dev);
|
||||||
|
|
||||||
|
#endif /* CONFIG_TPM */
|
||||||
|
|
||||||
#endif /* HW_ACPI_TPM_H */
|
#endif /* HW_ACPI_TPM_H */
|
||||||
|
|
|
@ -15,6 +15,8 @@
|
||||||
#include "qapi/qapi-types-tpm.h"
|
#include "qapi/qapi-types-tpm.h"
|
||||||
#include "qom/object.h"
|
#include "qom/object.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
|
|
||||||
int tpm_config_parse(QemuOptsList *opts_list, const char *optarg);
|
int tpm_config_parse(QemuOptsList *opts_list, const char *optarg);
|
||||||
int tpm_init(void);
|
int tpm_init(void);
|
||||||
void tpm_cleanup(void);
|
void tpm_cleanup(void);
|
||||||
|
@ -73,4 +75,11 @@ static inline TPMVersion tpm_get_version(TPMIf *ti)
|
||||||
return TPM_IF_GET_CLASS(ti)->get_version(ti);
|
return TPM_IF_GET_CLASS(ti)->get_version(ti);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#else /* CONFIG_TPM */
|
||||||
|
|
||||||
|
#define tpm_init() (0)
|
||||||
|
#define tpm_cleanup()
|
||||||
|
|
||||||
|
#endif /* CONFIG_TPM */
|
||||||
|
|
||||||
#endif /* QEMU_TPM_H */
|
#endif /* QEMU_TPM_H */
|
||||||
|
|
|
@ -18,6 +18,8 @@
|
||||||
#include "sysemu/tpm.h"
|
#include "sysemu/tpm.h"
|
||||||
#include "qapi/error.h"
|
#include "qapi/error.h"
|
||||||
|
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
|
|
||||||
#define TYPE_TPM_BACKEND "tpm-backend"
|
#define TYPE_TPM_BACKEND "tpm-backend"
|
||||||
OBJECT_DECLARE_TYPE(TPMBackend, TPMBackendClass,
|
OBJECT_DECLARE_TYPE(TPMBackend, TPMBackendClass,
|
||||||
TPM_BACKEND)
|
TPM_BACKEND)
|
||||||
|
@ -209,4 +211,6 @@ TPMInfo *tpm_backend_query_tpm(TPMBackend *s);
|
||||||
|
|
||||||
TPMBackend *qemu_find_tpm_be(const char *id);
|
TPMBackend *qemu_find_tpm_be(const char *id);
|
||||||
|
|
||||||
#endif
|
#endif /* CONFIG_TPM */
|
||||||
|
|
||||||
|
#endif /* TPM_BACKEND_H */
|
||||||
|
|
|
@ -901,6 +901,7 @@ void hmp_info_pci(Monitor *mon, const QDict *qdict)
|
||||||
|
|
||||||
void hmp_info_tpm(Monitor *mon, const QDict *qdict)
|
void hmp_info_tpm(Monitor *mon, const QDict *qdict)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_TPM
|
||||||
TPMInfoList *info_list, *info;
|
TPMInfoList *info_list, *info;
|
||||||
Error *err = NULL;
|
Error *err = NULL;
|
||||||
unsigned int c = 0;
|
unsigned int c = 0;
|
||||||
|
@ -946,6 +947,9 @@ void hmp_info_tpm(Monitor *mon, const QDict *qdict)
|
||||||
c++;
|
c++;
|
||||||
}
|
}
|
||||||
qapi_free_TPMInfoList(info_list);
|
qapi_free_TPMInfoList(info_list);
|
||||||
|
#else
|
||||||
|
monitor_printf(mon, "TPM device not supported\n");
|
||||||
|
#endif /* CONFIG_TPM */
|
||||||
}
|
}
|
||||||
|
|
||||||
void hmp_quit(Monitor *mon, const QDict *qdict)
|
void hmp_quit(Monitor *mon, const QDict *qdict)
|
||||||
|
|
|
@ -17,7 +17,9 @@
|
||||||
#
|
#
|
||||||
# Since: 1.5
|
# Since: 1.5
|
||||||
##
|
##
|
||||||
{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ] }
|
{ 'enum': 'TpmModel', 'data': [ 'tpm-tis', 'tpm-crb', 'tpm-spapr' ],
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @query-tpm-models:
|
# @query-tpm-models:
|
||||||
#
|
#
|
||||||
|
@ -33,7 +35,8 @@
|
||||||
# <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
|
# <- { "return": [ "tpm-tis", "tpm-crb", "tpm-spapr" ] }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-tpm-models', 'returns': ['TpmModel'] }
|
{ 'command': 'query-tpm-models', 'returns': ['TpmModel'],
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @TpmType:
|
# @TpmType:
|
||||||
|
@ -46,7 +49,8 @@
|
||||||
#
|
#
|
||||||
# Since: 1.5
|
# Since: 1.5
|
||||||
##
|
##
|
||||||
{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ] }
|
{ 'enum': 'TpmType', 'data': [ 'passthrough', 'emulator' ],
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @query-tpm-types:
|
# @query-tpm-types:
|
||||||
|
@ -63,7 +67,8 @@
|
||||||
# <- { "return": [ "passthrough", "emulator" ] }
|
# <- { "return": [ "passthrough", "emulator" ] }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-tpm-types', 'returns': ['TpmType'] }
|
{ 'command': 'query-tpm-types', 'returns': ['TpmType'],
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @TPMPassthroughOptions:
|
# @TPMPassthroughOptions:
|
||||||
|
@ -79,7 +84,8 @@
|
||||||
##
|
##
|
||||||
{ 'struct': 'TPMPassthroughOptions',
|
{ 'struct': 'TPMPassthroughOptions',
|
||||||
'data': { '*path': 'str',
|
'data': { '*path': 'str',
|
||||||
'*cancel-path': 'str' } }
|
'*cancel-path': 'str' },
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @TPMEmulatorOptions:
|
# @TPMEmulatorOptions:
|
||||||
|
@ -90,7 +96,8 @@
|
||||||
#
|
#
|
||||||
# Since: 2.11
|
# Since: 2.11
|
||||||
##
|
##
|
||||||
{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' } }
|
{ 'struct': 'TPMEmulatorOptions', 'data': { 'chardev' : 'str' },
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @TpmTypeOptions:
|
# @TpmTypeOptions:
|
||||||
|
@ -104,7 +111,8 @@
|
||||||
##
|
##
|
||||||
{ 'union': 'TpmTypeOptions',
|
{ 'union': 'TpmTypeOptions',
|
||||||
'data': { 'passthrough' : 'TPMPassthroughOptions',
|
'data': { 'passthrough' : 'TPMPassthroughOptions',
|
||||||
'emulator': 'TPMEmulatorOptions' } }
|
'emulator': 'TPMEmulatorOptions' },
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @TPMInfo:
|
# @TPMInfo:
|
||||||
|
@ -122,7 +130,8 @@
|
||||||
{ 'struct': 'TPMInfo',
|
{ 'struct': 'TPMInfo',
|
||||||
'data': {'id': 'str',
|
'data': {'id': 'str',
|
||||||
'model': 'TpmModel',
|
'model': 'TpmModel',
|
||||||
'options': 'TpmTypeOptions' } }
|
'options': 'TpmTypeOptions' },
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
||||||
##
|
##
|
||||||
# @query-tpm:
|
# @query-tpm:
|
||||||
|
@ -152,4 +161,5 @@
|
||||||
# }
|
# }
|
||||||
#
|
#
|
||||||
##
|
##
|
||||||
{ 'command': 'query-tpm', 'returns': ['TPMInfo'] }
|
{ 'command': 'query-tpm', 'returns': ['TPMInfo'],
|
||||||
|
'if': 'defined(CONFIG_TPM)' }
|
||||||
|
|
|
@ -38,7 +38,6 @@ stub_ss.add(files('runstate-check.c'))
|
||||||
stub_ss.add(files('sysbus.c'))
|
stub_ss.add(files('sysbus.c'))
|
||||||
stub_ss.add(files('target-get-monitor-def.c'))
|
stub_ss.add(files('target-get-monitor-def.c'))
|
||||||
stub_ss.add(files('target-monitor-defs.c'))
|
stub_ss.add(files('target-monitor-defs.c'))
|
||||||
stub_ss.add(files('tpm.c'))
|
|
||||||
stub_ss.add(files('trace-control.c'))
|
stub_ss.add(files('trace-control.c'))
|
||||||
stub_ss.add(files('uuid.c'))
|
stub_ss.add(files('uuid.c'))
|
||||||
stub_ss.add(files('vmgenid.c'))
|
stub_ss.add(files('vmgenid.c'))
|
||||||
|
|
39
stubs/tpm.c
39
stubs/tpm.c
|
@ -1,39 +0,0 @@
|
||||||
/*
|
|
||||||
* TPM stubs
|
|
||||||
*
|
|
||||||
* This work is licensed under the terms of the GNU GPL, version 2 or later.
|
|
||||||
* See the COPYING file in the top-level directory.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "qemu/osdep.h"
|
|
||||||
#include "qapi/qapi-commands-tpm.h"
|
|
||||||
#include "sysemu/tpm.h"
|
|
||||||
#include "hw/acpi/tpm.h"
|
|
||||||
|
|
||||||
int tpm_init(void)
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void tpm_cleanup(void)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
TPMInfoList *qmp_query_tpm(Error **errp)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
TpmTypeList *qmp_query_tpm_types(Error **errp)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
TpmModelList *qmp_query_tpm_models(Error **errp)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void tpm_build_ppi_acpi(TPMIf *tpm, Aml *dev)
|
|
||||||
{
|
|
||||||
}
|
|
Loading…
Reference in a new issue