[PATCH 2/2] parisc: Delay until next timer irq in __cpu_disable()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux