From: Igor Mammedov <imammedo@redhat.com>
To: Auger Eric <eric.auger@redhat.com>
Cc: peter.maydell@linaro.org, Andrew Jones <drjones@redhat.com>,
gshan@redhat.com, mst@redhat.com, qemu-devel@nongnu.org,
shannon.zhaosl@gmail.com, qemu-arm@nongnu.org,
marcandre.lureau@redhat.com, stefanb@linux.ibm.com,
lersek@redhat.com, ardb@kernel.org, eric.auger.pro@gmail.com
Subject: Re: [PATCH v2 1/3] acpi: Move build_tpm2() in the generic part
Date: Tue, 12 May 2020 16:10:29 +0200 [thread overview]
Message-ID: <20200512161029.35c77730@redhat.com> (raw)
In-Reply-To: <b8b64cf5-d730-20f0-c9e5-d290b8639e5a@redhat.com>
On Wed, 6 May 2020 11:50:09 +0200
Auger Eric <eric.auger@redhat.com> wrote:
> Hi,
>
> On 5/6/20 8:33 AM, Andrew Jones wrote:
> > On Tue, May 05, 2020 at 04:44:17PM +0200, Eric Auger wrote:
> >> We plan to build the tpm2 table on ARM too. In order to reuse the
> >> generation code, let's move build_tpm2() to aml-build.c.
> >>
> >> No change in the implementation.
> >>
> >> Signed-off-by: Eric Auger <eric.auger@redhat.com>
> >> ---
> >> include/hw/acpi/aml-build.h | 2 ++
> >> hw/acpi/aml-build.c | 30 ++++++++++++++++++++++++++++++
> >> hw/i386/acpi-build.c | 30 ------------------------------
> >> 3 files changed, 32 insertions(+), 30 deletions(-)
> >>
> >> diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h
> >> index 0f4ed53d7f..a67ab4618a 100644
> >> --- a/include/hw/acpi/aml-build.h
> >> +++ b/include/hw/acpi/aml-build.h
> >> @@ -437,4 +437,6 @@ void build_slit(GArray *table_data, BIOSLinker *linker, MachineState *ms);
> >>
> >> void build_fadt(GArray *tbl, BIOSLinker *linker, const AcpiFadtData *f,
> >> const char *oem_id, const char *oem_table_id);
> >> +
> >> +void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog);
> >> #endif
> >> diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
> >> index 2c3702b882..1f7fd09112 100644
> >> --- a/hw/acpi/aml-build.c
> >> +++ b/hw/acpi/aml-build.c
> >> @@ -26,6 +26,7 @@
> >> #include "qemu/bitops.h"
> >> #include "sysemu/numa.h"
> >> #include "hw/boards.h"
> >> +#include "hw/acpi/tpm.h"
> >>
> >> static GArray *build_alloc_array(void)
> >> {
> >> @@ -1875,6 +1876,35 @@ build_hdr:
> >> "FACP", tbl->len - fadt_start, f->rev, oem_id, oem_table_id);
> >> }
> >>
> >> +void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog)
> >> +{
> >> + Acpi20TPM2 *tpm2_ptr = acpi_data_push(table_data, sizeof *tpm2_ptr);
> >> + unsigned log_addr_size = sizeof(tpm2_ptr->log_area_start_address);
> >> + unsigned log_addr_offset =
> >> + (char *)&tpm2_ptr->log_area_start_address - table_data->data;
> >> +
> >> + tpm2_ptr->platform_class = cpu_to_le16(TPM2_ACPI_CLASS_CLIENT);
> >> + if (TPM_IS_TIS_ISA(tpm_find())) {
> >> + tpm2_ptr->control_area_address = cpu_to_le64(0);
> >> + tpm2_ptr->start_method = cpu_to_le32(TPM2_START_METHOD_MMIO);
> >> + } else if (TPM_IS_CRB(tpm_find())) {
> >> + tpm2_ptr->control_area_address = cpu_to_le64(TPM_CRB_ADDR_CTRL);
> >> + tpm2_ptr->start_method = cpu_to_le32(TPM2_START_METHOD_CRB);
> >> + } else {
> >> + g_warn_if_reached();
> >> + }
> >> +
> >> + tpm2_ptr->log_area_minimum_length =
> >> + cpu_to_le32(TPM_LOG_AREA_MINIMUM_SIZE);
> >> +
> >> + /* log area start address to be filled by Guest linker */
> >> + bios_linker_loader_add_pointer(linker, ACPI_BUILD_TABLE_FILE,
> >> + log_addr_offset, log_addr_size,
> >> + ACPI_BUILD_TPMLOG_FILE, 0);
> >> + build_header(linker, table_data,
> >> + (void *)tpm2_ptr, "TPM2", sizeof(*tpm2_ptr), 4, NULL, NULL);
> >> +}
> >> +
> >
> > I'll let Igor and mst confirm/deny this, but my understanding was that the
> > build_append* API was the preferred way to create the table. Indeed, I
> > don't see too many table.field = cpu_to_le(...) lines in aml-build.c
> >
> > I realize this function is just getting moved, but maybe it should get
> > converted to the build_append* API while being moved?
>
> The reason I did not convert is that the struct is as follows
>
> struct Acpi20TPM2 {
> ACPI_TABLE_HEADER_DEF
> uint16_t platform_class;
> uint16_t reserved;
> uint64_t control_area_address;
> uint32_t start_method;
> uint8_t start_method_params[12];
> uint32_t log_area_minimum_length;
> uint64_t log_area_start_address;
> } QEMU_PACKED;
>
>
> If I understand correctly the build_append* adds the fields
> contiguously. It was not straightforward to me how to skip the
> start_method_params array.
you can use g_array_append_vals() for adding byte array (even is it's all zeros)
> While we are at it the tcpalog arg is not used. Shall I remove it?
>
> Thanks
>
> Eric
>
> >
> > Thanks,
> > drew
> >
> >
next prev parent reply other threads:[~2020-05-12 14:11 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-05 14:44 [PATCH v2 0/3] vTPM/aarch64 ACPI support Eric Auger
2020-05-05 14:44 ` [PATCH v2 1/3] acpi: Move build_tpm2() in the generic part Eric Auger
2020-05-05 16:17 ` Stefan Berger
2020-05-06 6:33 ` Andrew Jones
2020-05-06 9:50 ` Auger Eric
2020-05-12 14:10 ` Igor Mammedov [this message]
2020-05-12 14:56 ` Auger Eric
2020-05-06 9:58 ` Michael S. Tsirkin
2020-05-12 14:14 ` Igor Mammedov
2020-05-12 15:59 ` Auger Eric
2020-05-14 9:53 ` Igor Mammedov
2020-05-05 14:44 ` [PATCH v2 2/3] arm/acpi: TPM2 ACPI table support Eric Auger
2020-05-05 16:16 ` Stefan Berger
2020-05-12 14:27 ` Igor Mammedov
2020-05-12 16:06 ` Auger Eric
2020-05-05 14:44 ` [PATCH v2 3/3] arm/acpi: Add the TPM2.0 device under the DSDT Eric Auger
2020-05-08 15:24 ` Shannon Zhao
2020-05-08 15:25 ` Ard Biesheuvel
2020-05-08 19:15 ` Stefan Berger
2020-05-12 14:57 ` Igor Mammedov
2020-05-05 16:19 ` [PATCH v2 0/3] vTPM/aarch64 ACPI support Ard Biesheuvel
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=20200512161029.35c77730@redhat.com \
--to=imammedo@redhat.com \
--cc=ardb@kernel.org \
--cc=drjones@redhat.com \
--cc=eric.auger.pro@gmail.com \
--cc=eric.auger@redhat.com \
--cc=gshan@redhat.com \
--cc=lersek@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mst@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=shannon.zhaosl@gmail.com \
--cc=stefanb@linux.ibm.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.