Wait for next timer irq to trigger, then clear all pending external irqs before jumping into rendevous PDC loop. Signed-off-by: Helge Deller <deller@xxxxxx> --- arch/parisc/kernel/smp.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 60cc33fd345c..564442ac74c9 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c @@ -491,6 +491,15 @@ int __cpu_disable(void) /* disable all irqs, including timer irq */ local_irq_disable(); + + /* wait for next timer irq ... */ + mdelay(1000/HZ+100); + + /* ... and then clear all pending external irqs */ + set_eiem(0); + mtctl(~0UL, CR_EIRR); + mfctl(CR_EIRR); + mtctl(0, CR_EIRR); #endif return 0; } -- 2.35.1