From: Anton Blanchard We had a problem in our dummy perfmon handler where we wouldnt reset the PMAO bit. If the bit ended up set and oprofile shutdown and removed its handler then we would end up in a hard loop taking perfmon exceptions. Signed-off-by: Anton Blanchard Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc64/kernel/traps.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletion(-) diff -puN arch/ppc64/kernel/traps.c~ppc64-fix-hang-on-oprofile-shutdown arch/ppc64/kernel/traps.c --- 25/arch/ppc64/kernel/traps.c~ppc64-fix-hang-on-oprofile-shutdown 2004-09-05 14:47:36.143200928 -0700 +++ 25-akpm/arch/ppc64/kernel/traps.c 2004-09-05 14:47:36.146200472 -0700 @@ -522,12 +522,13 @@ void AltivecUnavailableException(struct /* Ensure exceptions are disabled */ #define MMCR0_PMXE (1UL << (31 - 5)) +#define MMCR0_PMAO (1UL << (31 - 24)) static void dummy_perf(struct pt_regs *regs) { unsigned int mmcr0 = mfspr(SPRN_MMCR0); - mmcr0 &= ~MMCR0_PMXE; + mmcr0 &= ~(MMCR0_PMXE|MMCR0_PMAO); mtspr(SPRN_MMCR0, mmcr0); } _