On 2015-05-01 20:59, Ayyappa Ch wrote: > Floating point operations in arm64 should not disable preempt . I thought that I would see a problem if I ran a floating point workload and cyclictest at the same time but I don't. Can you please provide me some more details on how I can reproduce the problem? Cheers, Anders > Activating realtime features with below code. > > From e6a5fce9b3b55f48656240036a9354a0997c2907 Mon Sep 17 00:00:00 2001 > From: Ayyappa Ch <ayyappa.chandolu@xxxxxxx> > Date: Tue, 28 Apr 2015 11:53:00 +0530 > Subject: [PATCH ] floating point realtime fix > > --- > arch/arm64/kernel/fpsimd.c | 16 ++++++++-------- > 1 file changed, 8 insertions(+), 8 deletions(-) > > diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c > index 2438497..3dca156 100644 > --- a/arch/arm64/kernel/fpsimd.c > +++ b/arch/arm64/kernel/fpsimd.c > @@ -166,10 +166,10 @@ void fpsimd_flush_thread(void) > */ > void fpsimd_preserve_current_state(void) > { > - preempt_disable(); > + migrate_disable(); > if (!test_thread_flag(TIF_FOREIGN_FPSTATE)) > fpsimd_save_state(¤t->thread.fpsimd_state); > - preempt_enable(); > + migrate_enable(); > } > > /* > @@ -179,7 +179,7 @@ void fpsimd_preserve_current_state(void) > */ > void fpsimd_restore_current_state(void) > { > - preempt_disable(); > + migrate_disable(); > if (test_and_clear_thread_flag(TIF_FOREIGN_FPSTATE)) { > struct fpsimd_state *st = ¤t->thread.fpsimd_state; > > @@ -187,7 +187,7 @@ void fpsimd_restore_current_state(void) > this_cpu_write(fpsimd_last_state, st); > st->cpu = smp_processor_id(); > } > - preempt_enable(); > + migrate_enable(); > } > > /* > @@ -197,7 +197,7 @@ void fpsimd_restore_current_state(void) > */ > void fpsimd_update_current_state(struct fpsimd_state *state) > { > - preempt_disable(); > + migrate_disable(); > fpsimd_load_state(state); > if (test_and_clear_thread_flag(TIF_FOREIGN_FPSTATE)) { > struct fpsimd_state *st = ¤t->thread.fpsimd_state; > @@ -205,7 +205,7 @@ void fpsimd_update_current_state(struct fpsimd_state *state) > this_cpu_write(fpsimd_last_state, st); > st->cpu = smp_processor_id(); > } > - preempt_enable(); > + migrate_enable(); > } > > /* > @@ -239,7 +239,7 @@ void kernel_neon_begin_partial(u32 num_regs) > * that there is no longer userland FPSIMD state in the > * registers. > */ > - preempt_disable(); > + migrate_disable(); > if (current->mm && > !test_and_set_thread_flag(TIF_FOREIGN_FPSTATE)) > fpsimd_save_state(¤t->thread.fpsimd_state); > @@ -255,7 +255,7 @@ void kernel_neon_end(void) > in_irq() ? &hardirq_fpsimdstate : &softirq_fpsimdstate); > fpsimd_load_partial_state(s); > } else { > - preempt_enable(); > + migrate_enable(); > } > } > EXPORT_SYMBOL(kernel_neon_end); > > On Fri, May 1, 2015 at 1:03 PM, Ayyappa Ch <ayyappa.ch.linux@xxxxxxxxx> wrote: > > Following Anders Roxell patch on "Enable PREEMPT_RT_FULL" , observed > > one issue with Cyclic test while running floating point operations. So > > , modified below changes for that. > > > > From e6a5fce9b3b55f48656240036a9354a0997c2907 Mon Sep 17 00:00:00 2001 > > From: Ayyappa Ch <ayyappa.chandolu@xxxxxxx> > > Date: Tue, 28 Apr 2015 11:53:00 +0530 > > Subject: [PATCH ] floating point realtime fix > > > > --- > > arch/arm64/kernel/fpsimd.c | 16 ++++++++-------- > > 1 file changed, 8 insertions(+), 8 deletions(-) > > > > diff --git a/arch/arm64/kernel/fpsimd.c b/arch/arm64/kernel/fpsimd.c > > index 2438497..3dca156 100644 > > --- a/arch/arm64/kernel/fpsimd.c > > +++ b/arch/arm64/kernel/fpsimd.c > > @@ -166,10 +166,10 @@ void fpsimd_flush_thread(void) > > */ > > void fpsimd_preserve_current_state(void) > > { > > - preempt_disable(); > > + migrate_disable(); > > if (!test_thread_flag(TIF_FOREIGN_FPSTATE)) > > fpsimd_save_state(¤t->thread.fpsimd_state); > > - preempt_enable(); > > + migrate_enable(); > > } > > > > /* > > @@ -179,7 +179,7 @@ void fpsimd_preserve_current_state(void) > > */ > > void fpsimd_restore_current_state(void) > > { > > - preempt_disable(); > > + migrate_disable(); > > if (test_and_clear_thread_flag(TIF_FOREIGN_FPSTATE)) { > > struct fpsimd_state *st = ¤t->thread.fpsimd_state; > > > > @@ -187,7 +187,7 @@ void fpsimd_restore_current_state(void) > > this_cpu_write(fpsimd_last_state, st); > > st->cpu = smp_processor_id(); > > } > > - preempt_enable(); > > + migrate_enable(); > > } > > > > /* > > @@ -197,7 +197,7 @@ void fpsimd_restore_current_state(void) > > */ > > void fpsimd_update_current_state(struct fpsimd_state *state) > > { > > - preempt_disable(); > > + migrate_disable(); > > fpsimd_load_state(state); > > if (test_and_clear_thread_flag(TIF_FOREIGN_FPSTATE)) { > > struct fpsimd_state *st = ¤t->thread.fpsimd_state; > > @@ -205,7 +205,7 @@ void fpsimd_update_current_state(struct fpsimd_state *state) > > this_cpu_write(fpsimd_last_state, st); > > st->cpu = smp_processor_id(); > > } > > - preempt_enable(); > > + migrate_enable(); > > } > > > > /* > > @@ -239,7 +239,7 @@ void kernel_neon_begin_partial(u32 num_regs) > > * that there is no longer userland FPSIMD state in the > > * registers. > > */ > > - preempt_disable(); > > + migrate_disable(); > > if (current->mm && > > !test_and_set_thread_flag(TIF_FOREIGN_FPSTATE)) > > fpsimd_save_state(¤t->thread.fpsimd_state); > > @@ -255,7 +255,7 @@ void kernel_neon_end(void) > > in_irq() ? &hardirq_fpsimdstate : &softirq_fpsimdstate); > > fpsimd_load_partial_state(s); > > } else { > > - preempt_enable(); > > + migrate_enable(); > > } > > } > > EXPORT_SYMBOL(kernel_neon_end); > > -- > > 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-rt-users" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html