[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 23/30] hw: arm: acpi: Fix incorrect checksums in R
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v2 23/30] hw: arm: acpi: Fix incorrect checksums in RSDP |
Date: |
Tue, 18 Dec 2018 11:13:23 -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 v2 13/30] pcie: Add link speed and width fields to PCIESlot, (continued)
- [Qemu-devel] [PULL v2 13/30] pcie: Add link speed and width fields to PCIESlot, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 15/30] pcie: Allow generic PCIe root port to specify link speed and width, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 14/30] pcie: Fill PCIESlot link fields to support higher speeds and widths, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 16/30] vfio/pci: Remove PCIe Link Status emulation, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 17/30] pcie: Fast PCIe root ports for new machines, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 18/30] intel_iommu: dump correct iova when failed, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 19/30] intel_iommu: convert invalid traces into error reports, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 21/30] intel_iommu: remove "x-" prefix for "aw-bits", Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 20/30] intel_iommu: dma read/write draining support, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 24/30] hw: i386: Use correct RSDT length for checksum, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 23/30] hw: arm: acpi: Fix incorrect checksums in RSDP,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL v2 22/30] hw: acpi: The RSDP build API can return void, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 27/30] hw: arm: Support both legacy and current RSDP build, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 26/30] hw: arm: Convert the RSDP build to the buid_append_foo() API, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 25/30] hw: arm: Carry RSDP specific data through AcpiRsdpData, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 29/30] hw: acpi: Remove AcpiRsdpDescriptor and fix tests, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 30/30] hw/i386: Remove deprecated machines pc-0.10 and pc-0.11, Michael S. Tsirkin, 2018/12/18
- [Qemu-devel] [PULL v2 28/30] hw: acpi: Export and share the ARM RSDP build, Michael S. Tsirkin, 2018/12/18
- Re: [Qemu-devel] [PULL v2 00/30] pci, pc, virtio: fixes, features, Peter Maydell, 2018/12/19