On Mon, Nov 17, 2014 at 05:48:00PM +0100, Jan Kiszka wrote:
> On 2014-11-12 18:27, Gilles Chanteperdrix wrote:
> > We do not need trace_hardirqs_on and trace_hardirqs_off for the
> > particular case of IRQs: they are already handled by
> > __ipipe_do_sync_stage. 
> 
> That was the key: Simply disabling the instrumentations in the
> CONFIG_IPIPE removes all lock state inconsistencies, at least this far:
> 
> diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
> index d32f8bd..d8e0b2c 100644
> --- a/arch/arm/kernel/entry-header.S
> +++ b/arch/arm/kernel/entry-header.S
> @@ -195,7 +195,7 @@
>  #ifdef CONFIG_IPIPE_DEBUG_INTERNAL
>       bl      __ipipe_bugon_irqs_enabled
>  #endif
> -#ifdef CONFIG_TRACE_IRQFLAGS
> +#if defined(CONFIG_TRACE_IRQFLAGS) && !defined(CONFIG_IPIPE)
>       @ The parent context IRQs must have been enabled to get here in
>       @ the first place, so there's no point checking the PSR I bit.
>       bl      trace_hardirqs_on
> @@ -203,7 +203,7 @@
>       .else
>       @ IRQs off again before pulling preserved data off the stack
>       disable_irq_notrace
> -#ifdef CONFIG_TRACE_IRQFLAGS
> +#if defined(CONFIG_TRACE_IRQFLAGS) && !defined(CONFIG_IPIPE)
>       tst     \rpsr, #PSR_I_BIT
>       bleq    trace_hardirqs_on
>       tst     \rpsr, #PSR_I_BIT
> 
> Will send a patch.

Will this work for other paths in entry.S, such as exceptions or
syscalls?

-- 
                                            Gilles.

_______________________________________________
Xenomai mailing list
[email protected]
http://www.xenomai.org/mailman/listinfo/xenomai

Reply via email to