34b321
From 0decede8a51451da8f5913b0ad13c8e3bdcef582 Mon Sep 17 00:00:00 2001
34b321
From: Laszlo Ersek <lersek@redhat.com>
34b321
Date: Wed, 11 May 2016 12:33:45 +0200
34b321
Subject: [PATCH 06/10] acpi: take oem_id in build_header(), optionally
34b321
34b321
RH-Author: Laszlo Ersek <lersek@redhat.com>
34b321
Message-id: <1462970028-10959-5-git-send-email-lersek@redhat.com>
34b321
Patchwork-id: 70381
34b321
O-Subject: [RHEL-7.3 qemu-kvm PATCH v2 4/7] acpi: take oem_id in build_header(), optionally
34b321
Bugzilla: 1330969
34b321
RH-Acked-by: Igor Mammedov <imammedo@redhat.com>
34b321
RH-Acked-by: Michael S. Tsirkin <mst@redhat.com>
34b321
RH-Acked-by: Thomas Huth <thuth@redhat.com>
34b321
34b321
This patch is the continuation of commit 8870ca0e94f2 ("acpi: support
34b321
specified oem table id for build_header"). It will allow us to control the
34b321
OEM ID field too in the SDT header.
34b321
34b321
Cc: "Michael S. Tsirkin" <mst@redhat.com> (supporter:ACPI/SMBIOS)
34b321
Cc: Igor Mammedov <imammedo@redhat.com> (supporter:ACPI/SMBIOS)
34b321
Cc: Xiao Guangrong <guangrong.xiao@linux.intel.com> (maintainer:NVDIMM)
34b321
Cc: Shannon Zhao <zhaoshenglong@huawei.com> (maintainer:ARM ACPI Subsystem)
34b321
Cc: Paolo Bonzini <pbonzini@redhat.com> (maintainer:X86)
34b321
Cc: Richard W.M. Jones <rjones@redhat.com>
34b321
Cc: Aleksei Kovura <alex3kov@zoho.com>
34b321
Cc: Michael Tokarev <mjt@tls.msk.ru>
34b321
Cc: Steven Newbury <steve@snewbury.org.uk>
34b321
RHBZ: https://bugzilla.redhat.com/show_bug.cgi?id=1248758
34b321
LP: https://bugs.launchpad.net/qemu/+bug/1533848
34b321
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
34b321
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
34b321
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
34b321
Reviewed-by: Shannon Zhao <shannon.zhao@linaro.org>
34b321
(cherry picked from commit 37ad223c515da2fe9f1c679768cb5ccaa42e57e1)
34b321
Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
34b321
34b321
Conflicts:
34b321
	hw/acpi/aml-build.c
34b321
	hw/acpi/nvdimm.c
34b321
	hw/arm/virt-acpi-build.c
34b321
	hw/i386/acpi-build.c
34b321
	include/hw/acpi/aml-build.h
34b321
34b321
RHEL-7 backport note: this is actually a manual reimplementation of the
34b321
upstream patch, which is mostly mechanic. A clean cherry-pick would depend
34b321
on a lot of reorganizatorial upstream patches (e.g., 658c27181bf3
34b321
("hw/i386/acpi-build: move generic acpi building helpers into dedictated
34b321
file")), and many new features that overlap with ACPI generation (e.g.,
34b321
the "virt" machtype of the arm/aarch64 targets).
34b321
34b321
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
34b321
---
34b321
 hw/i386/acpi-build.c | 25 +++++++++++++++----------
34b321
 1 file changed, 15 insertions(+), 10 deletions(-)
34b321
---
34b321
 hw/i386/acpi-build.c | 25 +++++++++++++++----------
34b321
 1 file changed, 15 insertions(+), 10 deletions(-)
34b321
34b321
diff --git a/hw/i386/acpi-build.c b/hw/i386/acpi-build.c
34b321
index a9d9f97..4839b0e 100644
34b321
--- a/hw/i386/acpi-build.c
34b321
+++ b/hw/i386/acpi-build.c
34b321
@@ -244,12 +244,17 @@ static void acpi_get_pci_info(PcPciInfo *info)
34b321
 static void
34b321
 build_header(GArray *linker, GArray *table_data,
34b321
              AcpiTableHeader *h, const char *sig, int len, uint8_t rev,
34b321
-             const char *oem_table_id)
34b321
+             const char *oem_id, const char *oem_table_id)
34b321
 {
34b321
     memcpy(&h->signature, sig, 4);
34b321
     h->length = cpu_to_le32(len);
34b321
     h->revision = rev;
34b321
-    memcpy(h->oem_id, ACPI_BUILD_APPNAME6, 6);
34b321
+
34b321
+    if (oem_id) {
34b321
+        strncpy((char *)h->oem_id, oem_id, sizeof h->oem_id);
34b321
+    } else {
34b321
+        memcpy(h->oem_id, ACPI_BUILD_APPNAME6, 6);
34b321
+    }
34b321
 
34b321
     if (oem_table_id) {
34b321
         strncpy((char *)h->oem_table_id, oem_table_id, sizeof(h->oem_table_id));
34b321
@@ -527,7 +532,7 @@ build_fadt(GArray *table_data, GArray *linker, AcpiPmInfo *pm,
34b321
     fadt_setup(fadt, pm);
34b321
 
34b321
     build_header(linker, table_data,
34b321
-                 (void *)fadt, "FACP", sizeof(*fadt), 1, NULL);
34b321
+                 (void *)fadt, "FACP", sizeof(*fadt), 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 static void
34b321
@@ -597,7 +602,7 @@ build_madt(GArray *table_data, GArray *linker, AcpiCpuInfo *cpu,
34b321
 
34b321
     build_header(linker, table_data,
34b321
                  (void *)(table_data->data + madt_start), "APIC",
34b321
-                 table_data->len - madt_start, 1, NULL);
34b321
+                 table_data->len - madt_start, 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 /* Encode a hex value */
34b321
@@ -789,7 +794,7 @@ build_ssdt(GArray *table_data, GArray *linker,
34b321
 
34b321
     build_header(linker, table_data,
34b321
                  (void *)(table_data->data + ssdt_start),
34b321
-                 "SSDT", table_data->len - ssdt_start, 1, NULL);
34b321
+                 "SSDT", table_data->len - ssdt_start, 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 static void
34b321
@@ -804,7 +809,7 @@ build_hpet(GArray *table_data, GArray *linker)
34b321
     hpet->timer_block_id = cpu_to_le32(0x8086a201);
34b321
     hpet->addr.address = cpu_to_le64(HPET_BASE);
34b321
     build_header(linker, table_data,
34b321
-                 (void *)hpet, "HPET", sizeof(*hpet), 1, NULL);
34b321
+                 (void *)hpet, "HPET", sizeof(*hpet), 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 static void
34b321
@@ -897,7 +902,7 @@ build_srat(GArray *table_data, GArray *linker,
34b321
     build_header(linker, table_data,
34b321
                  (void *)(table_data->data + srat_start),
34b321
                  "SRAT",
34b321
-                 table_data->len - srat_start, 1, NULL);
34b321
+                 table_data->len - srat_start, 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 static void
34b321
@@ -926,7 +931,7 @@ build_mcfg_q35(GArray *table_data, GArray *linker, AcpiMcfgInfo *info)
34b321
     } else {
34b321
         sig = "MCFG";
34b321
     }
34b321
-    build_header(linker, table_data, (void *)mcfg, sig, len, 1, NULL);
34b321
+    build_header(linker, table_data, (void *)mcfg, sig, len, 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 static void
34b321
@@ -941,7 +946,7 @@ build_dsdt(GArray *table_data, GArray *linker, AcpiMiscInfo *misc)
34b321
 
34b321
     memset(dsdt, 0, sizeof *dsdt);
34b321
     build_header(linker, table_data, dsdt, "DSDT",
34b321
-                 misc->dsdt_size, 1, NULL);
34b321
+                 misc->dsdt_size, 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 /* Build final rsdt table */
34b321
@@ -965,7 +970,7 @@ build_rsdt(GArray *table_data, GArray *linker, GArray *table_offsets)
34b321
                                        sizeof(uint32_t));
34b321
     }
34b321
     build_header(linker, table_data,
34b321
-                 (void *)rsdt, "RSDT", rsdt_len, 1, NULL);
34b321
+                 (void *)rsdt, "RSDT", rsdt_len, 1, NULL, NULL);
34b321
 }
34b321
 
34b321
 static GArray *
34b321
-- 
34b321
1.8.3.1
34b321