From: Vikram Garhwal <vikram.garhwal@amd.com>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: qemu-dev@xilinx.com, stefano.stabellini@amd.com,
xen-devel@lists.xenproject.org,
Peter Maydell <peter.maydell@linaro.org>,
Stefano Stabellini <sstabellini@kernel.org>,
Anthony Perard <anthony.perard@citrix.com>,
Paul Durrant <paul@xen.org>,
"open list:ARM TCG CPUs" <qemu-arm@nongnu.org>,
"open list:All patches CC here" <qemu-devel@nongnu.org>
Subject: Re: [QEMU][PATCH v2 10/11] hw/arm: introduce xenpv machine
Date: Fri, 2 Dec 2022 14:13:20 -0800 [thread overview]
Message-ID: <ade61d47-f8c0-09cc-1a44-faaaff87d76a@amd.com> (raw)
In-Reply-To: <871qphc0p3.fsf@linaro.org>
Hi Alex,
On 12/2/22 6:52 AM, Alex Bennée wrote:
> Vikram Garhwal <vikram.garhwal@amd.com> writes:
>
>> Add a new machine xenpv which creates a IOREQ server to register/connect with
>> Xen Hypervisor.
>>
>> Optional: When CONFIG_TPM is enabled, it also creates a tpm-tis-device, adds a
>> TPM emulator and connects to swtpm running on host machine via chardev socket
>> and support TPM functionalities for a guest domain.
>>
>> Extra command line for aarch64 xenpv QEMU to connect to swtpm:
>> -chardev socket,id=chrtpm,path=/tmp/myvtpm2/swtpm-sock \
>> -tpmdev emulator,id=tpm0,chardev=chrtpm \
>>
>> swtpm implements a TPM software emulator(TPM 1.2 & TPM 2) built on libtpms and
>> provides access to TPM functionality over socket, chardev and CUSE interface.
>> Github repo: https://github.com/stefanberger/swtpm
>> Example for starting swtpm on host machine:
>> mkdir /tmp/vtpm2
>> swtpm socket --tpmstate dir=/tmp/vtpm2 \
>> --ctrl type=unixio,path=/tmp/vtpm2/swtpm-sock &
> <snip>
>> +
>> +static void xen_enable_tpm(void)
>> +{
>> +/* qemu_find_tpm_be is only available when CONFIG_TPM is enabled. */
>> +#ifdef CONFIG_TPM
>> + Error *errp = NULL;
>> + DeviceState *dev;
>> + SysBusDevice *busdev;
>> +
>> + TPMBackend *be = qemu_find_tpm_be("tpm0");
>> + if (be == NULL) {
>> + DPRINTF("Couldn't fine the backend for tpm0\n");
>> + return;
>> + }
>> + dev = qdev_new(TYPE_TPM_TIS_SYSBUS);
>> + object_property_set_link(OBJECT(dev), "tpmdev", OBJECT(be), &errp);
>> + object_property_set_str(OBJECT(dev), "tpmdev", be->id, &errp);
>> + busdev = SYS_BUS_DEVICE(dev);
>> + sysbus_realize_and_unref(busdev, &error_fatal);
>> + sysbus_mmio_map(busdev, 0, GUEST_TPM_BASE);
> Still fails on my aarch64 Debian machine:
>
> FAILED: libqemu-aarch64-softmmu.fa.p/hw_arm_xen_arm.c.o
> cc -Ilibqemu-aarch64-softmmu.fa.p -I. -I../.. -Itarget/arm -I../../target/arm -Iqapi -Itrace -Iui -Iui/shader -I/usr/include/pixman-1 -I/usr/local/include -I/usr/include/capstone -I/usr/include/spice-server -I/usr/include/spice-1 -I/usr/include/glib-2.0 -I/usr/lib/aarch64-linux-gnu/glib-2.0/include -fdiagnostics-color=auto -Wall -Winvalid-pch -Werror -std=gnu11 -O2 -g -isystem /home/alex/lsrc/qemu.git/linux-headers -isystem linux-headers -iquote . -iquote /home/alex/lsrc/qemu.git -iquote /home/alex/lsrc/qemu.git/include -iquote /home/alex/lsrc/qemu.git/tcg/aarch64 -pthread -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wold-style-declaration -Wold-style-definition -Wtype-limits -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wempty-body -Wnested-externs -Wendif-labels -Wexpansion-to-defined -Wimplicit-fallthrough=2 -Wno-missing-include-dirs -Wno-shift-negative-value -Wno-psabi -fstack-protector-strong -fPIE -isystem../../linux-headers -isystemlinux-headers -DNEED_CPU_H '-DCONFIG_TARGET="aarch64-softmmu-config-target.h"' '-DCONFIG_DEVICES="aarch64-softmmu-config-devices.h"' -MD -MQ libqemu-aarch64-softmmu.fa.p/hw_arm_xen_arm.c.o -MF libqemu-aarch64-softmmu.fa.p/hw_arm_xen_arm.c.o.d -o libqemu-aarch64-softmmu.fa.p/hw_arm_xen_arm.c.o -c ../../hw/arm/xen_arm.c
> ../../hw/arm/xen_arm.c: In function ‘xen_enable_tpm’:
> ../../hw/arm/xen_arm.c:126:32: error: ‘GUEST_TPM_BASE’ undeclared (first use in this function); did you mean ‘GUEST_RAM_BASE’?
> 126 | sysbus_mmio_map(busdev, 0, GUEST_TPM_BASE);
> | ^~~~~~~~~~~~~~
> | GUEST_RAM_BASE
> ../../hw/arm/xen_arm.c:126:32: note: each undeclared identifier is reported only once for each function it appears in
> [2082/3246] Compiling C object libqemu-aarch64-softmmu.fa.p/hw_xen_xen-mapcache.c.o
> [2083/3246] Compiling C object libqemu-aarch64-softmmu.fa.p/hw_xen_xen-hvm-common.c.o
> ninja: build stopped: subcommand failed.
> make: *** [Makefile:165: run-ninja] Error 1
>
Do you know what Xen version your build env has?
Another way to fix this(as Julien suggested) is by setting this
GUEST_TPM_BASE value via a property or something and user can set it via
command line.
@sstabellini@kernel.org, do you think of any other fix?
>> +
>> + DPRINTF("Connected tpmdev at address 0x%lx\n", GUEST_TPM_BASE);
>> +#endif
>> +}
> If there is a minimum required version for TPM then it needs to be
> picked up by configure.
>
next prev parent reply other threads:[~2022-12-02 22:29 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20221202030003.11441-1-vikram.garhwal@amd.com>
2022-12-02 2:59 ` [QEMU][PATCH v2 01/11] hw/i386/xen/: move xen-mapcache.c to hw/xen/ Vikram Garhwal
2022-12-02 7:07 ` Philippe Mathieu-Daudé
2022-12-02 2:59 ` [QEMU][PATCH v2 02/11] hw/i386/xen: rearrange xen_hvm_init_pc Vikram Garhwal
2022-12-02 2:59 ` [QEMU][PATCH v2 03/11] hw/i386/xen/xen-hvm: move x86-specific fields out of XenIOState Vikram Garhwal
2022-12-02 2:59 ` [QEMU][PATCH v2 04/11] xen-hvm: reorganize xen-hvm and move common function to xen-hvm-common Vikram Garhwal
2022-12-02 2:59 ` [QEMU][PATCH v2 05/11] include/hw/xen/xen_common: return error from xen_create_ioreq_server Vikram Garhwal
2022-12-02 7:19 ` Philippe Mathieu-Daudé
2022-12-02 10:38 ` Philippe Mathieu-Daudé
2022-12-02 21:17 ` Stefano Stabellini
2022-12-02 2:59 ` [QEMU][PATCH v2 06/11] hw/xen/xen-hvm-common: skip ioreq creation on ioreq registration failure Vikram Garhwal
2022-12-02 2:59 ` [QEMU][PATCH v2 07/11] hw/xen/xen-hvm-common: Use g_new and error_setg_errno Vikram Garhwal
2022-12-02 7:27 ` Philippe Mathieu-Daudé
2022-12-02 8:53 ` Markus Armbruster
2022-12-02 18:20 ` Vikram Garhwal
2022-12-02 3:00 ` [QEMU][PATCH v2 08/11] accel/xen/xen-all: export xenstore_record_dm_state Vikram Garhwal
2022-12-02 3:00 ` [QEMU][PATCH v2 09/11] meson.build: do not set have_xen_pci_passthrough for aarch64 targets Vikram Garhwal
2022-12-02 3:00 ` [QEMU][PATCH v2 10/11] hw/arm: introduce xenpv machine Vikram Garhwal
2022-12-02 5:42 ` Juergen Gross
2022-12-02 7:30 ` Philippe Mathieu-Daudé
2022-12-02 14:45 ` Alex Bennée
2022-12-02 14:52 ` Alex Bennée
2022-12-02 22:13 ` Vikram Garhwal [this message]
2022-12-02 22:36 ` Stefano Stabellini
2022-12-17 15:26 ` Julien Grall
2022-12-19 13:28 ` Alex Bennée
2022-12-02 3:00 ` [QEMU][PATCH v2 11/11] meson.build: enable xenpv machine build for ARM Vikram Garhwal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ade61d47-f8c0-09cc-1a44-faaaff87d76a@amd.com \
--to=vikram.garhwal@amd.com \
--cc=alex.bennee@linaro.org \
--cc=anthony.perard@citrix.com \
--cc=paul@xen.org \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-dev@xilinx.com \
--cc=qemu-devel@nongnu.org \
--cc=sstabellini@kernel.org \
--cc=stefano.stabellini@amd.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).