On Tue, 2009-11-10 at 11:28 +0100, 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(). > >
NOTE: we would need to define defaults for those though, since they are not available with legacy releases of the pipeline patch. -- Philippe. _______________________________________________ Xenomai-core mailing list [email protected] https://mail.gna.org/listinfo/xenomai-core
