From: Samuel Ortiz <sameo@linux.intel.com>
To: Andrew Jones <drjones@redhat.com>
Cc: Laurent Vivier <lvivier@redhat.com>,
Peter Maydell <peter.maydell@linaro.org>,
Thomas Huth <thuth@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Ben Warren <ben@skyportsystems.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
qemu-devel@nongnu.org, Shannon Zhao <shannon.zhaosl@gmail.com>,
qemu-arm@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH v2 4/8] hw: arm: Carry RSDP specific data through AcpiRsdpData
Date: Thu, 29 Nov 2018 15:26:27 +0100 [thread overview]
Message-ID: <20181129142627.GA4691@caravaggio> (raw)
In-Reply-To: <20181129140932.2yl75vsq2ohmuzx6@kamzik.brq.redhat.com>
On Thu, Nov 29, 2018 at 03:09:32PM +0100, Andrew Jones wrote:
> On Thu, Nov 29, 2018 at 02:24:24PM +0100, Samuel Ortiz wrote:
> > That will allow us to generalize the ARM build_rsdp() routine to support
> > both legacy RSDP (The current i386 implementation) and extended RSDP
> > (The ARM implementation).
> >
> > Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
> > ---
> > include/hw/acpi/acpi-defs.h | 8 ++++++++
> > hw/arm/virt-acpi-build.c | 18 +++++++++++++-----
> > 2 files changed, 21 insertions(+), 5 deletions(-)
> >
> > diff --git a/include/hw/acpi/acpi-defs.h b/include/hw/acpi/acpi-defs.h
> > index af8e023968..8425ecb8c6 100644
> > --- a/include/hw/acpi/acpi-defs.h
> > +++ b/include/hw/acpi/acpi-defs.h
> > @@ -53,6 +53,14 @@ struct AcpiRsdpDescriptor { /* Root System Descriptor Pointer */
> > } QEMU_PACKED;
> > typedef struct AcpiRsdpDescriptor AcpiRsdpDescriptor;
> >
> > +typedef struct AcpiRsdpData {
> > + uint8_t oem_id[6]; /* OEM identification */
> > + uint8_t revision; /* Must be 0 for 1.0, 2 for 2.0 */
> > +
> > + unsigned *rsdt_tbl_offset;
> > + unsigned *xsdt_tbl_offset;
>
> Why use pointers?
Mostly to be consistent with the FADT data structure (AcpiFadtData).
> > +} AcpiRsdpData;
> > +
> > /* Table structure from Linux kernel (the ACPI tables are under the
> > BSD license) */
> >
> > diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> > index 0835900052..ce8bfa5a37 100644
> > --- a/hw/arm/virt-acpi-build.c
> > +++ b/hw/arm/virt-acpi-build.c
> > @@ -368,7 +368,7 @@ static void acpi_dsdt_add_power_button(Aml *scope)
> >
> > /* RSDP */
> > static void
> > -build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset)
> > +build_rsdp(GArray *rsdp_table, BIOSLinker *linker, AcpiRsdpData *rsdp_data)
> > {
> > AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp);
> > unsigned xsdt_pa_size = sizeof(rsdp->xsdt_physical_address);
> > @@ -379,14 +379,14 @@ build_rsdp(GArray *rsdp_table, BIOSLinker *linker, unsigned xsdt_tbl_offset)
> > true /* fseg memory */);
> >
> > memcpy(&rsdp->signature, "RSD PTR ", sizeof(rsdp->signature));
> > - memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, sizeof(rsdp->oem_id));
> > + memcpy(rsdp->oem_id, rsdp_data->oem_id, sizeof(rsdp->oem_id));
>
> sizeof(rsdp_data->oem_id)
Which is the same thing. Note that this piece of code eventually gets
removed later in the serie.
> > rsdp->length = cpu_to_le32(sizeof(*rsdp));
> > - rsdp->revision = 0x02;
> > + rsdp->revision = rsdp_data->revision;
> >
> > /* Address to be filled by Guest linker */
> > bios_linker_loader_add_pointer(linker,
> > ACPI_BUILD_RSDP_FILE, xsdt_pa_offset, xsdt_pa_size,
> > - ACPI_BUILD_TABLE_FILE, xsdt_tbl_offset);
> > + ACPI_BUILD_TABLE_FILE, *rsdp_data->xsdt_tbl_offset);
> >
> > /* Checksum to be filled by Guest linker */
> > bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
> > @@ -857,7 +857,15 @@ void virt_acpi_build(VirtMachineState *vms, AcpiBuildTables *tables)
> > build_xsdt(tables_blob, tables->linker, table_offsets, NULL, NULL);
> >
> > /* RSDP is in FSEG memory, so allocate it separately */
> > - build_rsdp(tables->rsdp, tables->linker, xsdt);
> > + {
> > + AcpiRsdpData rsdp_data = {
> > + .revision = 2,
> > + .oem_id = ACPI_BUILD_APPNAME6,
> > + .xsdt_tbl_offset = &xsdt,
> > + .rsdt_tbl_offset = NULL,
>
> nit: no need for this explicit NULLing
Unfortunately, yes.
Cheers,
Samuel.
next prev parent reply other threads:[~2018-11-29 14:31 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-29 13:24 [Qemu-devel] [PATCH v2 0/8] hw: acpi: RSDP fixes and refactoring Samuel Ortiz
2018-11-29 13:24 ` [Qemu-devel] [PATCH v2 1/8] hw: acpi: The RSDP build API can return void Samuel Ortiz
2018-11-29 14:02 ` [Qemu-arm] " Andrew Jones
2018-11-29 13:24 ` [Qemu-devel] [PATCH v2 2/8] hw: arm: acpi: Fix incorrect checksums in RSDP Samuel Ortiz
2018-11-29 14:02 ` Andrew Jones
2018-11-29 13:24 ` [Qemu-devel] [PATCH v2 3/8] hw: i386: Use correct RSDT length for checksum Samuel Ortiz
2018-11-29 13:24 ` [Qemu-arm] [PATCH v2 4/8] hw: arm: Carry RSDP specific data through AcpiRsdpData Samuel Ortiz
2018-11-29 14:09 ` [Qemu-arm] [Qemu-devel] " Andrew Jones
2018-11-29 14:26 ` Samuel Ortiz [this message]
2018-11-30 7:26 ` Igor Mammedov
2018-11-30 14:34 ` Andrew Jones
2018-11-30 7:27 ` Igor Mammedov
2018-11-29 13:24 ` [Qemu-devel] [PATCH v2 5/8] hw: arm: Convert the RSDP build to the buid_append_foo() API Samuel Ortiz
2018-11-29 14:28 ` [Qemu-arm] " Andrew Jones
2018-11-30 9:25 ` Igor Mammedov
2018-11-29 13:24 ` [Qemu-arm] [PATCH v2 6/8] hw: arm: Support both legacy and current RSDP build Samuel Ortiz
2018-11-29 14:42 ` [Qemu-devel] " Andrew Jones
2018-11-29 14:59 ` [Qemu-arm] " Samuel Ortiz
2018-11-29 15:09 ` Andrew Jones
2018-11-29 17:48 ` [Qemu-arm] " Samuel Ortiz
2018-11-30 9:57 ` Igor Mammedov
2018-11-30 9:38 ` [Qemu-arm] " Igor Mammedov
2018-11-29 13:24 ` [Qemu-devel] [PATCH v2 7/8] hw: acpi: Export and share the ARM " Samuel Ortiz
2018-11-29 14:51 ` [Qemu-arm] " Andrew Jones
2018-11-30 10:03 ` Igor Mammedov
2018-11-29 13:24 ` [Qemu-devel] [PATCH v2 8/8] hw: acpi: Remove AcpiRsdpDescriptor and fix tests Samuel Ortiz
2018-11-29 15:07 ` Andrew Jones
2018-11-30 9:35 ` [Qemu-arm] " Samuel Ortiz
2018-11-30 10:26 ` Igor Mammedov
2018-11-30 10:29 ` [Qemu-arm] [Qemu-devel] [PATCH v2 0/8] hw: acpi: RSDP fixes and refactoring Igor Mammedov
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=20181129142627.GA4691@caravaggio \
--to=sameo@linux.intel.com \
--cc=ben@skyportsystems.com \
--cc=drjones@redhat.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=lvivier@redhat.com \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
--cc=shannon.zhaosl@gmail.com \
--cc=thuth@redhat.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.