Jan Kiszka wrote:
> [Patch is now also available in 'for-upstream']
> 
> ipipe_test_pipeline_from is not atomic /wrt reading the current cpu
> number (or an offset for the per-cpu area) and actually reading the
> virtualized interrupt state. Work around this by disabling hard IRQs
> while accessing this service.
> 
> This fixes false-positives of RTDM driver debug checks.
> 
> Signed-off-by: Jan Kiszka <jan.kis...@siemens.com>
> ---
>  include/asm-generic/hal.h |    9 ++++++++-
>  1 files changed, 8 insertions(+), 1 deletions(-)
> 
> diff --git a/include/asm-generic/hal.h b/include/asm-generic/hal.h
> index 97c549e..3095b85 100644
> --- a/include/asm-generic/hal.h
> +++ b/include/asm-generic/hal.h
> @@ -117,7 +117,14 @@ typedef spinlock_t rthal_spinlock_t;
>  #endif /* !CONFIG_XENO_OPT_PIPELINE_HEAD */
>  #define rthal_local_irq_flags(x)     ((x) = 
> ipipe_test_pipeline_from(&rthal_domain) & 1)
>  #define rthal_local_irq_test()               
> ipipe_test_pipeline_from(&rthal_domain)
> -#define rthal_local_irq_disabled()   ipipe_test_pipeline_from(&rthal_domain)
> +#define rthal_local_irq_disabled()                           \
> +({                                                           \
> +     unsigned long __flags, __ret;                           \
> +     local_irq_save_hw(__flags);                             \
> +     __ret = ipipe_test_pipeline_from(&rthal_domain);        \
> +     local_irq_restore_hw(__flags);                          \
> +     __ret;                                                  \
> +})

Maybe we can avoid that on UP systems?

-- 
                                            Gilles.

_______________________________________________
Xenomai-core mailing list
Xenomai-core@gna.org
https://mail.gna.org/listinfo/xenomai-core

Reply via email to