mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Narayana Murty N <nnmlinux@linux.ibm.com>
To: mahesh@linux.ibm.com, maddy@linux.ibm.com, mpe@ellerman.id.au,
	christophe.leroy@csgroup.eu, oohall@gmail.com, npiggin@gmail.com,
	tpearson@raptorengineering.com, alex@shazbot.org
Cc: linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
	sbhat@linux.ibm.com, sourabhjain@linux.ibm.com,
	harshpb@linux.ibm.com
Subject: Re: [PATCH v4 0/5] powerpc/eeh: Add RTAS-based error injection support on pSeries
Date: Tue, 1 Sep 2026 23:38:47 +0530	[thread overview]
Message-ID: <787e72ab-3f22-4346-b377-1044f36c5e83@linux.ibm.com> (raw)
In-Reply-To: <20260831065441.48654-1-nnmlinux@linux.ibm.com>

Hi,

I noticed that I missed adding the changelog in the v4 cover letter. 
Adding it here for reference v4 changes from v3:


On 31/08/26 12:24 PM, Narayana Murty N wrote:
> The pSeries EEH error-injection backend currently implements a limited
> software-generated MMIO failure and does not use the error-injection
> services provided by RTAS.
> 
> This series replaces that implementation with the PAPR-defined RTAS
> workflow based on:
> 
>    - ibm,open-errinjct
>    - ibm,errinjct
>    - ibm,close-errinjct
> 
> The implementation opens an RTAS error-injection session, prepares the
> firmware work buffer, performs the requested injection, and closes the
> session on both success and failure paths.
> 
> The existing EEH userspace ABI is preserved. EEH_ERR_TYPE_32 and
> EEH_ERR_TYPE_64 continue to represent generic 32-bit and 64-bit IOA
> bus-error injection requests. The pSeries backend maps these values to
> the corresponding RTAS error types, while the PowerNV backend
> explicitly maps them to the corresponding OPAL types.
> 
> Additional generic EEH error types (EEH_ERR_TYPE_RECOVERED_SPECIAL_EVENT,
> EEH_ERR_TYPE_CORRUPTED_PAGE, and the cache/TLB corruption types) are now
> defined in the UAPI header and mapped explicitly to RTAS firmware encodings
> by the pSeries backend. Platform backends that do not support a valid
> generic type return -EOPNOTSUPP.
> 
> No existing userspace ABI values are changed.
> 
> The current injection path can be exercised for VFIO-assigned devices
> through VFIO_EEH_PE_INJECT_ERR. The guest or userspace VFIO application
> continues to use the same generic EEH type and function values,
> independent of whether the host platform uses RTAS or OPAL.
> 
> The series also handles the unusual return format of
> ibm,open-errinjct:
> 
> rets[0] = error-injection session token
> rets[1] = RTAS status
> 
> rtas_call() now returns rets[1] as the status and places the session
> token in outputs[0], preserving the normal kernel rtas_call()
> convention.
> 
> sys_rtas() is intentionally unchanged because it exposes the raw RTAS
> return cells to userspace. Userspace therefore continues to receive
> the session token and status in their PAPR-defined positions.
> 
> The RTAS work buffer is allocated during RTAS initialization below:
> 
> min(ppc64_rma_size, RTAS_INSTANTIATE_MAX)
> 
> using the same accessible-memory limit used for rtas_rmo_buf. The
> kernel populates the buffer through its virtual mapping but passes its
> physical address to firmware.
> 
> The complete open, inject and close sequence is serialized with a
> mutex. RTAS busy and extended-delay return values are handled for all
> three calls. A session token value of zero is accepted, and session
> state is tracked independently from the token value.
> 
> The patches are organised as follows:
> 
> Handle the special ibm,open-errinjct return format in rtas_call().
> Allocate an RTAS-accessible error-injection work buffer.
> Add pSeries RTAS parameter validation and buffer encoding helpers.
> Implement RTAS-based pSeries EEH error injection.
> Explicitly map generic EEH error types to OPAL types on PowerNV.
> 
> Testing was performed on PowerVM with firmware providing the RTAS
> error-injection services and with the corresponding QEMU support:
> 
> https://lore.kernel.org/qemu-devel/20260520095446.64206-1-nnmlinux@linux.ibm.com/
> 
> Signed-off-by: Narayana Murty N <nnmlinux@linux.ibm.com>

The corresponding QEMU v5 series is posted here:
https://lore.kernel.org/qemu-devel/20260901174110.45356-1-nnmlinux@linux.ibm.com/ 


Change Log:

V3 -> V4:
  * Use the RTAS work area allocator instead of adding a dedicated 
global error-injection buffer.
  * Keep sys_rtas() raw return-cell semantics unchanged while handling 
the special ibm,open-errinjct return format in rtas_call().
  * Treat ibm,open-errinjct with fewer than two return cells as invalid
rtas_call() usage instead of interpreting rets[0] as status.
  * Use normal Linux errno values in internal validation helpers instead 
of RTAS status values.
  * Simplify the pSeries RTAS open/inject/close flow.
  * Keep close-session failure as cleanup reporting without overwriting 
