Hi Philippe,

don't we need this in ipipe_restore_pipeline_head to play safe (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

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux

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

Reply via email to