linuxppc-dev.lists.ozlabs.org archive mirror
 help / color / mirror / Atom feed
From: Nicholas Piggin <npiggin@gmail.com>
To: linuxppc-dev@lists.ozlabs.org
Cc: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>,
	Nicholas Piggin <npiggin@gmail.com>
Subject: [RFC PATCH 21/27] powerpc/64s/exception: soft nmi interrupt should not use ret_from_except
Date: Sun, 15 Sep 2019 11:28:07 +1000	[thread overview]
Message-ID: <20190915012813.29317-22-npiggin@gmail.com> (raw)
In-Reply-To: <20190915012813.29317-1-npiggin@gmail.com>

The soft nmi handler does not reconcile interrupt state, so it should
not return via the normal ret_from_except path. Return like other NMIs,
using the EXCEPTION_RESTORE_REGS macro.

This becomes important when the scv interrupt is implemented, which
must handle soft-masked interrupts that have r13 set to something other
than the PACA -- returning to kernel in this case must restore r13.

Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
---
 arch/powerpc/kernel/exceptions-64s.S | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
index 38bc66b95516..af1264cd005f 100644
--- a/arch/powerpc/kernel/exceptions-64s.S
+++ b/arch/powerpc/kernel/exceptions-64s.S
@@ -2740,7 +2740,11 @@ EXC_COMMON_BEGIN(soft_nmi_common)
 	bl	save_nvgprs
 	addi	r3,r1,STACK_FRAME_OVERHEAD
 	bl	soft_nmi_interrupt
-	b	ret_from_except
+	/* Clear MSR_RI before setting SRR0 and SRR1. */
+	li	r9,0
+	mtmsrd	r9,1
+	EXCEPTION_RESTORE_REGS hsrr=0
+	RFI_TO_KERNEL
 
 #endif /* CONFIG_PPC_WATCHDOG */
 
-- 
2.23.0


  parent reply	other threads:[~2019-09-15  2:12 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-15  1:27 [RFC PATCH 00/27] current interrupt series plus scv syscall Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 01/27] powerpc/64s/exception: Introduce INT_DEFINE parameter block for code generation Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 02/27] powerpc/64s/exception: Add GEN_COMMON macro that uses INT_DEFINE parameters Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 03/27] powerpc/64s/exception: Add GEN_KVM " Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 04/27] powerpc/64s/exception: Expand EXC_COMMON and EXC_COMMON_ASYNC macros Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 05/27] powerpc/64s/exception: Move all interrupt handlers to new style code gen macros Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 06/27] powerpc/64s/exception: Remove old INT_ENTRY macro Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 07/27] powerpc/64s/exception: Remove old INT_COMMON macro Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 08/27] powerpc/64s/exception: Remove old INT_KVM_HANDLER Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 09/27] powerpc/64s/exception: Add ISIDE option Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 10/27] powerpc/64s/exception: move real->virt switch into the common handler Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 11/27] powerpc/64s/exception: move soft-mask test to common code Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 12/27] powerpc/64s/exception: move KVM " Nicholas Piggin
2019-09-15  1:27 ` [RFC PATCH 13/27] powerpc/64s/exception: remove confusing IEARLY option Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 14/27] powerpc/64s/exception: remove the SPR saving patch code macros Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 15/27] powerpc/64s/exception: trim unused arguments from KVMTEST macro Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 16/27] powerpc/64s/exception: hdecrementer avoid touching the stack Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 17/27] powerpc/64s/exception: re-inline some handlers Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 18/27] powerpc/64s/exception: Clean up SRR specifiers Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 19/27] powerpc/64s/exception: add more comments for interrupt handlers Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 20/27] powerpc/64s/exception: only test KVM in SRR interrupts when PR KVM is supported Nicholas Piggin
2019-09-15  1:28 ` Nicholas Piggin [this message]
2019-09-15  1:28 ` [RFC PATCH 22/27] powerpc/64: system call remove non-volatile GPR save optimisation Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 23/27] powerpc/64: system call implement the bulk of the logic in C Nicholas Piggin
2019-10-02  8:21   ` Michal Suchánek
2019-10-02  3:10     ` Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 24/27] powerpc/64s: interrupt return " Nicholas Piggin
2019-10-02  8:20   ` Michal Suchánek
2019-09-15  1:28 ` [RFC PATCH 25/27] powerpc/64s/exception: remove lite interrupt return Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 26/27] powerpc/64s/exception: treat NIA below __end_interrupts as soft-masked Nicholas Piggin
2019-09-15  1:28 ` [RFC PATCH 27/27] powerpc/64s: system call support for scv/rfscv instructions Nicholas Piggin
2019-10-02  8:21   ` Michal Suchánek
2019-10-02  8:20 ` [RFC PATCH 00/27] current interrupt series plus scv syscall Michal Suchánek
2019-10-02  3:13   ` Nicholas Piggin
2019-10-30 12:55     ` Michal Suchánek

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=20190915012813.29317-22-npiggin@gmail.com \
    --to=npiggin@gmail.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=tuliom@linux.ibm.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;
as well as URLs for NNTP newsgroup(s).