From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
To: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
Cc: Scott Wood <scottwood@freescale.com>,
"linuxppc-dev@ozlabs.org" <linuxppc-dev@ozlabs.org>,
Rex Feany <RFeany@mrv.com>
Subject: Re: [PATCH 4/6] 8xx: Tag DAR with 0x00f0 to catch buggy instructions.
Date: Thu, 08 Oct 2009 08:18:21 +1100 [thread overview]
Message-ID: <1254950301.2409.11.camel@pasglop> (raw)
In-Reply-To: <1254948364-30074-5-git-send-email-Joakim.Tjernlund@transmode.se>
On Wed, 2009-10-07 at 22:46 +0200, Joakim Tjernlund wrote:
> dcbz, dcbf, dcbi, dcbst and icbi do not set DAR when they
> cause a DTLB Error. Dectect this by tagging DAR with 0x00f0
> at every exception exit that modifies DAR.
> Test for DAR=0x00f0 in DataTLBError and bail
> to handle_page_fault().
Why not -1 ? :-)
Ben.
> ---
> arch/powerpc/kernel/head_8xx.S | 19 ++++++++++++++++---
> 1 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/arch/powerpc/kernel/head_8xx.S b/arch/powerpc/kernel/head_8xx.S
> index 3cf1289..37aa7d0 100644
> --- a/arch/powerpc/kernel/head_8xx.S
> +++ b/arch/powerpc/kernel/head_8xx.S
> @@ -206,6 +206,8 @@ MachineCheck:
> EXCEPTION_PROLOG
> mfspr r4,SPRN_DAR
> stw r4,_DAR(r11)
> + li r5,0x00f0
> + mtspr SPRN_DAR,r5 /* Tag DAR, to be used in DTLB Error */
> mfspr r5,SPRN_DSISR
> stw r5,_DSISR(r11)
> addi r3,r1,STACK_FRAME_OVERHEAD
> @@ -222,6 +224,8 @@ DataAccess:
> stw r10,_DSISR(r11)
> mr r5,r10
> mfspr r4,SPRN_DAR
> + li r10,0x00f0
> + mtspr SPRN_DAR,r10 /* Tag DAR, to be used in DTLB Error */
> EXC_XFER_EE_LITE(0x300, handle_page_fault)
>
> /* Instruction access exception.
> @@ -244,6 +248,8 @@ Alignment:
> EXCEPTION_PROLOG
> mfspr r4,SPRN_DAR
> stw r4,_DAR(r11)
> + li r5,0x00f0
> + mtspr SPRN_DAR,r5 /* Tag DAR, to be used in DTLB Error */
> mfspr r5,SPRN_DSISR
> stw r5,_DSISR(r11)
> addi r3,r1,STACK_FRAME_OVERHEAD
> @@ -427,6 +433,7 @@ DataStoreTLBMiss:
> * of the MMU.
> */
> 2: li r11, 0x00f0
> + mtspr SPRN_DAR,r11 /* Tag DAR */
> rlwimi r10, r11, 0, 24, 28 /* Set 24-27, clear 28 */
> DO_8xx_CPU6(0x3d80, r3)
> mtspr SPRN_MD_RPN, r10 /* Update TLB entry */
> @@ -467,10 +474,14 @@ DataTLBError:
> stw r10, 0(r0)
> stw r11, 4(r0)
>
> + mfspr r10, SPRN_DAR
> + cmpwi cr0, r10, 0x00f0
> + beq- 2f /* must be a buggy dcbX, icbi insn. */
> +
> /* First, make sure this was a store operation.
> */
> - mfspr r10, SPRN_DSISR
> - andis. r11, r10, 0x4000 /* no translation */
> + mfspr r11, SPRN_DSISR
> + andis. r11, r11, 0x4000 /* no translation */
> bne 2f /* branch if set */
>
> /* The EA of a data TLB miss is automatically stored in the MD_EPN
> @@ -489,7 +500,8 @@ DataTLBError:
> * are initialized in mapin_ram(). This will avoid the problem,
> * assuming we only use the dcbi instruction on kernel addresses.
> */
> - mfspr r10, SPRN_DAR
> +
> + /* DAR is in r10 already */
> rlwinm r11, r10, 0, 0, 19
> ori r11, r11, MD_EVALID
> mfspr r10, SPRN_M_CASID
> @@ -539,6 +551,7 @@ DataTLBError:
> * of the MMU.
> */
> li r11, 0x00f0
> + mtspr SPRN_DAR,r11 /* Tag DAR */
> rlwimi r10, r11, 0, 24, 28 /* Set 24-27, clear 28 */
> DO_8xx_CPU6(0x3d80, r3)
> mtspr SPRN_MD_RPN, r10 /* Update TLB entry */
next prev parent reply other threads:[~2009-10-07 21:18 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-07 20:45 [PATCH 0/6] 8xx TLB fixes Joakim Tjernlund
2009-10-07 20:45 ` [PATCH 1/6] 8xx: DTLB Error must check for more errors Joakim Tjernlund
2009-10-07 20:46 ` [PATCH 2/6] 8xx: get rid of _PAGE_HWWRITE dependency in MMU Joakim Tjernlund
2009-10-07 20:46 ` [PATCH 3/6] 8xx: invalidate non present TLBs Joakim Tjernlund
2009-10-07 20:46 ` [PATCH 4/6] 8xx: Tag DAR with 0x00f0 to catch buggy instructions Joakim Tjernlund
2009-10-07 20:46 ` [PATCH 5/6] 8xx: Fixup DAR from buggy dcbX instructions Joakim Tjernlund
2009-10-07 20:46 ` [PATCH 6/6] 8xx: start using dcbX instructions in various copy routines Joakim Tjernlund
2009-10-07 21:18 ` Benjamin Herrenschmidt [this message]
2009-10-07 22:13 ` [PATCH 4/6] 8xx: Tag DAR with 0x00f0 to catch buggy instructions Joakim Tjernlund
2009-10-07 22:21 ` Benjamin Herrenschmidt
2009-10-07 23:12 ` Joakim Tjernlund
2009-10-07 21:18 ` [PATCH 3/6] 8xx: invalidate non present TLBs Benjamin Herrenschmidt
2009-10-07 22:12 ` Joakim Tjernlund
2009-10-07 22:20 ` Benjamin Herrenschmidt
2009-10-08 19:22 ` Joakim Tjernlund
2009-10-08 20:11 ` Dan Malek
2009-10-08 20:18 ` Benjamin Herrenschmidt
2009-10-08 20:28 ` Benjamin Herrenschmidt
2009-10-08 22:08 ` Dan Malek
2009-10-08 22:23 ` Benjamin Herrenschmidt
2009-10-08 23:01 ` Joakim Tjernlund
2009-10-09 0:56 ` Benjamin Herrenschmidt
2009-10-09 0:36 ` Dan Malek
2009-10-09 0:57 ` Benjamin Herrenschmidt
2009-10-08 20:37 ` Joakim Tjernlund
2009-10-08 20:44 ` Benjamin Herrenschmidt
2009-10-09 0:05 ` Dan Malek
2009-10-08 20:42 ` Benjamin Herrenschmidt
2009-10-07 21:14 ` [PATCH 2/6] 8xx: get rid of _PAGE_HWWRITE dependency in MMU Benjamin Herrenschmidt
2009-10-07 22:08 ` Joakim Tjernlund
2009-10-07 22:20 ` Benjamin Herrenschmidt
2009-10-07 23:11 ` Joakim Tjernlund
2009-10-08 0:04 ` Benjamin Herrenschmidt
2009-10-08 0:19 ` Joakim Tjernlund
2009-10-08 0:28 ` Benjamin Herrenschmidt
2009-10-08 6:45 ` Joakim Tjernlund
2009-10-08 20:21 ` Benjamin Herrenschmidt
[not found] ` <OFCA7943E6.AFEF924A-ONC1257648.007E27B0-C1257648.007F62E9@LocalDomain>
2009-10-07 23:34 ` Joakim Tjernlund
-- strict thread matches above, loose matches on Subject: below --
2009-10-08 13:24 [PATCH 0/6] 8xx MMU fixes Joakim Tjernlund
2009-10-08 13:24 ` [PATCH 1/6] 8xx: DTLB Error must check for more errors Joakim Tjernlund
2009-10-08 13:24 ` [PATCH 2/6] 8xx: Update TLB asm so it behaves as linux mm expects Joakim Tjernlund
2009-10-08 13:24 ` [PATCH 3/6] 8xx: invalidate non present TLBs Joakim Tjernlund
2009-10-08 13:24 ` [PATCH 4/6] 8xx: Tag DAR with 0x00f0 to catch buggy instructions Joakim Tjernlund
2009-10-05 12:16 [PATCH 0/6] PowerPc 8xx TLB/MMU fixes Joakim Tjernlund
2009-10-05 12:16 ` [PATCH 1/6] 8xx: DTLB Error must check for more errors Joakim Tjernlund
2009-10-05 12:16 ` [PATCH 2/6] 8xx, fault: Add some debug code to do_page_fault() Joakim Tjernlund
2009-10-05 12:16 ` [PATCH 3/6] 8xx: get rid of _PAGE_HWWRITE dependency in MMU Joakim Tjernlund
2009-10-05 12:16 ` [PATCH 4/6] 8xx: Tag DAR with 0x00f0 to catch buggy instructions Joakim Tjernlund
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1254950301.2409.11.camel@pasglop \
--to=benh@kernel.crashing.org \
--cc=Joakim.Tjernlund@transmode.se \
--cc=RFeany@mrv.com \
--cc=linuxppc-dev@ozlabs.org \
--cc=scottwood@freescale.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.