[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v3 23/44] hw: arm: acpi: Fix incorrect checksums in R
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v3 23/44] hw: arm: acpi: Fix incorrect checksums in RSDP |
Date: |
Thu, 20 Dec 2018 13:39:37 -0500 |
From: Igor Mammedov <address@hidden>
When RSDP table was introduced (d4bec5d87), we calculated only legacy
checksum, and that was incorrect as it
- specified rev=2 and forgot about extended checksum.
- legacy checksum calculated on full table instead of the 1st 20 bytes
Fix it by adding extended checksum calculation and using correct
size for legacy checksum.
While at it use explicit constants to specify sub/full tables
sizes instead of relying on AcpiRsdpDescriptor size and fields offsets.
The follow up commits will convert this table to build_append_int_noprefix()
API,
will use constants anyway and remove unused AcpiRsdpDescriptor structure.
Based on "[PATCH v5 05/24] hw: acpi: Implement XSDT support for RSDP"
by Samuel Ortiz, who did it right in his impl.
Fixes: d4bec5d87 ("hw/arm/virt-acpi-build: Generate RSDP table")
Signed-off-by: Igor Mammedov <address@hidden>
CC: Ard Biesheuvel <address@hidden>
CC: Shannon Zhao <address@hidden>
Reviewed-by: Andrew Jones <address@hidden>
Reviewed-by: Samuel Ortiz <address@hidden>
Signed-off-by: Samuel Ortiz <address@hidden>
Reviewed-by: Michael S. Tsirkin <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
hw/arm/virt-acpi-build.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/hw/arm/virt-acpi-build.c b/hw/arm/virt-acpi-build.c
index fcaa350892..0835900052 100644
--- a/hw/arm/virt-acpi-build.c
+++ b/hw/arm/virt-acpi-build.c
@@ -390,8 +390,13 @@ build_rsdp(GArray *rsdp_table, BIOSLinker *linker,
unsigned xsdt_tbl_offset)
/* 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 - rsdp_table->data, 20 /* ACPI rev 1.0 RSDP size */,
(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, 36 /* ACPI rev 2.0 RSDP size */,
+ (char *)&rsdp->extended_checksum - rsdp_table->data);
}
static void
--
MST
- [Qemu-devel] [PULL v3 17/44] pcie: Fast PCIe root ports for new machines, (continued)
- [Qemu-devel] [PULL v3 17/44] pcie: Fast PCIe root ports for new machines, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 11/44] pci: Sync PCIe downstream port LNKSTA on read, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 18/44] intel_iommu: dump correct iova when failed, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 19/44] intel_iommu: convert invalid traces into error reports, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 16/44] vfio/pci: Remove PCIe Link Status emulation, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 20/44] intel_iommu: dma read/write draining support, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 21/44] intel_iommu: remove "x-" prefix for "aw-bits", Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 22/44] hw: acpi: The RSDP build API can return void, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 32/44] pci/shpc: rename hotplug handler callbacks, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 24/44] hw: i386: Use correct RSDT length for checksum, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 23/44] hw: arm: acpi: Fix incorrect checksums in RSDP,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL v3 27/44] hw: arm: Support both legacy and current RSDP build, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 31/44] pci/pcie: rename hotplug handler callbacks, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 28/44] hw: acpi: Export and share the ARM RSDP build, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 29/44] hw: acpi: Remove AcpiRsdpDescriptor and fix tests, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 25/44] hw: arm: Carry RSDP specific data through AcpiRsdpData, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 33/44] s390x/pci: rename hotplug handler callbacks, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 26/44] hw: arm: Convert the RSDP build to the buid_append_foo() API, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 37/44] pci/pcie: perform unplug via the hotplug handler, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 36/44] pci/pcihp: perform unplug via the hotplug handler, Michael S. Tsirkin, 2018/12/20
- [Qemu-devel] [PULL v3 30/44] hw/i386: Remove deprecated machines pc-0.10 and pc-0.11, Michael S. Tsirkin, 2018/12/20