mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Shuai Xue <xueshuai@linux.alibaba.com>
To: tony.luck@intel.com, guohanjun@huawei.com, mchehab@kernel.org,
	yazen.ghannam@amd.com
Cc: dave.jiang@intel.com, Smita.KoralahalliChannabasappa@amd.com,
	leitao@debian.org, pengdonglin@xiaomi.com,
	xueshuai@linux.alibaba.com, baolin.wang@linux.alibaba.com,
	benjamin.cheatham@amd.com, bp@alien8.de,
	dan.j.williams@intel.com, james.morse@arm.com, lenb@kernel.org,
	linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org,
	rafael@kernel.org, zhuo.song@linux.alibaba.com
Subject: [PATCH 0/3] ACPI: APEI: GHES: Performance improvements for error notification handlers
Date: Wed,  3 Dec 2025 21:02:50 +0800	[thread overview]
Message-ID: <20251203130253.73888-1-xueshuai@linux.alibaba.com> (raw)

This patch series improves the performance of GHES error notification handlers
(NMI and SEA) by optimizing how they check for active error conditions.

Currently, both ghes_notify_nmi() and ghes_notify_sea() perform expensive
operations on each invocation to determine if there are actual error records
to process. This includes mapping/unmapping physical addresses and accessing
hardware registers, which causes significant overhead especially on systems
with many cores.

The optimizations introduced in this series:
1. Pre-map error status registers during initialization
2. Directly check for active errors using mapped virtual addresses
3. Extract common functionality into reusable helper functions
4. Apply the same optimization to both NMI and SEA handlers

These changes significantly reduce the overhead of error checking:
- NMI handler: From ~15,000 TSC cycles to ~900 cycles
- SEA handler: From 8,138.3 ns to a much faster check

The initial idea for this optimization came from Tony Luck [1], who identified
and implemented the approach for the NMI handler. This series extends the
same concept to the SEA handler and refactors common code into shared helpers.

Patch 1 (Tony Luck): Improves ghes_notify_nmi() status check by pre-mapping
                     error status registers and avoiding repeated mappings.

Patch 2 (Shuai Xue): Extracts common helper functions for error status handling
                     to eliminate code duplication.

Patch 3 (Shuai Xue): Applies the same optimization to ghes_notify_sea() to improve
                     ARMv8 system performance.

https://lore.kernel.org/lkml/20251103230547.8715-1-tony.luck@intel.com/

Shuai Xue (2):
  ACPI: APEI: GHES: Extract helper functions for error status handling
  ACPI: APEI: GHES: Improve ghes_notify_sea() status check

Tony Luck (1):
  ACPI: APEI: GHES: Improve ghes_notify_nmi() status check

 drivers/acpi/apei/ghes.c | 111 ++++++++++++++++++++++++++++++++++++---
 include/acpi/ghes.h      |   1 +
 2 files changed, 106 insertions(+), 6 deletions(-)

-- 
2.39.3


             reply	other threads:[~2025-12-03 13:02 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-12-03 13:02 Shuai Xue [this message]
2025-12-03 13:02 ` [PATCH 1/3] ACPI: APEI: GHES: Improve ghes_notify_nmi() status check Shuai Xue
2025-12-17  1:13   ` Hanjun Guo
2025-12-18  6:01     ` Shuai Xue
2025-12-03 13:02 ` [PATCH 2/3] ACPI: APEI: GHES: Extract helper functions for error status handling Shuai Xue
2025-12-17  1:25   ` Hanjun Guo
2025-12-18  6:03     ` Shuai Xue
2025-12-03 13:02 ` [PATCH 3/3] ACPI: APEI: GHES: Improve ghes_notify_sea() status check Shuai Xue
2025-12-11 18:44 ` [PATCH 0/3] ACPI: APEI: GHES: Performance improvements for error notification handlers Luck, Tony

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=20251203130253.73888-1-xueshuai@linux.alibaba.com \
    --to=xueshuai@linux.alibaba.com \
    --cc=Smita.KoralahalliChannabasappa@amd.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=benjamin.cheatham@amd.com \
    --cc=bp@alien8.de \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=guohanjun@huawei.com \
    --cc=james.morse@arm.com \
    --cc=leitao@debian.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mchehab@kernel.org \
    --cc=pengdonglin@xiaomi.com \
    --cc=rafael@kernel.org \
    --cc=tony.luck@intel.com \
    --cc=yazen.ghannam@amd.com \
    --cc=zhuo.song@linux.alibaba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®