[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 01/20] PPC: Fix TLB invalidation bug within the PPC in
From: |
Andreas Färber |
Subject: |
[Qemu-ppc] [PATCH 01/20] PPC: Fix TLB invalidation bug within the PPC interrupt handler. |
Date: |
Sun, 15 Apr 2012 20:38:45 +0200 |
From: Mark Cave-Ayland <address@hidden>
Commit 41557447d30eeb944e42069513df13585f5e6c7f also introduced a subtle TLB
flush bug. By applying a mask to the interrupt MSR which cleared the IR/DR
bits at the start of the interrupt handler, the logic towards the end of the
handler to force a TLB flush if either one of these bits were set would never
be triggered.
This patch simply changes the IR/DR bit check in the TLB flush logic to use
the original MSR value (albeit with some interrupt-specific bits cleared) so
that the IR/DR bits are preserved at the point where the check takes place.
Signed-off-by: Mark Cave-Ayland <address@hidden>
Acked-by: David Gibson <address@hidden>
Signed-off-by: Andreas Färber <address@hidden>
---
target-ppc/helper.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/target-ppc/helper.c b/target-ppc/helper.c
index e13b749..f0ea1c3 100644
--- a/target-ppc/helper.c
+++ b/target-ppc/helper.c
@@ -2960,7 +2960,7 @@ static inline void powerpc_excp(CPUPPCState *env, int
excp_model, int excp)
if (asrr1 != -1)
env->spr[asrr1] = env->spr[srr1];
/* If we disactivated any translation, flush TLBs */
- if (new_msr & ((1 << MSR_IR) | (1 << MSR_DR)))
+ if (msr & ((1 << MSR_IR) | (1 << MSR_DR)))
tlb_flush(env, 1);
if (msr_ile) {
--
1.7.7
- [Qemu-ppc] [PULL] ppc patch queue 2012-04-15, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 01/20] PPC: Fix TLB invalidation bug within the PPC interrupt handler.,
Andreas Färber <=
- [Qemu-ppc] [PATCH 03/20] pseries: Fix bug with reset of VIO CRQs, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 04/20] pseries: Implement RTAS system-reboot call, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 05/20] pseries: Remove unused fields from VIOsPAPRBus structure, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 07/20] target-ppc: Drop cpu_ppc_close(), Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 11/20] target-ppc: QOM'ify CPU reset, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 09/20] target-ppc: QOM'ify CPU, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 12/20] target-ppc: Fix type casts for w64 (uintptr_t), Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 10/20] target-ppc: Start QOM'ifying CPU init, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 13/20] target-ppc: Init dcache and icache size for e500 user mode, Andreas Färber, 2012/04/15
- [Qemu-ppc] [PATCH 08/20] target-ppc: Add hooks for handling tcg and kvm limitations, Andreas Färber, 2012/04/15