From: Igor Mammedov <imammedo@redhat.com>
To: Samuel Ortiz <sameo@linux.intel.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,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-arm] [PATCH v3 6/8] hw: arm: Support both legacy and current RSDP build
Date: Tue, 4 Dec 2018 14:47:03 +0100 [thread overview]
Message-ID: <20181204144703.4bc52d9c@redhat.com> (raw)
In-Reply-To: <20181130130032.11835-7-sameo@linux.intel.com>
On Fri, 30 Nov 2018 14:00:30 +0100
Samuel Ortiz <sameo@linux.intel.com> wrote:
> We add the ability to build legacy or current RSDP tables, based on the
> AcpiRsdpData revision field passed to build_rsdp().
> Although arm/virt only uses RSDP v2, adding that capability to
> build_rsdp will allow us to share the RSDP build code between ARM and x86.
>
> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
> Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> hw/arm/virt-acpi-build.c | 39 ++++++++++++++++++++++++++++++++++-----
> 1 file changed, 34 insertions(+), 5 deletions(-)
>
> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> index 4a6b53fbfc..4b212fa44c 100644
> --- a/hw/arm/virt-acpi-build.c
> +++ b/hw/arm/virt-acpi-build.c
> @@ -370,8 +370,23 @@ static void acpi_dsdt_add_power_button(Aml *scope)
> static void
> build_rsdp(GArray *tbl, BIOSLinker *linker, AcpiRsdpData *rsdp_data)
> {
> +
unrelated white space change
(you can do v4 of this patch as reply to this patch and add changelog below ---
so it would be clear what's changed)
> int tbl_off = tbl->len; /* Table offset in the RSDP file */
>
> + switch (rsdp_data->revision) {
> + case 0:
> + /* With ACPI 1.0, we must have an RSDT pointer */
> + g_assert(rsdp_data->rsdt_tbl_offset);
> + break;
> + case 2:
> + /* With ACPI 2.0+, we must have an XSDT pointer */
> + g_assert(rsdp_data->xsdt_tbl_offset);
> + break;
> + default:
> + /* Only revisions 0 (ACPI 1.0) and 2 (ACPI 2.0+) are valid for RSDP */
> + g_assert_not_reached();
> + }
> +
> bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, tbl, 16,
> true /* fseg memory */);
>
> @@ -380,10 +395,29 @@ build_rsdp(GArray *tbl, BIOSLinker *linker, AcpiRsdpData *rsdp_data)
> g_array_append_vals(tbl, rsdp_data->oem_id, 6); /* OEMID */
> build_append_int_noprefix(tbl, rsdp_data->revision, 1); /* Revision */
> build_append_int_noprefix(tbl, 0, 4); /* RsdtAddress */
> + if (rsdp_data->rsdt_tbl_offset) {
> + /* RSDT address to be filled by guest linker */
> + bios_linker_loader_add_pointer(linker, ACPI_BUILD_RSDP_FILE,
> + tbl_off + 16, 4,
> + ACPI_BUILD_TABLE_FILE,
> + *rsdp_data->rsdt_tbl_offset);
> + }
> +
> + /* Checksum to be filled by guest linker */
> + bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
> + tbl_off, 20, /* ACPI rev 1.0 RSDP size */
> + 8);
> +
> + if (rsdp_data->revision == 0) {
> + /* ACPI 1.0 RSDP, we're done */
> + return;
> + }
> +
> build_append_int_noprefix(tbl, 36, 4); /* Length */
>
> /* XSDT address to be filled by guest linker */
> build_append_int_noprefix(tbl, 0, 8); /* XsdtAddress */
> + /* We already validated our xsdt pointer */
> bios_linker_loader_add_pointer(linker, ACPI_BUILD_RSDP_FILE,
> tbl_off + 24, 8,
> ACPI_BUILD_TABLE_FILE,
> @@ -392,11 +426,6 @@ build_rsdp(GArray *tbl, BIOSLinker *linker, AcpiRsdpData *rsdp_data)
> build_append_int_noprefix(tbl, 0, 1); /* Extended Checksum */
> build_append_int_noprefix(tbl, 0, 3); /* Reserved */
>
> - /* Checksum to be filled by guest linker */
> - bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
> - tbl_off, 20, /* ACPI rev 1.0 RSDP size */
> - 8);
> -
> /* Extended checksum to be filled by Guest linker */
> bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
> tbl_off, 36, /* ACPI rev 2.0 RSDP size */
WARNING: multiple messages have this Message-ID (diff)
From: Igor Mammedov <imammedo@redhat.com>
To: Samuel Ortiz <sameo@linux.intel.com>
Cc: qemu-devel@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
Laurent Vivier <lvivier@redhat.com>,
Thomas Huth <thuth@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Richard Henderson <rth@twiddle.net>,
qemu-arm@nongnu.org, Ben Warren <ben@skyportsystems.com>,
Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
Shannon Zhao <shannon.zhaosl@gmail.com>
Subject: Re: [Qemu-devel] [PATCH v3 6/8] hw: arm: Support both legacy and current RSDP build
Date: Tue, 4 Dec 2018 14:47:03 +0100 [thread overview]
Message-ID: <20181204144703.4bc52d9c@redhat.com> (raw)
In-Reply-To: <20181130130032.11835-7-sameo@linux.intel.com>
On Fri, 30 Nov 2018 14:00:30 +0100
Samuel Ortiz <sameo@linux.intel.com> wrote:
> We add the ability to build legacy or current RSDP tables, based on the
> AcpiRsdpData revision field passed to build_rsdp().
> Although arm/virt only uses RSDP v2, adding that capability to
> build_rsdp will allow us to share the RSDP build code between ARM and x86.
>
> Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
> Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> hw/arm/virt-acpi-build.c | 39 ++++++++++++++++++++++++++++++++++-----
> 1 file changed, 34 insertions(+), 5 deletions(-)
>
> diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
> index 4a6b53fbfc..4b212fa44c 100644
> --- a/hw/arm/virt-acpi-build.c
> +++ b/hw/arm/virt-acpi-build.c
> @@ -370,8 +370,23 @@ static void acpi_dsdt_add_power_button(Aml *scope)
> static void
> build_rsdp(GArray *tbl, BIOSLinker *linker, AcpiRsdpData *rsdp_data)
> {
> +
unrelated white space change
(you can do v4 of this patch as reply to this patch and add changelog below ---
so it would be clear what's changed)
> int tbl_off = tbl->len; /* Table offset in the RSDP file */
>
> + switch (rsdp_data->revision) {
> + case 0:
> + /* With ACPI 1.0, we must have an RSDT pointer */
> + g_assert(rsdp_data->rsdt_tbl_offset);
> + break;
> + case 2:
> + /* With ACPI 2.0+, we must have an XSDT pointer */
> + g_assert(rsdp_data->xsdt_tbl_offset);
> + break;
> + default:
> + /* Only revisions 0 (ACPI 1.0) and 2 (ACPI 2.0+) are valid for RSDP */
> + g_assert_not_reached();
> + }
> +
> bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, tbl, 16,
> true /* fseg memory */);
>
> @@ -380,10 +395,29 @@ build_rsdp(GArray *tbl, BIOSLinker *linker, AcpiRsdpData *rsdp_data)
> g_array_append_vals(tbl, rsdp_data->oem_id, 6); /* OEMID */
> build_append_int_noprefix(tbl, rsdp_data->revision, 1); /* Revision */
> build_append_int_noprefix(tbl, 0, 4); /* RsdtAddress */
> + if (rsdp_data->rsdt_tbl_offset) {
> + /* RSDT address to be filled by guest linker */
> + bios_linker_loader_add_pointer(linker, ACPI_BUILD_RSDP_FILE,
> + tbl_off + 16, 4,
> + ACPI_BUILD_TABLE_FILE,
> + *rsdp_data->rsdt_tbl_offset);
> + }
> +
> + /* Checksum to be filled by guest linker */
> + bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
> + tbl_off, 20, /* ACPI rev 1.0 RSDP size */
> + 8);
> +
> + if (rsdp_data->revision == 0) {
> + /* ACPI 1.0 RSDP, we're done */
> + return;
> + }
> +
> build_append_int_noprefix(tbl, 36, 4); /* Length */
>
> /* XSDT address to be filled by guest linker */
> build_append_int_noprefix(tbl, 0, 8); /* XsdtAddress */
> + /* We already validated our xsdt pointer */
> bios_linker_loader_add_pointer(linker, ACPI_BUILD_RSDP_FILE,
> tbl_off + 24, 8,
> ACPI_BUILD_TABLE_FILE,
> @@ -392,11 +426,6 @@ build_rsdp(GArray *tbl, BIOSLinker *linker, AcpiRsdpData *rsdp_data)
> build_append_int_noprefix(tbl, 0, 1); /* Extended Checksum */
> build_append_int_noprefix(tbl, 0, 3); /* Reserved */
>
> - /* Checksum to be filled by guest linker */
> - bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
> - tbl_off, 20, /* ACPI rev 1.0 RSDP size */
> - 8);
> -
> /* Extended checksum to be filled by Guest linker */
> bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
> tbl_off, 36, /* ACPI rev 2.0 RSDP size */
next prev parent reply other threads:[~2018-12-04 13:47 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-30 13:00 [Qemu-arm] [PATCH v3 0/8] hw: acpi: RSDP fixes and refactoring Samuel Ortiz
2018-11-30 13:00 ` [Qemu-devel] " Samuel Ortiz
2018-11-30 13:00 ` [Qemu-devel] [PATCH v3 1/8] hw: acpi: The RSDP build API can return void Samuel Ortiz
2018-11-30 13:00 ` Samuel Ortiz
2018-11-30 13:00 ` [Qemu-devel] [PATCH v3 2/8] hw: arm: acpi: Fix incorrect checksums in RSDP Samuel Ortiz
2018-11-30 13:00 ` Samuel Ortiz
2018-11-30 13:00 ` [Qemu-devel] [PATCH v3 3/8] hw: i386: Use correct RSDT length for checksum Samuel Ortiz
2018-11-30 13:00 ` Samuel Ortiz
2018-11-30 13:00 ` [Qemu-devel] [PATCH v3 4/8] hw: arm: Carry RSDP specific data through AcpiRsdpData Samuel Ortiz
2018-11-30 13:00 ` Samuel Ortiz
2018-12-04 14:49 ` [Qemu-arm] " Andrew Jones
2018-12-04 14:49 ` Andrew Jones
2018-11-30 13:00 ` [Qemu-arm] [PATCH v3 5/8] hw: arm: Convert the RSDP build to the buid_append_foo() API Samuel Ortiz
2018-11-30 13:00 ` [Qemu-devel] " Samuel Ortiz
2018-12-04 13:41 ` [Qemu-arm] " Igor Mammedov
2018-12-04 13:41 ` [Qemu-devel] " Igor Mammedov
2018-11-30 13:00 ` [Qemu-devel] [PATCH v3 6/8] hw: arm: Support both legacy and current RSDP build Samuel Ortiz
2018-11-30 13:00 ` Samuel Ortiz
2018-12-04 13:47 ` Igor Mammedov [this message]
2018-12-04 13:47 ` Igor Mammedov
2018-12-04 14:53 ` [Qemu-arm] " Andrew Jones
2018-12-04 14:53 ` Andrew Jones
2018-11-30 13:00 ` [Qemu-devel] [PATCH v3 7/8] hw: acpi: Export and share the ARM " Samuel Ortiz
2018-11-30 13:00 ` Samuel Ortiz
2018-12-04 14:01 ` Igor Mammedov
2018-12-04 14:01 ` Igor Mammedov
2018-11-30 13:00 ` [Qemu-arm] [PATCH v3 8/8] hw: acpi: Remove AcpiRsdpDescriptor and fix tests Samuel Ortiz
2018-11-30 13:00 ` [Qemu-devel] " Samuel Ortiz
2018-12-04 14:06 ` [Qemu-arm] " Igor Mammedov
2018-12-04 14:06 ` [Qemu-devel] " Igor Mammedov
2018-12-04 15:10 ` [Qemu-arm] " Andrew Jones
2018-12-04 15:10 ` Andrew Jones
2018-12-04 16:43 ` [Qemu-arm] " Igor Mammedov
2018-12-04 16:43 ` 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=20181204144703.4bc52d9c@redhat.com \
--to=imammedo@redhat.com \
--cc=ben@skyportsystems.com \
--cc=ehabkost@redhat.com \
--cc=lvivier@redhat.com \
--cc=marcel.apfelbaum@gmail.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=sameo@linux.intel.com \
--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.