From: Chris Metcalf <cmetcalf@ezchip.com> To: Mark Rutland <mark.rutland@arm.com> Cc: <will.deacon@arm.com>, <catalin.marinas@arm.com>, <luto@amacapital.net>, <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org> Subject: Re: [PATCH 2/2] arm64: factor work_pending state machine to C Date: Tue, 5 Jan 2016 13:53:03 -0500 [thread overview] Message-ID: <568C110F.3060503@ezchip.com> (raw) In-Reply-To: <1452015215-29506-2-git-send-email-mark.rutland@arm.com> On 01/05/2016 12:33 PM, Mark Rutland wrote: > Currently ret_fast_syscall, work_pending, and ret_to_user form an ad-hoc > state machine that can be difficult to reason about due to duplicated > code and a large number of branch targets. > > This patch factors the common logic out into the existing > do_notify_resume function, converting the code to C in the process, > making the code more legible. > > This patch tries to mirror the existing behaviour as closely as possible > while using the usual C control flow primitives. There should be no > functional change as a result of this patch. > > Signed-off-by: Mark Rutland<mark.rutland@arm.com> > Cc: Catalin Marinas<catalin.marinas@arm.com> > Cc: Chris Metcalf<cmetcalf@ezchip.com> > Cc: Will Deacon<will.deacon@arm.com> > --- > arch/arm64/kernel/entry.S | 24 +++--------------------- > arch/arm64/kernel/signal.c | 36 ++++++++++++++++++++++++++---------- > 2 files changed, 29 insertions(+), 31 deletions(-) This looks good, and also makes the task isolation change drop in very cleanly (relatively speaking). Since do_notify_resume() is called unconditionally now, we don't have to worry about fussing with the bit numbering for the TIF_xxx flags in asm/threadinfo.h, so that whole part of the patch can be dropped, and the actual change to do_notify_resume() becomes: diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c index 3a6c60beadca..00d0ec3a8e60 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c @@ -25,6 +25,7 @@ #include <linux/uaccess.h> #include <linux/tracehook.h> #include <linux/ratelimit.h> +#include <linux/isolation.h> #include <asm/debug-monitors.h> #include <asm/elf.h> @@ -408,7 +409,8 @@ asmlinkage void do_notify_resume(void) local_irq_disable(); thread_flags = READ_ONCE(current_thread_info()->flags); - if (!(thread_flags & _TIF_WORK_MASK)) + if (!(thread_flags & _TIF_WORK_MASK) && + task_isolation_ready()) break; if (thread_flags & _TIF_NEED_RESCHED) { @@ -428,5 +430,7 @@ asmlinkage void do_notify_resume(void) if (thread_flags & _TIF_FOREIGN_FPSTATE) fpsimd_restore_current_state(); + + task_isolation_enter(); } } For the moment I just added your two commits into my task-isolation tree and pushed it up, but if your changes make it into 4.5 and the task-isolation series doesn't, I will remove them and rebase on 4.5-rc1 once that's released. I've similarly staged the arch/tile enablement changes to go into 4.5 so I can drop them from the task-isolation tree as well at that point. -- Chris Metcalf, EZChip Semiconductor http://www.ezchip.com
WARNING: multiple messages have this Message-ID (diff)
From: cmetcalf@ezchip.com (Chris Metcalf) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH 2/2] arm64: factor work_pending state machine to C Date: Tue, 5 Jan 2016 13:53:03 -0500 [thread overview] Message-ID: <568C110F.3060503@ezchip.com> (raw) In-Reply-To: <1452015215-29506-2-git-send-email-mark.rutland@arm.com> On 01/05/2016 12:33 PM, Mark Rutland wrote: > Currently ret_fast_syscall, work_pending, and ret_to_user form an ad-hoc > state machine that can be difficult to reason about due to duplicated > code and a large number of branch targets. > > This patch factors the common logic out into the existing > do_notify_resume function, converting the code to C in the process, > making the code more legible. > > This patch tries to mirror the existing behaviour as closely as possible > while using the usual C control flow primitives. There should be no > functional change as a result of this patch. > > Signed-off-by: Mark Rutland<mark.rutland@arm.com> > Cc: Catalin Marinas<catalin.marinas@arm.com> > Cc: Chris Metcalf<cmetcalf@ezchip.com> > Cc: Will Deacon<will.deacon@arm.com> > --- > arch/arm64/kernel/entry.S | 24 +++--------------------- > arch/arm64/kernel/signal.c | 36 ++++++++++++++++++++++++++---------- > 2 files changed, 29 insertions(+), 31 deletions(-) This looks good, and also makes the task isolation change drop in very cleanly (relatively speaking). Since do_notify_resume() is called unconditionally now, we don't have to worry about fussing with the bit numbering for the TIF_xxx flags in asm/threadinfo.h, so that whole part of the patch can be dropped, and the actual change to do_notify_resume() becomes: diff --git a/arch/arm64/kernel/signal.c b/arch/arm64/kernel/signal.c index 3a6c60beadca..00d0ec3a8e60 100644 --- a/arch/arm64/kernel/signal.c +++ b/arch/arm64/kernel/signal.c @@ -25,6 +25,7 @@ #include <linux/uaccess.h> #include <linux/tracehook.h> #include <linux/ratelimit.h> +#include <linux/isolation.h> #include <asm/debug-monitors.h> #include <asm/elf.h> @@ -408,7 +409,8 @@ asmlinkage void do_notify_resume(void) local_irq_disable(); thread_flags = READ_ONCE(current_thread_info()->flags); - if (!(thread_flags & _TIF_WORK_MASK)) + if (!(thread_flags & _TIF_WORK_MASK) && + task_isolation_ready()) break; if (thread_flags & _TIF_NEED_RESCHED) { @@ -428,5 +430,7 @@ asmlinkage void do_notify_resume(void) if (thread_flags & _TIF_FOREIGN_FPSTATE) fpsimd_restore_current_state(); + + task_isolation_enter(); } } For the moment I just added your two commits into my task-isolation tree and pushed it up, but if your changes make it into 4.5 and the task-isolation series doesn't, I will remove them and rebase on 4.5-rc1 once that's released. I've similarly staged the arch/tile enablement changes to go into 4.5 so I can drop them from the task-isolation tree as well at that point. -- Chris Metcalf, EZChip Semiconductor http://www.ezchip.com
next prev parent reply other threads:[~2016-01-05 18:53 UTC|newest] Thread overview: 92+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-01-04 19:34 [PATCH v9 00/13] support "task_isolation" mode for nohz_full Chris Metcalf 2016-01-04 19:34 ` Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 01/13] vmstat: provide a function to quiet down the diff processing Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 02/13] vmstat: add vmstat_idle function Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 03/13] lru_add_drain_all: factor out lru_add_drain_needed Chris Metcalf 2016-01-04 19:34 ` Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 04/13] task_isolation: add initial support Chris Metcalf 2016-01-04 19:34 ` Chris Metcalf 2016-01-19 15:42 ` Frederic Weisbecker 2016-01-19 20:45 ` Chris Metcalf 2016-01-19 20:45 ` Chris Metcalf 2016-01-28 0:28 ` Frederic Weisbecker 2016-01-29 18:18 ` Chris Metcalf 2016-01-29 18:18 ` Chris Metcalf 2016-01-30 21:11 ` Frederic Weisbecker 2016-01-30 21:11 ` Frederic Weisbecker 2016-02-11 19:24 ` Chris Metcalf 2016-02-11 19:24 ` Chris Metcalf 2016-03-04 12:56 ` Frederic Weisbecker 2016-03-09 19:39 ` Chris Metcalf 2016-03-09 19:39 ` Chris Metcalf 2016-04-08 13:56 ` Frederic Weisbecker 2016-04-08 16:34 ` Chris Metcalf 2016-04-08 16:34 ` Chris Metcalf 2016-04-12 18:41 ` Chris Metcalf 2016-04-12 18:41 ` Chris Metcalf 2016-04-22 13:16 ` Frederic Weisbecker 2016-04-25 20:36 ` Chris Metcalf 2016-04-25 20:36 ` Chris Metcalf 2016-05-26 1:07 ` Frederic Weisbecker 2016-06-03 19:32 ` Chris Metcalf 2016-06-03 19:32 ` Chris Metcalf 2016-06-29 15:18 ` Frederic Weisbecker 2016-07-01 20:59 ` Chris Metcalf 2016-07-01 20:59 ` Chris Metcalf 2016-07-05 14:41 ` Frederic Weisbecker 2016-07-05 14:41 ` Frederic Weisbecker 2016-07-05 17:47 ` Christoph Lameter 2016-01-04 19:34 ` [PATCH v9 05/13] task_isolation: support PR_TASK_ISOLATION_STRICT mode Chris Metcalf 2016-01-04 19:34 ` Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 06/13] task_isolation: add debug boot flag Chris Metcalf 2016-01-04 22:52 ` Steven Rostedt 2016-01-04 23:42 ` Chris Metcalf 2016-01-05 13:42 ` Steven Rostedt 2016-01-04 19:34 ` [PATCH v9 07/13] arch/x86: enable task isolation functionality Chris Metcalf 2016-01-04 21:02 ` [PATCH v9bis " Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 08/13] arch/arm64: adopt prepare_exit_to_usermode() model from x86 Chris Metcalf 2016-01-04 19:34 ` Chris Metcalf 2016-01-04 20:33 ` Mark Rutland 2016-01-04 20:33 ` Mark Rutland 2016-01-04 21:01 ` Chris Metcalf 2016-01-04 21:01 ` Chris Metcalf 2016-01-05 17:21 ` Mark Rutland 2016-01-05 17:21 ` Mark Rutland 2016-01-05 17:33 ` [PATCH 1/2] arm64: entry: remove pointless SPSR mode check Mark Rutland 2016-01-05 17:33 ` Mark Rutland 2016-01-06 12:15 ` Catalin Marinas 2016-01-06 12:15 ` Catalin Marinas 2016-01-05 17:33 ` [PATCH 2/2] arm64: factor work_pending state machine to C Mark Rutland 2016-01-05 17:33 ` Mark Rutland 2016-01-05 18:53 ` Chris Metcalf [this message] 2016-01-05 18:53 ` Chris Metcalf 2016-01-06 12:30 ` Catalin Marinas 2016-01-06 12:30 ` Catalin Marinas 2016-01-06 12:47 ` Mark Rutland 2016-01-06 12:47 ` Mark Rutland 2016-01-06 13:43 ` Mark Rutland 2016-01-06 13:43 ` Mark Rutland 2016-01-06 14:17 ` Catalin Marinas 2016-01-06 14:17 ` Catalin Marinas 2016-01-04 22:31 ` [PATCH v9 08/13] arch/arm64: adopt prepare_exit_to_usermode() model from x86 Andy Lutomirski 2016-01-04 22:31 ` Andy Lutomirski 2016-01-05 18:01 ` Mark Rutland 2016-01-05 18:01 ` Mark Rutland 2016-01-04 19:34 ` [PATCH v9 09/13] arch/arm64: enable task isolation functionality Chris Metcalf 2016-01-04 19:34 ` Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 10/13] arch/tile: adopt prepare_exit_to_usermode() model from x86 Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 11/13] arch/tile: move user_exit() to early kernel entry sequence Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 12/13] arch/tile: enable task isolation functionality Chris Metcalf 2016-01-04 19:34 ` [PATCH v9 13/13] arm, tile: turn off timer tick for oneshot_stopped state Chris Metcalf 2016-01-11 21:15 ` [PATCH v9 00/13] support "task_isolation" mode for nohz_full Chris Metcalf 2016-01-11 21:15 ` Chris Metcalf 2016-01-12 10:07 ` Will Deacon 2016-01-12 17:49 ` Chris Metcalf 2016-01-12 17:49 ` Chris Metcalf 2016-01-13 10:44 ` Ingo Molnar 2016-01-13 10:44 ` Ingo Molnar 2016-01-13 21:19 ` Chris Metcalf 2016-01-13 21:19 ` Chris Metcalf 2016-01-20 13:27 ` Mark Rutland 2016-01-12 10:53 ` Ingo Molnar 2016-01-12 10:53 ` Ingo Molnar
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=568C110F.3060503@ezchip.com \ --to=cmetcalf@ezchip.com \ --cc=catalin.marinas@arm.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=luto@amacapital.net \ --cc=mark.rutland@arm.com \ --cc=will.deacon@arm.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: linkBe 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.