On Tue, 2009-11-10 at 11:43 +0100, Jan Kiszka wrote: > Philippe Gerum wrote: > > On Tue, 2009-11-10 at 01:34 +0100, Gilles Chanteperdrix wrote: > >> 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 <[email protected]> > >>> --- > >>> 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? > >> > > > > Yes, we should rather use local_irq_save/restore_hw_smp(). > > > > Oh, *_hw_smp is new, isn't it? Do we need to wrap it for older I-pipes?
Yes, it was introduced to solve the SMP migration issue actually, so we need a wrapper. The advantage of having that wrapper instead of going for inlined #ifdef CONFIG_SMP is that I could simply get rid of that wrapper in 3.x, since all legacy pipeline patches would be deprecated there anyway. > > Jan -- Philippe. _______________________________________________ Xenomai-core mailing list [email protected] https://mail.gna.org/listinfo/xenomai-core
