mirror of https://github.com/xemu-project/xemu.git
bios-tables-test: Add Q35/TPM-TIS test
Test tables specific to the TPM-TIS instantiation. The TPM2 is added in the framework. Also the DSDT is updated with the TPM. The new function should be be usable for CRB as well, later one. Signed-off-by: Eric Auger <eric.auger@redhat.com> Message-Id: <20200609125409.24179-5-eric.auger@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
c7504b9f32
commit
5da7c35e25
|
@ -262,6 +262,7 @@ tests/qtest/hd-geo-test$(EXESUF): tests/qtest/hd-geo-test.o $(libqos-obj-y)
|
|||
tests/qtest/boot-order-test$(EXESUF): tests/qtest/boot-order-test.o $(libqos-obj-y)
|
||||
tests/qtest/boot-serial-test$(EXESUF): tests/qtest/boot-serial-test.o $(libqos-obj-y)
|
||||
tests/qtest/bios-tables-test$(EXESUF): tests/qtest/bios-tables-test.o \
|
||||
tests/qtest/tpm-emu.o $(test-io-obj-y) \
|
||||
tests/qtest/boot-sector.o tests/qtest/acpi-utils.o $(libqos-obj-y)
|
||||
tests/qtest/pxe-test$(EXESUF): tests/qtest/pxe-test.o tests/qtest/boot-sector.o $(libqos-obj-y)
|
||||
tests/qtest/microbit-test$(EXESUF): tests/qtest/microbit-test.o
|
||||
|
|
|
@ -57,6 +57,9 @@
|
|||
#include "qemu/bitmap.h"
|
||||
#include "acpi-utils.h"
|
||||
#include "boot-sector.h"
|
||||
#include "tpm-emu.h"
|
||||
#include "hw/acpi/tpm.h"
|
||||
|
||||
|
||||
#define MACHINE_PC "pc"
|
||||
#define MACHINE_Q35 "q35"
|
||||
|
@ -874,6 +877,60 @@ static void test_acpi_piix4_tcg_numamem(void)
|
|||
free_test_data(&data);
|
||||
}
|
||||
|
||||
uint64_t tpm_tis_base_addr;
|
||||
|
||||
static void test_acpi_tcg_tpm(const char *machine, const char *tpm_if,
|
||||
uint64_t base)
|
||||
{
|
||||
gchar *tmp_dir_name = g_strdup_printf("qemu-test_acpi_%s_tcg_%s.XXXXXX",
|
||||
machine, tpm_if);
|
||||
char *tmp_path = g_dir_make_tmp(tmp_dir_name, NULL);
|
||||
TestState test;
|
||||
test_data data;
|
||||
GThread *thread;
|
||||
char *args, *variant = g_strdup_printf(".%s", tpm_if);
|
||||
|
||||
tpm_tis_base_addr = base;
|
||||
|
||||
module_call_init(MODULE_INIT_QOM);
|
||||
|
||||
test.addr = g_new0(SocketAddress, 1);
|
||||
test.addr->type = SOCKET_ADDRESS_TYPE_UNIX;
|
||||
test.addr->u.q_unix.path = g_build_filename(tmp_path, "sock", NULL);
|
||||
g_mutex_init(&test.data_mutex);
|
||||
g_cond_init(&test.data_cond);
|
||||
test.data_cond_signal = false;
|
||||
|
||||
thread = g_thread_new(NULL, tpm_emu_ctrl_thread, &test);
|
||||
tpm_emu_test_wait_cond(&test);
|
||||
|
||||
memset(&data, 0, sizeof(data));
|
||||
data.machine = machine;
|
||||
data.variant = variant;
|
||||
|
||||
args = g_strdup_printf(
|
||||
" -chardev socket,id=chr,path=%s"
|
||||
" -tpmdev emulator,id=dev,chardev=chr"
|
||||
" -device tpm-%s,tpmdev=dev",
|
||||
test.addr->u.q_unix.path, tpm_if);
|
||||
|
||||
test_acpi_one(args, &data);
|
||||
|
||||
g_thread_join(thread);
|
||||
g_unlink(test.addr->u.q_unix.path);
|
||||
qapi_free_SocketAddress(test.addr);
|
||||
g_rmdir(tmp_path);
|
||||
g_free(variant);
|
||||
g_free(tmp_path);
|
||||
g_free(tmp_dir_name);
|
||||
free_test_data(&data);
|
||||
}
|
||||
|
||||
static void test_acpi_q35_tcg_tpm_tis(void)
|
||||
{
|
||||
test_acpi_tcg_tpm("q35", "tis", 0xFED40000);
|
||||
}
|
||||
|
||||
static void test_acpi_tcg_dimm_pxm(const char *machine)
|
||||
{
|
||||
test_data data;
|
||||
|
@ -1037,6 +1094,7 @@ int main(int argc, char *argv[])
|
|||
return ret;
|
||||
}
|
||||
|
||||
qtest_add_func("acpi/q35/tpm-tis", test_acpi_q35_tcg_tpm_tis);
|
||||
qtest_add_func("acpi/piix4", test_acpi_piix4_tcg);
|
||||
qtest_add_func("acpi/piix4/bridge", test_acpi_piix4_tcg_bridge);
|
||||
qtest_add_func("acpi/q35", test_acpi_q35_tcg);
|
||||
|
|
Loading…
Reference in New Issue