the primary operation status.
  * Add VFIO sPAPR-side address normalization before dispatching IOA 
error injection to the platform EEH backend.
  * Normalize IOA addresses based on the IOA error type, not only 
selected function codes.
  * Keep the generic EEH ABI values unchanged and keep pSeries RTAS and
PowerNV OPAL mappings explicit.

V2 -> V3:
  * Fixed ibm,open-errinjct return handling to correctly process 
firmware responses.
  * Allocate the error-injection buffer in RTAS-accessible memory 
instead of general kernel memory.
  * Pass the physical address of the error-injection buffer to firmware 
(previously incorrect address type).
  * Accept session token zero as a valid token (previously rejected 
erroneously).
  * Handle RTAS busy and extended-delay return codes for open-inject, 
and close calls.
  * Simplified the validation helper — reduced complexity and removed 
redundant checks.
  * Simplified the buffer-preparation helper for cleaner, more 
maintainable code.
  * Validate that all required RTAS tokens are present before attempting 
to open a session.
  * Added explicit generic EEH-to-OPAL error-type mapping for the 
PowerNV platform.

v1 -> v2: 
https://lore.kernel.org/all/20260527072433.94510-1-nnmlinux@linux.ibm.com/
  * Addressed all review comments from Sourabh Jain
    - Removed unnecessary empty line in rtas_call()
    - Enhanced comment to explain PAPR specification requirements
    - Corrected misleading comment about output handling
    - Improved else block comment for better code clarity
  * Fixed kernel test robot warnings
    - Fixed kernel-doc warning for __maybe_unused parameter
    - Confirmed sparse warnings are false positives (correct endianness 
handling)
  * Added PowerNV platform abstraction layer (new Patch 5)
    - Maps EEH error types to OPAL-specific types
    - Simplifies type handling by direct variable update
  * Improved code comments and documentation throughout
  * Added Reported-by tags for kernel test robot findings
  * Split into logical 5-patch series for better review

RFC -> v1: 
https://lore.kernel.org/all/20251205094510.4671-1-nnmlinux@linux.ibm.com/
  * Initial 4-patch series
  * Fixed PAPR ibm,open-errinjct output format (token,status order)
  * Added pr_fmt handling for EEH subsystem compatibility
  * Implemented comprehensive validation helpers

RFC: 
https://lore.kernel.org/all/20251107091009.43034-1-nnmlinux@linux.ibm.com/
  * Initial RFC implementation

Thanks,
Narayana
> 
> Narayana Murty N (5):
>    powerpc/rtas: Handle ibm,open-errinjct return format
>    vfio/spapr_tce: Normalize EEH IOA error injection addresses
>    powerpc/pseries/eeh: Add RTAS error validation helpers
>    powerpc/pseries/eeh: Implement RTAS-based EEH error injection
>    powerpc/powernv/eeh: Map VFIO EEH error injection to OPAL
> 
>   arch/powerpc/kernel/rtas.c                   |  78 ++++-
>   arch/powerpc/platforms/powernv/eeh-powernv.c |  27 +-
>   arch/powerpc/platforms/pseries/eeh_pseries.c | 328 +++++++++++++++++--
>   drivers/vfio/vfio_iommu_spapr_tce.c          |  90 +++++
>   4 files changed, 484 insertions(+), 39 deletions(-)
> 


      parent reply	other threads:[~2026-09-01 18:09 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-31  6:54 Narayana Murty N
2026-08-31  6:54 ` [PATCH v4 1/5] powerpc/rtas: Handle ibm,open-errinjct return format Narayana Murty N
2026-09-01  9:22   ` Sourabh Jain
2026-08-31  6:54 ` [PATCH v4 2/5] vfio/spapr_tce: Normalize EEH IOA error injection addresses Narayana Murty N
2026-08-31  6:54 ` [PATCH v4 3/5] powerpc/pseries/eeh: Add RTAS error validation helpers Narayana Murty N
2026-08-31  6:54 ` [PATCH v4 4/5] powerpc/pseries/eeh: Implement RTAS-based EEH error injection Narayana Murty N
2026-09-02  5:16   ` Sourabh Jain
2026-08-31  6:54 ` [PATCH v4 5/5] powerpc/powernv/eeh: Map VFIO EEH error injection to OPAL Narayana Murty N
2026-09-01 18:08 ` Narayana Murty N [this message]

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=787e72ab-3f22-4346-b377-1044f36c5e83@linux.ibm.com \
    --to=nnmlinux@linux.ibm.com \
    --cc=alex@shazbot.org \
    --cc=christophe.leroy@csgroup.eu \
    --cc=harshpb@linux.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=maddy@linux.ibm.com \
    --cc=mahesh@linux.ibm.com \
    --cc=mpe@ellerman.id.au \
    --cc=npiggin@gmail.com \
    --cc=oohall@gmail.com \
    --cc=sbhat@linux.ibm.com \
    --cc=sourabhjain@linux.ibm.com \
    --cc=tpearson@raptorengineering.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®