From: ira.weiny@intel.com
To: Dave Hansen <dave.hansen@linux.intel.com>,
"H. Peter Anvin" <hpa@zytor.com>,
Dan Williams <dan.j.williams@intel.com>
Cc: Ira Weiny <ira.weiny@intel.com>,
Fenghua Yu <fenghua.yu@intel.com>,
Rick Edgecombe <rick.p.edgecombe@intel.com>,
linux-kernel@vger.kernel.org
Subject: [PATCH V8 22/44] entry: Pass pt_regs to irqentry_exit_cond_resched()
Date: Thu, 27 Jan 2022 09:54:43 -0800 [thread overview]
Message-ID: <20220127175505.851391-23-ira.weiny@intel.com> (raw)
In-Reply-To: <20220127175505.851391-1-ira.weiny@intel.com>
From: Ira Weiny <ira.weiny@intel.com>
Auxiliary pt_regs space needs to be manipulated by the generic
entry/exit code.
Unfortunately, the call to irqentry_exit_cond_resched() from
xen_pv_evtchn_do_upcall() bypasses the 'normal' irqentry_exit() call.
Normally the irqentry_exit() would take care of handling any auxiliary
pt_regs but because of this bypass irqentry_exit_cond_resched() is
required to handle it.
Add pt_regs to irqentry_exit_cond_resched() so that any auxiliary
pt_regs data can be handled.
Create an internal exit_cond_resched() call for irqentry_exit() to avoid
passing pt_regs because irqentry_exit() will directly handle any
auxiliary pt_regs data.
Signed-off-by: Ira Weiny <ira.weiny@intel.com>
---
Changes for V8
New Patch
---
arch/x86/entry/common.c | 2 +-
include/linux/entry-common.h | 3 ++-
kernel/entry/common.c | 9 +++++++--
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/arch/x86/entry/common.c b/arch/x86/entry/common.c
index 6c2826417b33..f1ba770d035d 100644
--- a/arch/x86/entry/common.c
+++ b/arch/x86/entry/common.c
@@ -309,7 +309,7 @@ __visible noinstr void xen_pv_evtchn_do_upcall(struct pt_regs *regs)
inhcall = get_and_clear_inhcall();
if (inhcall && !WARN_ON_ONCE(state.exit_rcu)) {
- irqentry_exit_cond_resched();
+ irqentry_exit_cond_resched(regs);
instrumentation_end();
restore_inhcall(inhcall);
} else {
diff --git a/include/linux/entry-common.h b/include/linux/entry-common.h
index ddaffc983e62..14fd329847e7 100644
--- a/include/linux/entry-common.h
+++ b/include/linux/entry-common.h
@@ -451,10 +451,11 @@ irqentry_state_t noinstr irqentry_enter(struct pt_regs *regs);
/**
* irqentry_exit_cond_resched - Conditionally reschedule on return from interrupt
+ * @regs: Pointer to pt_regs of interrupted context
*
* Conditional reschedule with additional sanity checks.
*/
-void irqentry_exit_cond_resched(void);
+void irqentry_exit_cond_resched(struct pt_regs *regs);
void __irqentry_exit_cond_resched(void);
#ifdef CONFIG_PREEMPT_DYNAMIC
diff --git a/kernel/entry/common.c b/kernel/entry/common.c
index 490442a48332..f4210a7fc84d 100644
--- a/kernel/entry/common.c
+++ b/kernel/entry/common.c
@@ -395,7 +395,7 @@ void __irqentry_exit_cond_resched(void)
DEFINE_STATIC_CALL(__irqentry_exit_cond_resched, __irqentry_exit_cond_resched);
#endif
-void irqentry_exit_cond_resched(void)
+static void exit_cond_resched(void)
{
if (IS_ENABLED(CONFIG_PREEMPTION)) {
#ifdef CONFIG_PREEMPT_DYNAMIC
@@ -406,6 +406,11 @@ void irqentry_exit_cond_resched(void)
}
}
+void irqentry_exit_cond_resched(struct pt_regs *regs)
+{
+ exit_cond_resched();
+}
+
noinstr void irqentry_exit(struct pt_regs *regs, irqentry_state_t state)
{
lockdep_assert_irqs_disabled();
@@ -431,7 +436,7 @@ noinstr void irqentry_exit(struct pt_regs *regs, irqentry_state_t state)
}
instrumentation_begin();
- irqentry_exit_cond_resched();
+ exit_cond_resched();
/* Covers both tracing and lockdep */
trace_hardirqs_on();
instrumentation_end();
--
2.31.1
next prev parent reply other threads:[~2022-01-27 17:56 UTC|newest]
Thread overview: 147+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-27 17:54 [PATCH V8 00/44] PKS/PMEM: Add Stray Write Protection ira.weiny
2022-01-27 17:54 ` [PATCH V8 01/44] entry: Create an internal irqentry_exit_cond_resched() call ira.weiny
2022-01-27 17:54 ` [PATCH V8 02/44] Documentation/protection-keys: Clean up documentation for User Space pkeys ira.weiny
2022-01-28 22:39 ` Dave Hansen
2022-02-01 23:49 ` Ira Weiny
2022-02-01 23:54 ` Dave Hansen
2022-01-27 17:54 ` [PATCH V8 03/44] x86/pkeys: Create pkeys_common.h ira.weiny
2022-01-28 22:43 ` Dave Hansen
2022-02-02 1:00 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 04/44] x86/pkeys: Add additional PKEY helper macros ira.weiny
2022-01-28 22:47 ` Dave Hansen
2022-02-02 20:21 ` Ira Weiny
2022-02-02 20:26 ` Dave Hansen
2022-02-02 20:28 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 05/44] x86/fpu: Refactor arch_set_user_pkey_access() ira.weiny
2022-01-28 22:50 ` Dave Hansen
2022-02-02 20:22 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 06/44] mm/pkeys: Add Kconfig options for PKS ira.weiny
2022-01-28 22:54 ` Dave Hansen
2022-01-28 23:10 ` Ira Weiny
2022-01-28 23:51 ` Dave Hansen
2022-02-04 19:08 ` Ira Weiny
2022-02-09 5:34 ` Ira Weiny
2022-02-14 19:20 ` Dave Hansen
2022-02-14 23:03 ` Ira Weiny
2022-01-29 0:06 ` Dave Hansen
2022-02-04 19:14 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 07/44] x86/pkeys: Add PKS CPU feature bit ira.weiny
2022-01-28 23:05 ` Dave Hansen
2022-02-04 19:21 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 08/44] x86/fault: Adjust WARN_ON for PKey fault ira.weiny
2022-01-28 23:10 ` Dave Hansen
2022-02-04 20:06 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 09/44] x86/pkeys: Enable PKS on cpus which support it ira.weiny
2022-01-28 23:18 ` Dave Hansen
2022-01-28 23:41 ` Ira Weiny
2022-01-28 23:53 ` Dave Hansen
2022-01-27 17:54 ` [PATCH V8 10/44] Documentation/pkeys: Add initial PKS documentation ira.weiny
2022-01-28 23:57 ` Dave Hansen
2022-01-27 17:54 ` [PATCH V8 11/44] mm/pkeys: Define static PKS key array and default values ira.weiny
2022-01-29 0:02 ` Dave Hansen
2022-02-04 23:54 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 12/44] mm/pkeys: Define PKS page table macros ira.weiny
2022-01-27 17:54 ` [PATCH V8 13/44] mm/pkeys: Add initial PKS Test code ira.weiny
2022-01-31 19:30 ` Edgecombe, Rick P
2022-02-09 23:44 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 14/44] x86/pkeys: Introduce pks_write_pkrs() ira.weiny
2022-01-29 0:12 ` Dave Hansen
2022-01-29 0:16 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 15/44] x86/pkeys: Preserve the PKS MSR on context switch ira.weiny
2022-01-29 0:22 ` Dave Hansen
2022-02-11 6:10 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 16/44] mm/pkeys: Introduce pks_mk_readwrite() ira.weiny
2022-01-28 14:13 ` kernel test robot
2022-01-31 23:10 ` Edgecombe, Rick P
2022-02-18 2:22 ` Ira Weiny
2022-02-01 17:40 ` Dave Hansen
2022-02-18 4:39 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 17/44] mm/pkeys: Introduce pks_mk_noaccess() ira.weiny
2022-01-29 3:42 ` kernel test robot
2022-01-27 17:54 ` [PATCH V8 18/44] x86/fault: Add a PKS test fault hook ira.weiny
2022-01-31 19:56 ` Edgecombe, Rick P
2022-02-11 20:40 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 19/44] mm/pkeys: PKS Testing, add pks_mk_*() tests ira.weiny
2022-02-01 17:45 ` Dave Hansen
2022-02-18 5:34 ` Ira Weiny
2022-02-18 15:28 ` Dave Hansen
2022-02-18 17:25 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 20/44] mm/pkeys: Add PKS test for context switching ira.weiny
2022-02-01 17:43 ` Edgecombe, Rick P
2022-02-22 21:42 ` Ira Weiny
2022-02-01 17:47 ` Edgecombe, Rick P
2022-02-01 19:52 ` Edgecombe, Rick P
2022-02-18 6:03 ` Ira Weiny
2022-02-18 6:02 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 21/44] x86/entry: Add auxiliary pt_regs space ira.weiny
2022-01-27 17:54 ` ira.weiny [this message]
2022-01-27 17:54 ` [PATCH V8 23/44] entry: Add architecture auxiliary pt_regs save/restore calls ira.weiny
2022-01-27 17:54 ` [PATCH V8 24/44] x86/entry: Define arch_{save|restore}_auxiliary_pt_regs() ira.weiny
2022-01-27 17:54 ` [PATCH V8 25/44] x86/pkeys: Preserve PKRS MSR across exceptions ira.weiny
2022-01-27 17:54 ` [PATCH V8 26/44] x86/fault: Print PKS MSR on fault ira.weiny
2022-02-01 18:13 ` Edgecombe, Rick P
2022-02-18 6:01 ` Ira Weiny
2022-02-18 17:28 ` Edgecombe, Rick P
2022-02-18 20:20 ` Dave Hansen
2022-02-18 20:54 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 27/44] mm/pkeys: Add PKS exception test ira.weiny
2022-01-27 17:54 ` [PATCH V8 28/44] mm/pkeys: Introduce pks_update_exception() ira.weiny
2022-01-27 17:54 ` [PATCH V8 29/44] mm/pkeys: Introduce PKS fault callbacks ira.weiny
2022-01-27 17:54 ` [PATCH V8 30/44] mm/pkeys: Test setting a PKS key in a custom fault callback ira.weiny
2022-02-01 0:55 ` Edgecombe, Rick P
2022-03-01 15:39 ` Ira Weiny
2022-02-01 17:42 ` Edgecombe, Rick P
2022-02-11 20:44 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 31/44] mm/pkeys: Add pks_available() ira.weiny
2022-01-27 17:54 ` [PATCH V8 32/44] memremap_pages: Add Kconfig for DEVMAP_ACCESS_PROTECTION ira.weiny
2022-02-04 15:49 ` Dan Williams
2022-01-27 17:54 ` [PATCH V8 33/44] memremap_pages: Introduce pgmap_protection_available() ira.weiny
2022-02-04 16:19 ` Dan Williams
2022-02-28 16:59 ` Ira Weiny
2022-03-01 15:56 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 34/44] memremap_pages: Introduce a PGMAP_PROTECTION flag ira.weiny
2022-01-27 17:54 ` [PATCH V8 35/44] memremap_pages: Introduce devmap_protected() ira.weiny
2022-01-27 17:54 ` [PATCH V8 36/44] memremap_pages: Reserve a PKS PKey for eventual use by PMEM ira.weiny
2022-02-01 18:35 ` Edgecombe, Rick P
2022-02-04 17:12 ` Dan Williams
2022-02-05 5:40 ` Ira Weiny
2022-02-05 8:19 ` Dan Williams
2022-02-06 18:14 ` Dan Williams
2022-02-08 22:48 ` Ira Weiny
2022-02-08 23:22 ` Dan Williams
2022-02-08 23:42 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 37/44] memremap_pages: Set PKS PKey in PTEs if PGMAP_PROTECTIONS is requested ira.weiny
2022-02-04 17:41 ` Dan Williams
2022-03-01 18:15 ` Ira Weiny
2022-01-27 17:54 ` [PATCH V8 38/44] memremap_pages: Define pgmap_mk_{readwrite|noaccess}() calls ira.weiny
2022-02-04 18:35 ` Dan Williams
2022-02-05 0:09 ` Ira Weiny
2022-02-05 0:19 ` Dan Williams
2022-02-05 0:25 ` Dan Williams
2022-02-05 0:27 ` Dan Williams
2022-02-05 5:55 ` Ira Weiny
2022-02-05 6:28 ` Dan Williams
2022-02-22 22:05 ` Ira Weiny
2022-01-27 17:55 ` [PATCH V8 39/44] memremap_pages: Add memremap.pks_fault_mode ira.weiny
2022-02-01 1:16 ` Edgecombe, Rick P
2022-03-02 0:20 ` Ira Weiny
2022-02-04 19:01 ` Dan Williams
2022-03-02 2:00 ` Ira Weiny
2022-01-27 17:55 ` [PATCH V8 40/44] memremap_pages: Add pgmap_protection_flag_invalid() ira.weiny
2022-02-01 1:37 ` Edgecombe, Rick P
2022-03-02 2:01 ` Ira Weiny
2022-02-04 19:18 ` Dan Williams
2022-01-27 17:55 ` [PATCH V8 41/44] kmap: Ensure kmap works for devmap pages ira.weiny
2022-02-04 21:07 ` Dan Williams
2022-03-01 19:45 ` Ira Weiny
2022-03-01 19:50 ` Ira Weiny
2022-03-01 20:05 ` Dan Williams
2022-03-01 23:03 ` Ira Weiny
2022-01-27 17:55 ` [PATCH V8 42/44] dax: Stray access protection for dax_direct_access() ira.weiny
2022-02-04 5:19 ` Dan Williams
2022-03-01 18:13 ` Ira Weiny
2022-01-27 17:55 ` [PATCH V8 43/44] nvdimm/pmem: Enable stray access protection ira.weiny
2022-02-04 21:10 ` Dan Williams
2022-03-01 18:18 ` Ira Weiny
2022-01-27 17:55 ` [PATCH V8 44/44] devdax: " ira.weiny
2022-02-04 21:12 ` Dan Williams
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=20220127175505.851391-23-ira.weiny@intel.com \
--to=ira.weiny@intel.com \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rick.p.edgecombe@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.