[POWERPC] PS3: Fix system slowdown
The PS3 HV will deliver soft-disabled interrupts at the next HV call or interrupt. Add an HV call to local_irq_restore() to force the timely delivery of any pending interrupts. This fixes the system slowdown bug reported here http://bugzilla.kernel.org/show_bug.cgi?id=8260 Signed-off-by: Geoff Levand <geoffrey.levand@am.sony.com> Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
dc4f60c25a
commit
0874dd40bf
@ -67,6 +67,7 @@
|
||||
#ifdef CONFIG_PPC64
|
||||
#include <asm/paca.h>
|
||||
#include <asm/firmware.h>
|
||||
#include <asm/lv1call.h>
|
||||
#endif
|
||||
|
||||
int __irq_offset_value;
|
||||
@ -162,6 +163,16 @@ void local_irq_restore(unsigned long en)
|
||||
local_paca->hard_enabled = en;
|
||||
if ((int)mfspr(SPRN_DEC) < 0)
|
||||
mtspr(SPRN_DEC, 1);
|
||||
|
||||
/*
|
||||
* Force the delivery of pending soft-disabled interrupts on PS3.
|
||||
* Any HV call will have this side effect.
|
||||
*/
|
||||
if (firmware_has_feature(FW_FEATURE_PS3_LV1)) {
|
||||
u64 tmp;
|
||||
lv1_get_version_info(&tmp);
|
||||
}
|
||||
|
||||
hard_irq_enable();
|
||||
}
|
||||
#endif /* CONFIG_PPC64 */
|
||||
|
Loading…
Reference in New Issue
Block a user