[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:
committed by
Paul Mackerras
parent
dc4f60c25a
commit
0874dd40bf
@@ -67,6 +67,7 @@
|
|||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
#include <asm/paca.h>
|
#include <asm/paca.h>
|
||||||
#include <asm/firmware.h>
|
#include <asm/firmware.h>
|
||||||
|
#include <asm/lv1call.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int __irq_offset_value;
|
int __irq_offset_value;
|
||||||
@@ -162,6 +163,16 @@ void local_irq_restore(unsigned long en)
|
|||||||
local_paca->hard_enabled = en;
|
local_paca->hard_enabled = en;
|
||||||
if ((int)mfspr(SPRN_DEC) < 0)
|
if ((int)mfspr(SPRN_DEC) < 0)
|
||||||
mtspr(SPRN_DEC, 1);
|
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();
|
hard_irq_enable();
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_PPC64 */
|
#endif /* CONFIG_PPC64 */
|
||||||
|
Reference in New Issue
Block a user