From: Igor Mammedov <imammedo@redhat.com>
To: Gavin Shan <gshan@redhat.com>
Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org,
mchehab+huawei@kernel.org, jonathan.cameron@huawei.com,
armbru@redhat.com, mst@redhat.com, anisinha@redhat.com,
gengdongjiu1@gmail.com, peter.maydell@linaro.org,
pbonzini@redhat.com, shan.gavin@gmail.com
Subject: Re: [PATCH 5/5] acpi/ghes: Use error_fatal in acpi_ghes_memory_errors()
Date: Mon, 1 Dec 2025 11:12:14 +0100 [thread overview]
Message-ID: <20251201111214.1e432e82@imammedo> (raw)
In-Reply-To: <20251127004435.2098335-6-gshan@redhat.com>
On Thu, 27 Nov 2025 10:44:35 +1000
Gavin Shan <gshan@redhat.com> wrote:
> Use error_fatal in acpi_ghes_memory_errors() so that the caller needn't
> explicitly call exit(). The return value of acpi_ghes_memory_errors()
> and ghes_record_cper_errors() is changed to 'bool' indicating an error
> has been raised, to be compatible with what's documented in error.h.
>
> Suggested-by: Igor Mammedov <imammedo@redhat.com>
> Suggested-by: Markus Armbruster <armbru@redhat.com>
> Signed-off-by: Gavin Shan <gshan@redhat.com>
> Reviewed-by: Jonathan Cameron <jonathan.cameron@huawei.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
> hw/acpi/ghes-stub.c | 4 ++--
> hw/acpi/ghes.c | 26 ++++++++++----------------
> include/hw/acpi/ghes.h | 6 +++---
> target/arm/kvm.c | 9 +++------
> 4 files changed, 18 insertions(+), 27 deletions(-)
>
> diff --git a/hw/acpi/ghes-stub.c b/hw/acpi/ghes-stub.c
> index b54f1b093c..5f9313cce9 100644
> --- a/hw/acpi/ghes-stub.c
> +++ b/hw/acpi/ghes-stub.c
> @@ -11,8 +11,8 @@
> #include "qemu/osdep.h"
> #include "hw/acpi/ghes.h"
>
> -int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id,
> - uint64_t physical_address)
> +bool acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id,
> + uint64_t physical_address, Error **errp)
> {
> g_assert_not_reached();
> }
> diff --git a/hw/acpi/ghes.c b/hw/acpi/ghes.c
> index c35883dfa9..3033e93d65 100644
> --- a/hw/acpi/ghes.c
> +++ b/hw/acpi/ghes.c
> @@ -515,14 +515,14 @@ static bool get_ghes_source_offsets(uint16_t source_id,
> NotifierList acpi_generic_error_notifiers =
> NOTIFIER_LIST_INITIALIZER(acpi_generic_error_notifiers);
>
> -void ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,
> +bool ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,
> uint16_t source_id, Error **errp)
> {
> uint64_t cper_addr = 0, read_ack_register_addr = 0, read_ack_register;
>
> if (len > ACPI_GHES_MAX_RAW_DATA_LENGTH) {
> error_setg(errp, "GHES CPER record is too big: %zd", len);
> - return;
> + return false;
> }
>
> if (!ags->use_hest_addr) {
> @@ -531,7 +531,7 @@ void ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,
> } else if (!get_ghes_source_offsets(source_id,
> le64_to_cpu(ags->hest_addr_le),
> &cper_addr, &read_ack_register_addr, errp)) {
> - return;
> + return false;
> }
>
> cpu_physical_memory_read(read_ack_register_addr,
> @@ -542,7 +542,7 @@ void ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,
> error_setg(errp,
> "OSPM does not acknowledge previous error,"
> " so can not record CPER for current error anymore");
> - return;
> + return false;
> }
>
> read_ack_register = cpu_to_le64(0);
> @@ -557,16 +557,17 @@ void ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,
> cpu_physical_memory_write(cper_addr, cper, len);
>
> notifier_list_notify(&acpi_generic_error_notifiers, &source_id);
> +
> + return true;
> }
>
> -int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id,
> - uint64_t physical_address)
> +bool acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id,
> + uint64_t physical_address, Error **errp)
> {
> /* Memory Error Section Type */
> const uint8_t guid[] =
> UUID_LE(0xA5BC1114, 0x6F64, 0x4EDE, 0xB8, 0x63, 0x3E, 0x83, \
> 0xED, 0x7C, 0x83, 0xB1);
> - Error *errp = NULL;
> int data_length;
> g_autoptr(GArray) block = g_array_new(false, true /* clear */, 1);
>
> @@ -583,15 +584,8 @@ int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id,
> /* Build the memory section CPER for above new generic error data entry */
> acpi_ghes_build_append_mem_cper(block, physical_address);
>
> - /* Report the error */
> - ghes_record_cper_errors(ags, block->data, block->len, source_id, &errp);
> -
> - if (errp) {
> - error_report_err(errp);
> - return -1;
> - }
> -
> - return 0;
> + return ghes_record_cper_errors(ags, block->data, block->len,
> + source_id, errp);
> }
>
> AcpiGhesState *acpi_ghes_get_state(void)
> diff --git a/include/hw/acpi/ghes.h b/include/hw/acpi/ghes.h
> index df2ecbf6e4..5b29aae4dd 100644
> --- a/include/hw/acpi/ghes.h
> +++ b/include/hw/acpi/ghes.h
> @@ -98,9 +98,9 @@ void acpi_build_hest(AcpiGhesState *ags, GArray *table_data,
> const char *oem_id, const char *oem_table_id);
> void acpi_ghes_add_fw_cfg(AcpiGhesState *vms, FWCfgState *s,
> GArray *hardware_errors);
> -int acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id,
> - uint64_t error_physical_addr);
> -void ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,
> +bool acpi_ghes_memory_errors(AcpiGhesState *ags, uint16_t source_id,
> + uint64_t error_physical_addr, Error **errp);
> +bool ghes_record_cper_errors(AcpiGhesState *ags, const void *cper, size_t len,
> uint16_t source_id, Error **errp);
>
> /**
> diff --git a/target/arm/kvm.c b/target/arm/kvm.c
> index acda0b3fb4..76aa09810f 100644
> --- a/target/arm/kvm.c
> +++ b/target/arm/kvm.c
> @@ -2456,12 +2456,9 @@ void kvm_arch_on_sigbus_vcpu(CPUState *c, int code, void *addr)
> */
> if (code == BUS_MCEERR_AR) {
> kvm_cpu_synchronize_state(c);
> - if (!acpi_ghes_memory_errors(ags, ACPI_HEST_SRC_ID_SYNC,
> - paddr)) {
> - kvm_inject_arm_sea(c);
> - } else {
> - exit(1);
> - }
> + acpi_ghes_memory_errors(ags, ACPI_HEST_SRC_ID_SYNC,
> + paddr, &error_fatal);
> + kvm_inject_arm_sea(c);
> }
> return;
> }
next prev parent reply other threads:[~2025-12-01 10:17 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-27 0:44 [PATCH 0/5] acpi/ghes: Error object handling improvement Gavin Shan
2025-11-27 0:44 ` [PATCH 1/5] acpi/ghes: Automate data block cleanup in acpi_ghes_memory_errors() Gavin Shan
2025-11-27 8:06 ` Markus Armbruster
2025-12-01 9:32 ` Igor Mammedov
2025-11-27 0:44 ` [PATCH 2/5] acpi/ghes: Abort in acpi_ghes_memory_errors() if necessary Gavin Shan
2025-12-01 9:37 ` Igor Mammedov
2025-11-27 0:44 ` [PATCH 3/5] target/arm/kvm: Exit on error from acpi_ghes_memory_errors() Gavin Shan
2025-11-28 14:07 ` Igor Mammedov
2025-11-28 14:54 ` Markus Armbruster
2025-12-01 10:06 ` Igor Mammedov
2025-11-27 0:44 ` [PATCH 4/5] acpi/ghes: Bail early on error from get_ghes_source_offsets() Gavin Shan
2025-11-27 8:10 ` Markus Armbruster
2025-12-01 10:10 ` Igor Mammedov
2025-12-01 14:15 ` Gavin Shan
2025-11-27 0:44 ` [PATCH 5/5] acpi/ghes: Use error_fatal in acpi_ghes_memory_errors() Gavin Shan
2025-11-27 8:14 ` Markus Armbruster
2025-11-29 1:23 ` Gavin Shan
2025-12-01 10:12 ` Igor Mammedov [this message]
2025-11-28 14:09 ` [PATCH 0/5] acpi/ghes: Error object handling improvement Igor Mammedov
2025-11-29 1:21 ` Gavin Shan
2025-12-01 9:31 ` Igor Mammedov
2025-12-01 12:17 ` Mauro Carvalho Chehab
2025-12-01 14:13 ` Gavin Shan
2025-12-01 14:31 ` Mauro Carvalho Chehab
2025-12-01 14:37 ` Gavin Shan
2025-12-02 12:10 ` Igor Mammedov
2025-12-02 13:20 ` Peter Maydell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251201111214.1e432e82@imammedo \
--to=imammedo@redhat.com \
--cc=anisinha@redhat.com \
--cc=armbru@redhat.com \
--cc=gengdongjiu1@gmail.com \
--cc=gshan@redhat.com \
--cc=jonathan.cameron@huawei.com \
--cc=mchehab+huawei@kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=shan.gavin@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.