Message ID | 1446893557-29748-19-git-send-email-noamc@ezchip.com |
---|---|
State | Superseded |
Headers | show |
On Saturday 07 November 2015 04:22 PM, Noam Camus wrote: > From: Tal Zilcer <talz@ezchip.com> > > In SMT system like we have the generic "sync" is not working with > HW threads. The replacement is "schd.rw" instruction that is served > as cpu barrier for HW threads. As discussed in v2 of this patch, SYNC or some such in __switch_to is completely superfluous. We don't need this patch, you may instead wanna submit a patch which removes the sync. Also please do that in assembler version of this file as well ! > Signed-off-by: Noam Camus <noamc@ezchip.com> > --- > arch/arc/kernel/ctx_sw.c | 7 +++++++ > 1 files changed, 7 insertions(+), 0 deletions(-) > > diff --git a/arch/arc/kernel/ctx_sw.c b/arch/arc/kernel/ctx_sw.c > index 92e2e82..2a2f50e 100644 > --- a/arch/arc/kernel/ctx_sw.c > +++ b/arch/arc/kernel/ctx_sw.c > @@ -61,7 +61,11 @@ __switch_to(struct task_struct *prev_task, struct task_struct *next_task) > "st sp, [r24] \n\t" > #endif > > +#ifdef CONFIG_EZNPS_MTM_EXT > + ".word %5 \n\t" > +#else > "sync \n\t" > +#endif > > /* > * setup _current_task with incoming tsk. > @@ -122,6 +126,9 @@ __switch_to(struct task_struct *prev_task, struct task_struct *next_task) > #ifdef CONFIG_ARC_PLAT_EZNPS > , "i"(CTOP_AUX_LOGIC_GLOBAL_ID) > #endif > +#ifdef CONFIG_EZNPS_MTM_EXT > + , "i"(CTOP_INST_SCHD_RW) > +#endif > : "blink" > ); > >
On Tue, Nov 17, 2015 at 04:42:49PM +0530, Vineet Gupta wrote: > On Saturday 07 November 2015 04:22 PM, Noam Camus wrote: > > From: Tal Zilcer <talz@ezchip.com> > > > > In SMT system like we have the generic "sync" is not working with > > HW threads. The replacement is "schd.rw" instruction that is served > > as cpu barrier for HW threads. > > As discussed in v2 of this patch, SYNC or some such in __switch_to is completely > superfluous. We don't need this patch, you may instead wanna submit a patch which > removes the sync. Also please do that in assembler version of this file as well ! Do test it though; as is ARC-SMP seems to have a _lot_ of superfluous barriers many of which have no explanation yet (I'm thinking of those extra smp_mb()s in the lock primitives).
diff --git a/arch/arc/kernel/ctx_sw.c b/arch/arc/kernel/ctx_sw.c index 92e2e82..2a2f50e 100644 --- a/arch/arc/kernel/ctx_sw.c +++ b/arch/arc/kernel/ctx_sw.c @@ -61,7 +61,11 @@ __switch_to(struct task_struct *prev_task, struct task_struct *next_task) "st sp, [r24] \n\t" #endif +#ifdef CONFIG_EZNPS_MTM_EXT + ".word %5 \n\t" +#else "sync \n\t" +#endif /* * setup _current_task with incoming tsk. @@ -122,6 +126,9 @@ __switch_to(struct task_struct *prev_task, struct task_struct *next_task) #ifdef CONFIG_ARC_PLAT_EZNPS , "i"(CTOP_AUX_LOGIC_GLOBAL_ID) #endif +#ifdef CONFIG_EZNPS_MTM_EXT + , "i"(CTOP_INST_SCHD_RW) +#endif : "blink" );