* 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 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.