* Re: [tip:sched/core] sched, tile: Remove finish_arch_switch [not found] <tip-fe363adb922583bacfbd5a30a4c773ccff9bb393@git.kernel.org> @ 2015-08-04 13:46 ` Chris Metcalf 2015-08-05 7:43 ` Ingo Molnar 0 siblings, 1 reply; 4+ messages in thread From: Chris Metcalf @ 2015-08-04 13:46 UTC (permalink / raw) To: linux-kernel, hpa, mingo, torvalds, tglx, efault, peterz, linux-tip-commits Ingo, I already have the appended commit in a modified form in the linux-tile tree ready to be pushed to 4.3. Can you drop it from your series? Thanks! On 8/4/2015 4:50 AM, tip-bot for Chris Metcalf wrote: > Commit-ID: fe363adb922583bacfbd5a30a4c773ccff9bb393 > Gitweb: http://git.kernel.org/tip/fe363adb922583bacfbd5a30a4c773ccff9bb393 > Author: Chris Metcalf <cmetcalf@ezchip.com> > AuthorDate: Wed, 29 Jul 2015 13:06:29 -0400 > Committer: Ingo Molnar <mingo@kernel.org> > CommitDate: Tue, 4 Aug 2015 09:38:18 +0200 > > sched, tile: Remove finish_arch_switch > > Move the simulator bits into switch_to() and use > finish_arch_post_lock_switch() for the homecache migration bits. > > Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com> > Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> > Cc: Linus Torvalds <torvalds@linux-foundation.org> > Cc: Mike Galbraith <efault@gmx.de> > Cc: Peter Zijlstra <peterz@infradead.org> > Cc: Thomas Gleixner <tglx@linutronix.de> > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Ingo Molnar <mingo@kernel.org> > --- > arch/tile/include/asm/switch_to.h | 10 +++------- > arch/tile/kernel/process.c | 17 +++++++++++++++-- > 2 files changed, 18 insertions(+), 9 deletions(-) > > diff --git a/arch/tile/include/asm/switch_to.h b/arch/tile/include/asm/switch_to.h > index b8f888c..422842a 100644 > --- a/arch/tile/include/asm/switch_to.h > +++ b/arch/tile/include/asm/switch_to.h > @@ -53,15 +53,11 @@ extern unsigned long get_switch_to_pc(void); > * Kernel threads can check to see if they need to migrate their > * stack whenever they return from a context switch; for user > * threads, we defer until they are returning to user-space. > + * We defer homecache migration until the runqueue lock is released. > */ > -#define finish_arch_switch(prev) do { \ > - if (unlikely((prev)->state == TASK_DEAD)) \ > - __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_EXIT | \ > - ((prev)->pid << _SIM_CONTROL_OPERATOR_BITS)); \ > - __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_SWITCH | \ > - (current->pid << _SIM_CONTROL_OPERATOR_BITS)); \ > +#define finish_arch_post_lock_switch() do { \ > if (current->mm == NULL && !kstack_hash && \ > - current_thread_info()->homecache_cpu != smp_processor_id()) \ > + current_thread_info()->homecache_cpu != raw_smp_processor_id()) \ > homecache_migrate_kthread(); \ > } while (0) > > diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c > index a452137..1087375 100644 > --- a/arch/tile/kernel/process.c > +++ b/arch/tile/kernel/process.c > @@ -448,11 +448,24 @@ struct task_struct *__sched _switch_to(struct task_struct *prev, > > /* > * Switch kernel SP, PC, and callee-saved registers. > + * Pass the value to use for SYSTEM_SAVE_K_0 when we reset our sp. > + * Once we return from this function we will have changed stacks > + * and be running with current == next. > + */ > + __switch_to(prev, next, next_current_ksp0(next)); > + > + /* Notify the simulator of task switch and task exit. */ > + if (unlikely(prev->state == TASK_DEAD)) > + __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_EXIT | > + (prev->pid << _SIM_CONTROL_OPERATOR_BITS)); > + __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_SWITCH | > + (next->pid << _SIM_CONTROL_OPERATOR_BITS)); > + > + /* > * In the context of the new task, return the old task pointer > * (i.e. the task that actually called __switch_to). > - * Pass the value to use for SYSTEM_SAVE_K_0 when we reset our sp. > */ > - return __switch_to(prev, next, next_current_ksp0(next)); > + return prev; > } > > /* -- Chris Metcalf, EZChip Semiconductor http://www.ezchip.com ^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [tip:sched/core] sched, tile: Remove finish_arch_switch 2015-08-04 13:46 ` [tip:sched/core] sched, tile: Remove finish_arch_switch Chris Metcalf @ 2015-08-05 7:43 ` Ingo Molnar 2015-08-05 14:03 ` [PATCH v2] " Chris Metcalf 0 siblings, 1 reply; 4+ messages in thread From: Ingo Molnar @ 2015-08-05 7:43 UTC (permalink / raw) To: Chris Metcalf Cc: linux-kernel, hpa, torvalds, tglx, efault, peterz, linux-tip-commits * Chris Metcalf <cmetcalf@ezchip.com> wrote: > Ingo, > > I already have the appended commit in a modified form in the linux-tile > tree ready to be pushed to 4.3. Can you drop it from your series? Could you please post the updated patch? I cannot easily drop the patch because that would break the scheduler tree on the tile architecture. Thanks, Ingo ^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v2] tile: Remove finish_arch_switch 2015-08-05 7:43 ` Ingo Molnar @ 2015-08-05 14:03 ` Chris Metcalf 2015-08-09 10:22 ` [tip:sched/core] tile: Reorganize _switch_to() tip-bot for Chris Metcalf 0 siblings, 1 reply; 4+ messages in thread From: Chris Metcalf @ 2015-08-05 14:03 UTC (permalink / raw) To: Ingo Molnar Cc: Chris Metcalf, linux-kernel, hpa, torvalds, tglx, efault, peterz, linux-tip-commits Move the simulator bits into switch_to() and use finish_arch_post_lock_switch() for the homecache migration bits. Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org> Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com> --- arch/tile/include/asm/switch_to.h | 8 +++----- arch/tile/kernel/process.c | 5 +++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/arch/tile/include/asm/switch_to.h b/arch/tile/include/asm/switch_to.h index b8f888cbe6b0..34ee72705521 100644 --- a/arch/tile/include/asm/switch_to.h +++ b/arch/tile/include/asm/switch_to.h @@ -53,15 +53,13 @@ extern unsigned long get_switch_to_pc(void); * Kernel threads can check to see if they need to migrate their * stack whenever they return from a context switch; for user * threads, we defer until they are returning to user-space. + * We defer homecache migration until the runqueue lock is released. */ -#define finish_arch_switch(prev) do { \ - if (unlikely((prev)->state == TASK_DEAD)) \ - __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_EXIT | \ - ((prev)->pid << _SIM_CONTROL_OPERATOR_BITS)); \ +#define finish_arch_post_lock_switch() do { \ __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_SWITCH | \ (current->pid << _SIM_CONTROL_OPERATOR_BITS)); \ if (current->mm == NULL && !kstack_hash && \ - current_thread_info()->homecache_cpu != smp_processor_id()) \ + current_thread_info()->homecache_cpu != raw_smp_processor_id()) \ homecache_migrate_kthread(); \ } while (0) diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index a45213781ad0..7d5769310bef 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c @@ -446,6 +446,11 @@ struct task_struct *__sched _switch_to(struct task_struct *prev, hardwall_switch_tasks(prev, next); #endif + /* Notify the simulator of task exit. */ + if (unlikely(prev->state == TASK_DEAD)) + __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_EXIT | + (prev->pid << _SIM_CONTROL_OPERATOR_BITS)); + /* * Switch kernel SP, PC, and callee-saved registers. * In the context of the new task, return the old task pointer -- 2.1.2 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [tip:sched/core] tile: Reorganize _switch_to() 2015-08-05 14:03 ` [PATCH v2] " Chris Metcalf @ 2015-08-09 10:22 ` tip-bot for Chris Metcalf 0 siblings, 0 replies; 4+ messages in thread From: tip-bot for Chris Metcalf @ 2015-08-09 10:22 UTC (permalink / raw) To: linux-tip-commits Cc: tglx, hpa, peterz, cmetcalf, linux-kernel, efault, torvalds, mingo Commit-ID: 1eaef888158dc441dcd00c20779251cfa5e756b3 Gitweb: http://git.kernel.org/tip/1eaef888158dc441dcd00c20779251cfa5e756b3 Author: Chris Metcalf <cmetcalf@ezchip.com> AuthorDate: Wed, 5 Aug 2015 10:03:32 -0400 Committer: Ingo Molnar <mingo@kernel.org> CommitDate: Sat, 8 Aug 2015 10:29:21 +0200 tile: Reorganize _switch_to() Move the simulator bits into finish_arch_post_lock_switch() and properly call __switch_to() from _switch_to(). Signed-off-by: Chris Metcalf <cmetcalf@ezchip.com> Cc: <efault@gmx.de> Cc: Linus Torvalds <torvalds@linux-foundation.org> Cc: Peter Zijlstra (Intel) <peterz@infradead.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Thomas Gleixner <tglx@linutronix.de> Link: http://lkml.kernel.org/r/1438783412-10990-1-git-send-email-cmetcalf@ezchip.com [ Made it a delta to: fe363adb9225 ("sched, tile: Remove finish_arch_switch"). ] Signed-off-by: Ingo Molnar <mingo@kernel.org> --- arch/tile/include/asm/switch_to.h | 2 ++ arch/tile/kernel/process.c | 16 ++++------------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/arch/tile/include/asm/switch_to.h b/arch/tile/include/asm/switch_to.h index 422842a..34ee727 100644 --- a/arch/tile/include/asm/switch_to.h +++ b/arch/tile/include/asm/switch_to.h @@ -56,6 +56,8 @@ extern unsigned long get_switch_to_pc(void); * We defer homecache migration until the runqueue lock is released. */ #define finish_arch_post_lock_switch() do { \ + __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_SWITCH | \ + (current->pid << _SIM_CONTROL_OPERATOR_BITS)); \ if (current->mm == NULL && !kstack_hash && \ current_thread_info()->homecache_cpu != raw_smp_processor_id()) \ homecache_migrate_kthread(); \ diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 1087375..7d57693 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c @@ -446,26 +446,18 @@ struct task_struct *__sched _switch_to(struct task_struct *prev, hardwall_switch_tasks(prev, next); #endif - /* - * Switch kernel SP, PC, and callee-saved registers. - * Pass the value to use for SYSTEM_SAVE_K_0 when we reset our sp. - * Once we return from this function we will have changed stacks - * and be running with current == next. - */ - __switch_to(prev, next, next_current_ksp0(next)); - - /* Notify the simulator of task switch and task exit. */ + /* Notify the simulator of task exit. */ if (unlikely(prev->state == TASK_DEAD)) __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_EXIT | (prev->pid << _SIM_CONTROL_OPERATOR_BITS)); - __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_SWITCH | - (next->pid << _SIM_CONTROL_OPERATOR_BITS)); /* + * Switch kernel SP, PC, and callee-saved registers. * In the context of the new task, return the old task pointer * (i.e. the task that actually called __switch_to). + * Pass the value to use for SYSTEM_SAVE_K_0 when we reset our sp. */ - return prev; + return __switch_to(prev, next, next_current_ksp0(next)); } /* ^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-08-09 10:23 UTC | newest] Thread overview: 4+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <tip-fe363adb922583bacfbd5a30a4c773ccff9bb393@git.kernel.org> 2015-08-04 13:46 ` [tip:sched/core] sched, tile: Remove finish_arch_switch Chris Metcalf 2015-08-05 7:43 ` Ingo Molnar 2015-08-05 14:03 ` [PATCH v2] " Chris Metcalf 2015-08-09 10:22 ` [tip:sched/core] tile: Reorganize _switch_to() tip-bot for Chris Metcalf
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).