qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
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.
>

  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).