qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Samuel Ortiz <sameo@linux.intel.com>
To: qemu-devel@nongnu.org
Cc: Shannon Zhao <shannon.zhaosl@gmail.com>,
	Stefano Stabellini <sstabellini@kernel.org>,
	Anthony Perard <anthony.perard@citrix.com>,
	Richard Henderson <rth@twiddle.net>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	xen-devel@lists.xenproject.org,
	Paolo Bonzini <pbonzini@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	Igor Mammedov <imammedo@redhat.com>,
	qemu-arm@nongnu.org, Peter Maydell <peter.maydell@linaro.org>,
	Eduardo Habkost <ehabkost@redhat.com>
Subject: [Qemu-devel] [PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP
Date: Mon,  5 Nov 2018 02:40:28 +0100	[thread overview]
Message-ID: <20181105014047.26447-6-sameo@linux.intel.com> (raw)
In-Reply-To: <20181105014047.26447-1-sameo@linux.intel.com>

XSDT is the 64-bit version of the legacy ACPI RSDT (Root System
Description Table). RSDT only allow for 32-bit addressses and have thus
been deprecated. Since ACPI version 2.0, RSDPs should point at XSDTs and
no longer RSDTs, although RSDTs are still supported for backward
compatibility.

Since version 2.0, RSDPs should add an extended checksum, a complete table
length and a version field to the table.

Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
---
 include/hw/acpi/aml-build.h |  3 +++
 hw/acpi/aml-build.c         | 37 +++++++++++++++++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/include/hw/acpi/aml-build.h b/include/hw/acpi/aml-build.h
index c9bcb32d81..3580d0ce90 100644
--- a/include/hw/acpi/aml-build.h
+++ b/include/hw/acpi/aml-build.h
@@ -393,6 +393,9 @@ void
 build_rsdp(GArray *table_data,
            BIOSLinker *linker, unsigned rsdt_tbl_offset);
 void
+build_rsdp_xsdt(GArray *table_data,
+                BIOSLinker *linker, unsigned xsdt_tbl_offset);
+void
 build_rsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets,
            const char *oem_id, const char *oem_table_id);
 void
diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index 51b608432f..a030d40674 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -1651,6 +1651,43 @@ build_xsdt(GArray *table_data, BIOSLinker *linker, GArray *table_offsets,
                  (void *)xsdt, "XSDT", xsdt_len, 1, oem_id, oem_table_id);
 }
 
