aboutsummaryrefslogtreecommitdiff
path: root/hw/acpi
diff options
context:
space:
mode:
Diffstat (limited to 'hw/acpi')
-rw-r--r--hw/acpi/aml-build.c29
-rw-r--r--hw/acpi/ghes.c5
-rw-r--r--hw/acpi/hmat.c5
-rw-r--r--hw/acpi/hmat.h3
-rw-r--r--hw/acpi/nvdimm.c18
-rw-r--r--hw/acpi/pci.c5
-rw-r--r--hw/acpi/vmgenid.c4
7 files changed, 36 insertions, 33 deletions
diff --git a/hw/acpi/aml-build.c b/hw/acpi/aml-build.c
index 7b6ebb0..a2cd7a5 100644
--- a/hw/acpi/aml-build.c
+++ b/hw/acpi/aml-build.c
@@ -30,6 +30,7 @@
#include "hw/pci/pci_host.h"
#include "hw/pci/pci_bus.h"
#include "hw/pci/pci_bridge.h"
+#include "qemu/cutils.h"
static GArray *build_alloc_array(void)
{
@@ -1674,21 +1675,12 @@ build_header(BIOSLinker *linker, GArray *table_data,
h->length = cpu_to_le32(len);
h->revision = rev;
- if (oem_id) {
- strncpy((char *)h->oem_id, oem_id, sizeof h->oem_id);
- } else {
- memcpy(h->oem_id, ACPI_BUILD_APPNAME6, 6);
- }
-
- if (oem_table_id) {
- strncpy((char *)h->oem_table_id, oem_table_id, sizeof(h->oem_table_id));
- } else {
- memcpy(h->oem_table_id, ACPI_BUILD_APPNAME4, 4);
- memcpy(h->oem_table_id + 4, sig, 4);
- }
+ strpadcpy((char *)h->oem_id, sizeof h->oem_id, oem_id, ' ');
+ strpadcpy((char *)h->oem_table_id, sizeof h->oem_table_id,
+ oem_table_id, ' ');
h->oem_revision = cpu_to_le32(1);
- memcpy(h->asl_compiler_id, ACPI_BUILD_APPNAME4, 4);
+ memcpy(h->asl_compiler_id, ACPI_BUILD_APPNAME8, 4);
h->asl_compiler_revision = cpu_to_le32(1);
/* Checksum to be filled in by Guest linker */
bios_linker_loader_add_checksum(linker, ACPI_BUILD_TABLE_FILE,
@@ -1871,7 +1863,8 @@ void build_srat_memory(AcpiSratMemoryAffinity *numamem, uint64_t base,
* ACPI spec 5.2.17 System Locality Distance Information Table
* (Revision 2.0 or later)
*/
-void build_slit(GArray *table_data, BIOSLinker *linker, MachineState *ms)
+void build_slit(GArray *table_data, BIOSLinker *linker, MachineState *ms,
+ const char *oem_id, const char *oem_table_id)
{
int slit_start, i, j;
slit_start = table_data->len;
@@ -1892,7 +1885,7 @@ void build_slit(GArray *table_data, BIOSLinker *linker, MachineState *ms)
build_header(linker, table_data,
(void *)(table_data->data + slit_start),
"SLIT",
- table_data->len - slit_start, 1, NULL, NULL);
+ table_data->len - slit_start, 1, oem_id, oem_table_id);
}
/* build rev1/rev3/rev5.1 FADT */
@@ -2024,7 +2017,8 @@ build_hdr:
* table 7: TCG Hardware Interface Description Table Format for TPM 2.0
* of TCG ACPI Specification, Family “1.2” and “2.0”, Version 1.2, Rev 8
*/
-void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog)
+void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog,
+ const char *oem_id, const char *oem_table_id)
{
uint8_t start_method_params[12] = {};
unsigned log_addr_offset, tpm2_start;
@@ -2073,7 +2067,8 @@ void build_tpm2(GArray *table_data, BIOSLinker *linker, GArray *tcpalog)
log_addr_offset, 8,
ACPI_BUILD_TPMLOG_FILE, 0);
build_header(linker, table_data,
- tpm2_ptr, "TPM2", table_data->len - tpm2_start, 4, NULL, NULL);
+ tpm2_ptr, "TPM2", table_data->len - tpm2_start, 4, oem_id,
+ oem_table_id);
}
Aml *build_crs(PCIHostState *host, CrsRangeSet *range_set, uint32_t io_offset,
diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c
index f0ee9f5..a4dac6b 100644
--- a/hw/acpi/ghes.c
+++ b/hw/acpi/ghes.c
@@ -359,7 +359,8 @@ static void build_ghes_v2(GArray *table_data, int source_id, BIOSLinker *linker)
}
/* Build Hardware Error Source Table */
-void acpi_build_hest(GArray *table_data, BIOSLinker *linker)
+void acpi_build_hest(GArray *table_data, BIOSLinker *linker,
+ const char *oem_id, const char *oem_table_id)
{
uint64_t hest_start = table_data->len;
@@ -372,7 +373,7 @@ void acpi_build_hest(GArray *table_data, BIOSLinker *linker)
build_ghes_v2(table_data, ACPI_HEST_SRC_ID_SEA, linker);
build_header(linker, table_data, (void *)(table_data->data + hest_start),
- "HEST", table_data->len - hest_start, 1, NULL, NULL);
+ "HEST", table_data->len - hest_start, 1, oem_id, oem_table_id);
}
void acpi_ghes_add_fw_cfg(AcpiGhesState *ags, FWCfgState *s,
diff --git a/hw/acpi/hmat.c b/hw/acpi/hmat.c
index 37806f7..edb3fd9 100644
--- a/hw/acpi/hmat.c
+++ b/hw/acpi/hmat.c
@@ -253,7 +253,8 @@ static void hmat_build_table_structs(GArray *table_data, NumaState *numa_state)
}
}
-void build_hmat(GArray *table_data, BIOSLinker *linker, NumaState *numa_state)
+void build_hmat(GArray *table_data, BIOSLinker *linker, NumaState *numa_state,
+ const char *oem_id, const char *oem_table_id)
{
int hmat_start = table_data->len;
@@ -264,5 +265,5 @@ void build_hmat(GArray *table_data, BIOSLinker *linker, NumaState *numa_state)
build_header(linker, table_data,
(void *)(table_data->data + hmat_start),
- "HMAT", table_data->len - hmat_start, 2, NULL, NULL);
+ "HMAT", table_data->len - hmat_start, 2, oem_id, oem_table_id);
}
diff --git a/hw/acpi/hmat.h b/hw/acpi/hmat.h
index e9031ca..b57f0e7 100644
--- a/hw/acpi/hmat.h
+++ b/hw/acpi/hmat.h
@@ -37,6 +37,7 @@
*/
#define HMAT_PROXIMITY_INITIATOR_VALID 0x1
-void build_hmat(GArray *table_data, BIOSLinker *linker, NumaState *numa_state);
+void build_hmat(GArray *table_data, BIOSLinker *linker, NumaState *numa_state,
+ const char *oem_id, const char *oem_table_id);
#endif
diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c
index aa95b0c..e3d5fe1 100644
--- a/hw/acpi/nvdimm.c
+++ b/hw/acpi/nvdimm.c
@@ -402,7 +402,8 @@ void nvdimm_plug(NVDIMMState *state)
}
static void nvdimm_build_nfit(NVDIMMState *state, GArray *table_offsets,
- GArray *table_data, BIOSLinker *linker)
+ GArray *table_data, BIOSLinker *linker,
+ const char *oem_id, const char *oem_table_id)
{
NvdimmFitBuffer *fit_buf = &state->fit_buf;
unsigned int header;
@@ -417,7 +418,8 @@ static void nvdimm_build_nfit(NVDIMMState *state, GArray *table_offsets,
build_header(linker, table_data,
(void *)(table_data->data + header), "NFIT",
- sizeof(NvdimmNfitHeader) + fit_buf->fit->len, 1, NULL, NULL);
+ sizeof(NvdimmNfitHeader) + fit_buf->fit->len, 1, oem_id,
+ oem_table_id);
}
#define NVDIMM_DSM_MEMORY_SIZE 4096
@@ -1278,7 +1280,7 @@ static void nvdimm_build_nvdimm_devices(Aml *root_dev, uint32_t ram_slots)
static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data,
BIOSLinker *linker,
NVDIMMState *nvdimm_state,
- uint32_t ram_slots)
+ uint32_t ram_slots, const char *oem_id)
{
Aml *ssdt, *sb_scope, *dev;
int mem_addr_offset, nvdimm_ssdt;
@@ -1331,7 +1333,7 @@ static void nvdimm_build_ssdt(GArray *table_offsets, GArray *table_data,
NVDIMM_DSM_MEM_FILE, 0);
build_header(linker, table_data,
(void *)(table_data->data + nvdimm_ssdt),
- "SSDT", table_data->len - nvdimm_ssdt, 1, NULL, "NVDIMM");
+ "SSDT", table_data->len - nvdimm_ssdt, 1, oem_id, "NVDIMM");
free_aml_allocator();
}
@@ -1359,7 +1361,8 @@ void nvdimm_build_srat(GArray *table_data)
void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data,
BIOSLinker *linker, NVDIMMState *state,
- uint32_t ram_slots)
+ uint32_t ram_slots, const char *oem_id,
+ const char *oem_table_id)
{
GSList *device_list;
@@ -1369,7 +1372,7 @@ void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data,
}
nvdimm_build_ssdt(table_offsets, table_data, linker, state,
- ram_slots);
+ ram_slots, oem_id);
device_list = nvdimm_get_device_list();
/* no NVDIMM device is plugged. */
@@ -1377,6 +1380,7 @@ void nvdimm_build_acpi(GArray *table_offsets, GArray *table_data,
return;
}
- nvdimm_build_nfit(state, table_offsets, table_data, linker);
+ nvdimm_build_nfit(state, table_offsets, table_data, linker,
+ oem_id, oem_table_id);
g_slist_free(device_list);
}
diff --git a/hw/acpi/pci.c b/hw/acpi/pci.c
index 9510597..ec455c3 100644
--- a/hw/acpi/pci.c
+++ b/hw/acpi/pci.c
@@ -28,7 +28,8 @@
#include "hw/acpi/pci.h"
#include "hw/pci/pcie_host.h"
-void build_mcfg(GArray *table_data, BIOSLinker *linker, AcpiMcfgInfo *info)
+void build_mcfg(GArray *table_data, BIOSLinker *linker, AcpiMcfgInfo *info,
+ const char *oem_id, const char *oem_table_id)
{
int mcfg_start = table_data->len;
@@ -56,6 +57,6 @@ void build_mcfg(GArray *table_data, BIOSLinker *linker, AcpiMcfgInfo *info)
build_append_int_noprefix(table_data, 0, 4);
build_header(linker, table_data, (void *)(table_data->data + mcfg_start),
- "MCFG", table_data->len - mcfg_start, 1, NULL, NULL);
+ "MCFG", table_data->len - mcfg_start, 1, oem_id, oem_table_id);
}
diff --git a/hw/acpi/vmgenid.c b/hw/acpi/vmgenid.c
index 6c92fda..4f41a13 100644
--- a/hw/acpi/vmgenid.c
+++ b/hw/acpi/vmgenid.c
@@ -24,7 +24,7 @@
#include "sysemu/reset.h"
void vmgenid_build_acpi(VmGenIdState *vms, GArray *table_data, GArray *guid,
- BIOSLinker *linker)
+ BIOSLinker *linker, const char *oem_id)
{
Aml *ssdt, *dev, *scope, *method, *addr, *if_ctx;
uint32_t vgia_offset;
@@ -118,7 +118,7 @@ void vmgenid_build_acpi(VmGenIdState *vms, GArray *table_data, GArray *guid,
build_header(linker, table_data,
(void *)(table_data->data + table_data->len - ssdt->buf->len),
- "SSDT", ssdt->buf->len, 1, NULL, "VMGENID");
+ "SSDT", ssdt->buf->len, 1, oem_id, "VMGENID");
free_aml_allocator();
}