On Mon, 2006-09-25 at 09:35 +0200, Jan Kiszka wrote:

This one won't work. We need to forcibly re-enable the hw IRQs upon root
unstall requests, regardless of the fact that interrupts are pending in
the log; some code rely on this. E.g. Adeos/ppc over 2.4 would remain
stuck in the delay calibration routine, but there are other more tricky
places where this would bite too.

> @@ -166,6 +158,7 @@ void __ipipe_unstall_root(void)
>  {
>         ipipe_declare_cpuid;
>  
> +#ifdef CONFIG_SMP
>         local_irq_disable_hw();
>  
>         ipipe_load_cpuid();
> @@ -176,6 +169,15 @@ void __ipipe_unstall_root(void)
>                 __ipipe_sync_pipeline(IPIPE_IRQMASK_ANY);
>  
>         local_irq_enable_hw();
> +#else  /* !CONFIG_SMP */
> +       __clear_bit(IPIPE_STALL_FLAG,
> &ipipe_root_domain->cpudata[cpuid].status);
> +
> +       if
> (unlikely(ipipe_root_domain->cpudata[cpuid].irq_pending_hi != 0)) {
> +               local_irq_disable_hw();
> +               __ipipe_sync_pipeline(IPIPE_IRQMASK_ANY);
> +               local_irq_enable_hw();
> +       }
> +#endif /* CONFIG_SMP */
>  }
>   
-- 
Philippe.



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

Reply via email to