+/* RSDP pointing at an XSDT */
+void
+build_rsdp_xsdt(GArray *rsdp_table,
+                BIOSLinker *linker, unsigned xsdt_tbl_offset)
+{
+    AcpiRsdpDescriptor *rsdp = acpi_data_push(rsdp_table, sizeof *rsdp);
+    unsigned xsdt_pa_size = sizeof(rsdp->xsdt_physical_address);
+    unsigned xsdt_pa_offset =
+        (char *)&rsdp->xsdt_physical_address - rsdp_table->data;
+    unsigned xsdt_offset =
+        (char *)&rsdp->length - rsdp_table->data;
+
+    bios_linker_loader_alloc(linker, ACPI_BUILD_RSDP_FILE, rsdp_table, 16,
+                             true /* fseg memory */);
+
+    memcpy(&rsdp->signature, "RSD PTR ", 8);
+    memcpy(rsdp->oem_id, ACPI_BUILD_APPNAME6, 6);
+    rsdp->length = cpu_to_le32(sizeof(*rsdp));
+    /* version 2, we will use the XSDT pointer */
+    rsdp->revision = 0x02;
+
+    /* 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);
+
+    /* Legacy checksum to be filled by Guest linker */
+    bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
+        (char *)rsdp - rsdp_table->data, xsdt_offset,
+        (char *)&rsdp->checksum - rsdp_table->data);
+
+    /* Extended checksum to be filled by Guest linker */
+    bios_linker_loader_add_checksum(linker, ACPI_BUILD_RSDP_FILE,
+        (char *)rsdp - rsdp_table->data, sizeof *rsdp,
+        (char *)&rsdp->extended_checksum - rsdp_table->data);
+}
+
 void build_srat_memory(AcpiSratMemoryAffinity *numamem, uint64_t base,
                        uint64_t len, int node, MemoryAffinityFlags flags)
 {
-- 
2.19.1

  parent reply	other threads:[~2018-11-05  1:42 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-05  1:40 [Qemu-devel] [PATCH v5 00/24] ACPI reorganization for hardware-reduced API addition Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 01/24] hw: i386: Decouple the ACPI build from the PC machine type Samuel Ortiz
2018-11-09 14:23   ` Igor Mammedov
2018-11-21 14:42     ` Samuel Ortiz
2018-11-22 15:13       ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 02/24] hw: acpi: Export ACPI build alignment API Samuel Ortiz
2018-11-09 14:27   ` Igor Mammedov
2018-11-21 14:42     ` Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 03/24] hw: acpi: The RSDP build API can return void Samuel Ortiz
2018-11-06 10:23   ` Paolo Bonzini
2018-11-06 10:43     ` Samuel Ortiz
2018-11-08 14:24   ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 04/24] hw: acpi: Export the RSDP build API Samuel Ortiz
2018-11-05  1:40 ` Samuel Ortiz [this message]
2018-11-08 14:16   ` [Qemu-devel] [PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP Igor Mammedov
2018-11-08 14:36     ` Samuel Ortiz
2018-11-08 14:53     ` Igor Mammedov
2018-11-19 18:27     ` Michael S. Tsirkin
2018-11-20  8:23       ` Igor Mammedov
2018-11-21 14:42     ` Samuel Ortiz
2018-11-22 16:26       ` Igor Mammedov
2018-11-23  9:36         ` Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 06/24] hw: acpi: Factorize the RSDP build API implementation Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 07/24] hw: acpi: Generalize AML build routines Samuel Ortiz
2018-11-09 13:37   ` Igor Mammedov
2018-11-21 15:00     ` Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 08/24] hw: acpi: Factorize _OSC AML across architectures Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 09/24] hw: i386: Move PCI host definitions to pci_host.h Samuel Ortiz
2018-11-09 14:30   ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 10/24] hw: acpi: Export the PCI host and holes getters Samuel Ortiz
2018-11-13 15:59   ` Igor Mammedov
2018-11-21 15:43     ` Samuel Ortiz
2018-11-23 10:55       ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 11/24] hw: acpi: Export and generalize the PCI host AML API Samuel Ortiz
2018-11-14 10:55   ` Igor Mammedov
2018-11-21 23:12     ` Samuel Ortiz
2018-11-23 11:04       ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 12/24] hw: acpi: Export the MCFG getter Samuel Ortiz
2018-11-15 12:36   ` Igor Mammedov
2018-11-21 23:21     ` Samuel Ortiz
2018-11-27 13:54       ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 13/24] hw: acpi: Do not create hotplug method when handler is not defined Samuel Ortiz
2018-11-09  9:12   ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 14/24] hw: i386: Make the hotpluggable memory size property more generic Samuel Ortiz
2018-11-15 12:49   ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 15/24] hw: i386: Export the i386 ACPI SRAT build method Samuel Ortiz
2018-11-15 13:28   ` Igor Mammedov
2018-11-21 23:27     ` Samuel Ortiz
2018-11-26 15:47       ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 16/24] hw: acpi: Fix memory hotplug AML generation error Samuel Ortiz
2018-11-08 14:23   ` Igor Mammedov
2019-01-14 18:35     ` Michael S. Tsirkin
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 17/24] hw: acpi: Export the PCI hotplug API Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 18/24] hw: i386: Export the MADT build method Samuel Ortiz
2018-11-16  9:27   ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 19/24] hw: acpi: Retrieve the PCI bus from AcpiPciHpState Samuel Ortiz
2018-11-16  9:39   ` Igor Mammedov
2018-11-16 19:42     ` Boeuf, Sebastien
2018-11-19 15:37       ` Igor Mammedov
2018-11-19 18:02         ` Boeuf, Sebastien
2018-11-20  8:26           ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 20/24] hw: acpi: Define ACPI tables builder interface Samuel Ortiz
2018-11-16 16:02   ` Igor Mammedov
2018-11-21 23:57     ` Samuel Ortiz
2018-11-27 14:08       ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 21/24] hw: i386: Implement the ACPI builder interface for PC Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 22/24] hw: pci-host: piix: Return PCI host pointer instead of PCI bus Samuel Ortiz
2018-11-16 11:09   ` Igor Mammedov
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 23/24] hw: i386: Set ACPI configuration PCI host pointer Samuel Ortiz
2018-11-05  1:40 ` [Qemu-devel] [PATCH v5 24/24] hw: i386: Refactor PCI host getter Samuel Ortiz
2018-11-16 16:29 ` [Qemu-devel] [PATCH v5 00/24] ACPI reorganization for hardware-reduced API addition Igor Mammedov
2018-11-16 16:37   ` Paolo Bonzini
2018-11-19 15:31     ` Igor Mammedov
2018-11-19 17:14       ` Paolo Bonzini
2018-11-19 18:14         ` Michael S. Tsirkin
2018-11-20 21:35           ` Paolo Bonzini
2018-11-20 12:57         ` Igor Mammedov
2018-11-20 21:36           ` Paolo Bonzini
2018-11-21 12:35       ` Michael S. Tsirkin
2018-11-21 13:50         ` Samuel Ortiz
2018-11-21 13:57           ` Michael S. Tsirkin
2018-11-21 14:15         ` Igor Mammedov
2018-11-21 14:38           ` Samuel Ortiz
2018-11-22 10:39             ` Igor Mammedov
2018-11-22  0:17           ` Samuel Ortiz

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=20181105014047.26447-6-sameo@linux.intel.com \
    --to=sameo@linux.intel.com \
    --cc=anthony.perard@citrix.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@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=shannon.zhaosl@gmail.com \
    --cc=sstabellini@kernel.org \
    --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).