[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 01/12] acpi/ghes: add a firmware file with HEST address
|
From: |
Mauro Carvalho Chehab |
|
Subject: |
[PATCH v9 01/12] acpi/ghes: add a firmware file with HEST address |
|
Date: |
Sun, 25 Aug 2024 05:45:56 +0200 |
Store HEST table address at GPA, placing its content at
hest_addr_le variable.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
Change from v8:
- hest_addr_lr is now pointing to the error source size and data.
Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
---
hw/acpi/ghes.c | 15 +++++++++++++++
include/hw/acpi/ghes.h | 1 +
2 files changed, 16 insertions(+)
diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c
index e9511d9b8f71..529c14e3289f 100644
--- a/hw/acpi/ghes.c
+++ b/hw/acpi/ghes.c
@@ -30,6 +30,7 @@
#define ACPI_GHES_ERRORS_FW_CFG_FILE "etc/hardware_errors"
#define ACPI_GHES_DATA_ADDR_FW_CFG_FILE "etc/hardware_errors_addr"
+#define ACPI_HEST_ADDR_FW_CFG_FILE "etc/acpi_table_hest_addr"
/* The max size in bytes for one error block */
#define ACPI_GHES_MAX_RAW_DATA_LENGTH (1 * KiB)
@@ -367,11 +368,22 @@ void acpi_build_hest(GArray *table_data, BIOSLinker
*linker,
acpi_table_begin(&table, table_data);
+ int hest_offset = table_data->len;
+
/* Error Source Count */
build_append_int_noprefix(table_data, ACPI_GHES_ERROR_SOURCE_COUNT, 4);
build_ghes_v2(table_data, ACPI_HEST_SRC_ID_SEA, linker);
acpi_table_end(linker, &table);
+
+ /*
+ * tell firmware to write into GPA the address of HEST via fw_cfg,
+ * once initialized.
+ */
+ bios_linker_loader_write_pointer(linker,
+ ACPI_HEST_ADDR_FW_CFG_FILE, 0,
+ sizeof(uint64_t),
+ ACPI_BUILD_TABLE_FILE, hest_offset);
}
void acpi_ghes_add_fw_cfg(AcpiGhesState *ags, FWCfgState *s,
@@ -385,6 +397,9 @@ void acpi_ghes_add_fw_cfg(AcpiGhesState *ags, FWCfgState *s,
fw_cfg_add_file_callback(s, ACPI_GHES_DATA_ADDR_FW_CFG_FILE, NULL, NULL,
NULL, &(ags->ghes_addr_le), sizeof(ags->ghes_addr_le), false);
+ fw_cfg_add_file_callback(s, ACPI_HEST_ADDR_FW_CFG_FILE, NULL, NULL,
+ NULL, &(ags->hest_addr_le), sizeof(ags->hest_addr_le), false);
+
ags->present = true;
}
diff --git a/include/hw/acpi/ghes.h b/include/hw/acpi/ghes.h
index 674f6958e905..28b956acb19a 100644
--- a/include/hw/acpi/ghes.h
+++ b/include/hw/acpi/ghes.h
@@ -63,6 +63,7 @@ enum {
};
typedef struct AcpiGhesState {
+ uint64_t hest_addr_le;
uint64_t ghes_addr_le;
bool present; /* True if GHES is present at all on this board */
} AcpiGhesState;
--
2.46.0
- [PATCH v9 00/12] Add ACPI CPER firmware first error injection on ARM emulation, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 11/12] target/arm: add an experimental mpidr arm cpu property object, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 10/12] scripts/ghes_inject: add a script to generate GHES error inject, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 12/12] scripts/arm_processor_error.py: retrieve mpidr if not filled, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 03/12] acpi/ghes: rename etc/hardware_error file macros, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 05/12] acpi/ghes: add a notifier to notify when error data is ready, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 06/12] acpi/generic_event_device: add an APEI error device, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 09/12] docs: acpi_hest_ghes: fix documentation for CPER size, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 01/12] acpi/ghes: add a firmware file with HEST address,
Mauro Carvalho Chehab <=
- [PATCH v9 07/12] arm/virt: Wire up a GED error device for ACPI / GHES, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 04/12] acpi/ghes: better name GHES memory error function, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 02/12] acpi/ghes: rework the logic to handle HEST source ID, Mauro Carvalho Chehab, 2024/08/24
- [PATCH v9 08/12] qapi/acpi-hest: add an interface to do generic CPER error injection, Mauro Carvalho Chehab, 2024/08/24