Re: [PATCH v2 2/3] ACPI: APEI: GHES: Extract helper functions for error status handling

From: Shuai Xue
Date: Mon Jan 05 2026 - 00:42:20 EST




On 1/5/26 1:12 PM, Donglin Peng wrote:
On Sun, Jan 4, 2026 at 8:05 PM Shuai Xue <xueshuai@xxxxxxxxxxxxxxxxx> wrote:

Refactors the GHES driver by extracting common functionality into
reusable helper functions:

1. ghes_has_active_errors() - Checks if any error sources in a given list
have active errors
2. ghes_map_error_status() - Maps error status address to virtual address
3. ghes_unmap_error_status() - Unmaps error status virtual address

These helpers eliminate code duplication in the NMI path and prepare for
similar usage in the SEA path in a subsequent patch.

No functional change intended.

Tested-by: Tony Luck <tony.luck@xxxxxxxxx>
Reviewed-by: Tony Luck <tony.luck@xxxxxxxxx>
Signed-off-by: Shuai Xue <xueshuai@xxxxxxxxxxxxxxxxx>
---
drivers/acpi/apei/ghes.c | 93 +++++++++++++++++++++++++++++++---------
1 file changed, 72 insertions(+), 21 deletions(-)

diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 0e97d50b0240..7600063fe263 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -1406,6 +1406,75 @@ static int ghes_in_nmi_spool_from_list(struct list_head *rcu_list,
return ret;
}

+/**
+ * ghes_has_active_errors - Check if there are active errors in error sources
+ * @ghes_list: List of GHES entries to check for active errors
+ *
+ * This function iterates through all GHES entries in the given list and
+ * checks if any of them has active error status by reading the error
+ * status register.
+ *
+ * Return: true if at least one source has active error, false otherwise.
+ */
+static bool __maybe_unused ghes_has_active_errors(struct list_head *ghes_list)
+{
+ bool active_error = false;
+ struct ghes *ghes;
+
+ rcu_read_lock();

Nit: Use `guard(rcu)()` instead of explicit
`rcu_read_lock()`/`rcu_read_unlock()`.

Thanks,
Donglin


Hi, Donglin,

Good point. Will fix in next version.

Thanks.
Shuai