On Fri, 2010-06-18 at 13:26 +0200, Jan Kiszka wrote:
> Hi Philippe,
> 
> don't we need this in ipipe_restore_pipeline_head to play safe

I can't see what this is supposed to fix. Any hint?

>  (includes
> some UP optimization as well):
> 
> diff --git a/include/linux/ipipe.h b/include/linux/ipipe.h
> index c458883..bf1f94d 100644
> --- a/include/linux/ipipe.h
> +++ b/include/linux/ipipe.h
> @@ -518,9 +518,13 @@ void __ipipe_restore_pipeline_head(unsigned long x);
>  
>  static inline void ipipe_restore_pipeline_head(unsigned long x)
>  {
> -     local_irq_disable_hw();
> +     unsigned long flags;
> +
> +     local_irq_save_hw_smp(flags);
>       if ((x ^ test_bit(IPIPE_STALL_FLAG, &ipipe_head_cpudom_var(status))) & 
> 1)
>               __ipipe_restore_pipeline_head(x);
> +     else
> +             local_irq_restore_hw_smp(flags);
>  }
>  
>  #define ipipe_unstall_pipeline() \
> diff --git a/kernel/ipipe/core.c b/kernel/ipipe/core.c
> index e2503bd..60a6433 100644
> --- a/kernel/ipipe/core.c
> +++ b/kernel/ipipe/core.c
> @@ -422,6 +422,9 @@ void __ipipe_restore_pipeline_head(unsigned long x) /* hw 
> interrupt off */
>       struct ipipe_percpu_domain_data *p = ipipe_head_cpudom_ptr();
>       struct ipipe_domain *head_domain;
>  
> +#ifndef CONFIG_SMP
> +     local_irq_disable_hw();
> +#endif
>       if (x) {
>  #ifdef CONFIG_DEBUG_KERNEL
>               static int warned;
> 
> 
> Untested, just thoughts ATM.
> 
> Jan
> 


-- 
Philippe.



_______________________________________________
Adeos-main mailing list
[email protected]
https://mail.gna.org/listinfo/adeos-main

Reply via email to