From: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
To: benh@kernel.crashing.org, mpe@ellerman.id.au
Cc: anton@samba.org, paulus@samba.org, npiggin@gmail.com,
linuxppc-dev@lists.ozlabs.org,
Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Subject: [RFC PATCH v3 05/12] powerpc: reverse the soft_enable logic
Date: Thu, 25 Aug 2016 11:59:56 +0530 [thread overview]
Message-ID: <1472106603-23336-6-git-send-email-maddy@linux.vnet.ibm.com> (raw)
In-Reply-To: <1472106603-23336-1-git-send-email-maddy@linux.vnet.ibm.com>
"paca->soft_enabled" is used as a flag to mask some of interrupts.
Currently supported flags values and their details:
soft_enabled MSR[EE]
0 0 Disabled (PMI and HMI not masked)
1 1 Enabled
"paca->soft_enabled" is initialized to 1 to make the interripts as
enabled. arch_local_irq_disable() will toggle the value when interrupts
needs to disbled. At this point, the interrupts are not actually disabled,
instead, interrupt vector has code to check for the flag and mask it when it occurs.
By "mask it", it update interrupt paca->irq_happened and return.
arch_local_irq_restore() is called to re-enable interrupts, which checks and
replays interrupts if any occured.
Now, as mentioned, current logic doesnot mask "performance monitoring interrupts"
and PMIs are implemented as NMI. But this patchset depends on local_irq_*
for a successful local_* update. Meaning, mask all possible interrupts during
local_* update and replay them after the update.
So the idea here is to reserve the "paca->soft_enabled" logic. New values and
details:
soft_enabled MSR[EE]
1 0 Disabled (PMI and HMI not masked)
0 1 Enabled
Reason for the this change is to create foundation for a third flag value "2"
for "soft_enabled" to add support to mask PMIs.
Foundation patch to support checking of new flag value for "paca->soft_enabled".
Modify the condition checking for the "soft_enabled".
Signed-off-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
---
arch/powerpc/include/asm/hw_irq.h | 4 ++--
arch/powerpc/kernel/entry_64.S | 5 ++---
2 files changed, 4 insertions(+), 5 deletions(-)
diff --git a/arch/powerpc/include/asm/hw_irq.h b/arch/powerpc/include/asm/hw_irq.h
index a7564b8a4831..c19169ac1fbb 100644
--- a/arch/powerpc/include/asm/hw_irq.h
+++ b/arch/powerpc/include/asm/hw_irq.h
@@ -30,8 +30,8 @@
/*
* flags for paca->soft_enabled
*/
-#define IRQ_DISABLE_MASK_NONE 1
-#define IRQ_DISABLE_MASK_LINUX 0
+#define IRQ_DISABLE_MASK_NONE 0
+#define IRQ_DISABLE_MASK_LINUX 1
#endif /* CONFIG_PPC64 */
diff --git a/arch/powerpc/kernel/entry_64.S b/arch/powerpc/kernel/entry_64.S
index 3078de64824b..b50d79e5bfbc 100644
--- a/arch/powerpc/kernel/entry_64.S
+++ b/arch/powerpc/kernel/entry_64.S
@@ -131,8 +131,7 @@ END_FW_FTR_SECTION_IFSET(FW_FEATURE_SPLPAR)
*/
#if defined(CONFIG_TRACE_IRQFLAGS) && defined(CONFIG_BUG)
lbz r10,PACASOFTIRQEN(r13)
- xori r10,r10,IRQ_DISABLE_MASK_NONE
-1: tdnei r10,0
+1: tdnei r10,IRQ_DISABLE_MASK_NONE
EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING
#endif
@@ -1012,7 +1011,7 @@ _GLOBAL(enter_rtas)
* check it with the asm equivalent of WARN_ON
*/
lbz r0,PACASOFTIRQEN(r13)
-1: tdnei r0,IRQ_DISABLE_MASK_LINUX
+1: tdeqi r0,IRQ_DISABLE_MASK_NONE
EMIT_BUG_ENTRY 1b,__FILE__,__LINE__,BUGFLAG_WARNING
#endif
--
2.7.4
next prev parent reply other threads:[~2016-08-25 6:37 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-25 6:29 [RFC PATCH v3 00/12] powerpc: "paca->soft_enabled" based local atomic operation implementation Madhavan Srinivasan
2016-08-25 6:29 ` [RFC PATCH v3 01/12] powerpc: Add #defs for paca->soft_enabled flags Madhavan Srinivasan
2016-08-25 6:29 ` [RFC PATCH v3 02/12] powerpc: Cleanup to use IRQ_DISABLE_MASK_* macros for paca->soft_enabled update Madhavan Srinivasan
2016-08-25 6:29 ` [RFC PATCH v3 03/12] powerpc: move set_soft_enabled() Madhavan Srinivasan
2016-08-25 6:29 ` [RFC PATCH v3 04/12] powerpc: Use set_soft_enabled api to update paca->soft_enabled Madhavan Srinivasan
2016-08-25 6:29 ` Madhavan Srinivasan [this message]
2016-08-25 6:29 ` [RFC PATCH v3 06/12] powerpc: Avoid using EXCEPTION_PROLOG_1 macro in MASKABLE_* Madhavan Srinivasan
2016-08-25 6:29 ` [RFC PATCH v3 07/12] powerpc: Add new _EXCEPTION_PROLOG_1 macro Madhavan Srinivasan
2016-08-25 6:29 ` [RFC PATCH v3 08/12] powerpc: Introduce new mask bit for soft_enabled Madhavan Srinivasan
2016-08-25 7:05 ` Nicholas Piggin
2016-08-26 1:27 ` Madhavan Srinivasan
2016-08-25 6:30 ` [RFC PATCH v3 09/12] powerpc: Add "bitmask" paramater to MASKABLE_* macros Madhavan Srinivasan
2016-08-25 6:30 ` [RFC PATCH v3 10/12] powerpc: Add support to mask perf interrupts Madhavan Srinivasan
2016-08-25 6:30 ` [RFC PATCH v3 11/12] powerpc: Support to replay PMIs Madhavan Srinivasan
2016-08-25 7:08 ` Nicholas Piggin
2016-08-26 1:29 ` Madhavan Srinivasan
2016-08-25 6:30 ` [RFC PATCH v3 12/12] powerpc: rewrite local_t using soft_irq Madhavan Srinivasan
2016-08-25 7:15 ` [RFC PATCH v3 00/12] powerpc: "paca->soft_enabled" based local atomic operation implementation Nicholas Piggin
2016-08-26 1:31 ` Madhavan Srinivasan
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=1472106603-23336-6-git-send-email-maddy@linux.vnet.ibm.com \
--to=maddy@linux.vnet.ibm.com \
--cc=anton@samba.org \
--cc=benh@kernel.crashing.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=paulus@samba.org \
/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).