hw/riscv: Enable TPM backends
Imply the TPM sysbus devices. This allows users to add TPM devices to the RISC-V virt board. This was tested by first creating an emulated TPM device: swtpm socket --tpm2 -t -d --tpmstate dir=/tmp/tpm \ --ctrl type=unixio,path=swtpm-sock Then launching QEMU with: -chardev socket,id=chrtpm,path=swtpm-sock \ -tpmdev emulator,id=tpm0,chardev=chrtpm \ -device tpm-tis-device,tpmdev=tpm0 The TPM device can be seen in the memory tree and the generated device tree. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/942 Signed-off-by: Alistair Francis <alistair.francis@wdc.com> Reviewed-by: Edgar E. Iglesias <edgar.iglesias@amd.com> Reviewed-by: Bin Meng <bmeng.cn@gmail.com> Message-Id: <20220427234146.1130752-7-alistair.francis@opensource.wdc.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
58d5a5a78c
commit
325b7c4e75
@ -162,3 +162,23 @@ The minimal QEMU commands to run U-Boot SPL are:
|
||||
To test 32-bit U-Boot images, switch to use qemu-riscv32_smode_defconfig and
|
||||
riscv32_spl_defconfig builds, and replace ``qemu-system-riscv64`` with
|
||||
``qemu-system-riscv32`` in the command lines above to boot the 32-bit U-Boot.
|
||||
|
||||
Enabling TPM
|
||||
------------
|
||||
|
||||
A TPM device can be connected to the virt board by following the steps below.
|
||||
|
||||
First launch the TPM emulator
|
||||
|
||||
swtpm socket --tpm2 -t -d --tpmstate dir=/tmp/tpm \
|
||||
--ctrl type=unixio,path=swtpm-sock
|
||||
|
||||
Then launch QEMU with:
|
||||
|
||||
...
|
||||
-chardev socket,id=chrtpm,path=swtpm-sock \
|
||||
-tpmdev emulator,id=tpm0,chardev=chrtpm \
|
||||
-device tpm-tis-device,tpmdev=tpm0
|
||||
|
||||
The TPM device can be seen in the memory tree and the generated device
|
||||
tree and should be accessible from the guest software.
|
||||
|
@ -34,6 +34,7 @@ config RISCV_VIRT
|
||||
imply PCI_DEVICES
|
||||
imply VIRTIO_VGA
|
||||
imply TEST_DEVICES
|
||||
imply TPM_TIS_SYSBUS
|
||||
select RISCV_NUMA
|
||||
select GOLDFISH_RTC
|
||||
select MSI_NONBROKEN
|
||||
|
@ -43,6 +43,7 @@
|
||||
#include "sysemu/device_tree.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "sysemu/kvm.h"
|
||||
#include "sysemu/tpm.h"
|
||||
#include "hw/pci/pci.h"
|
||||
#include "hw/pci-host/gpex.h"
|
||||
#include "hw/display/ramfb.h"
|
||||
@ -1617,6 +1618,9 @@ static void virt_machine_class_init(ObjectClass *oc, void *data)
|
||||
hc->plug = virt_machine_device_plug_cb;
|
||||
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_RAMFB_DEVICE);
|
||||
#ifdef CONFIG_TPM
|
||||
machine_class_allow_dynamic_sysbus_dev(mc, TYPE_TPM_TIS_SYSBUS);
|
||||
#endif
|
||||
|
||||
object_class_property_add_bool(oc, "aclint", virt_get_aclint,
|
||||
virt_set_aclint);
|
||||
|
Loading…
Reference in New Issue
Block a user