{"id":268,"url":"http://patchwork.ozlabs.org/api/1.1/patches/268/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1221253688-25864-3-git-send-email-galak@kernel.crashing.org/","project":{"id":2,"url":"http://patchwork.ozlabs.org/api/1.1/projects/2/?format=json","name":"Linux PPC development","link_name":"linuxppc-dev","list_id":"linuxppc-dev.lists.ozlabs.org","list_email":"linuxppc-dev@lists.ozlabs.org","web_url":"https://github.com/linuxppc/wiki/wiki","scm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git","webscm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/"},"msgid":"<1221253688-25864-3-git-send-email-galak@kernel.crashing.org>","date":"2008-09-12T21:08:07","name":"powerpc/fsl-booke: Fixup 64-bit PTE reading for SMP support","commit_ref":"b38fd42ff46a4a31dced8533e8a6e549693500b6","pull_url":null,"state":"accepted","archived":true,"hash":"8d3505b0ad34c1052e6a21de5e8046983ad30f4d","submitter":{"id":5,"url":"http://patchwork.ozlabs.org/api/1.1/people/5/?format=json","name":"Kumar Gala","email":"galak@kernel.crashing.org"},"delegate":{"id":9,"url":"http://patchwork.ozlabs.org/api/1.1/users/9/?format=json","username":"galak","first_name":"Kumar","last_name":"Gala","email":"galak@kernel.crashing.org"},"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/1221253688-25864-3-git-send-email-galak@kernel.crashing.org/mbox/","series":[],"comments":"http://patchwork.ozlabs.org/api/patches/268/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/268/checks/","tags":{},"headers":{"Return-Path":"<linuxppc-dev-bounces+patchwork=ozlabs.org@ozlabs.org>","X-Original-To":["patchwork@ozlabs.org","linuxppc-dev@ozlabs.org"],"Delivered-To":["patchwork@ozlabs.org","linuxppc-dev@ozlabs.org"],"Received":["from ozlabs.org (localhost [127.0.0.1])\n\tby ozlabs.org (Postfix) with ESMTP id 14951DEA1F\n\tfor <patchwork@ozlabs.org>; Sat, 13 Sep 2008 07:09:06 +1000 (EST)","from gate.crashing.org (gate.crashing.org [63.228.1.57])\n\t(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))\n\t(Client did not present a certificate)\n\tby ozlabs.org (Postfix) with ESMTPS id 5A4E1DDFC5\n\tfor <linuxppc-dev@ozlabs.org>; Sat, 13 Sep 2008 07:08:16 +1000 (EST)","from localhost (localhost.localdomain [127.0.0.1])\n\tby gate.crashing.org (8.14.1/8.13.8) with ESMTP id m8CL8B90024762\n\tfor <linuxppc-dev@ozlabs.org>; Fri, 12 Sep 2008 16:08:11 -0500"],"From":"Kumar Gala <galak@kernel.crashing.org>","To":"linuxppc-dev@ozlabs.org","Subject":"[PATCH v4 3/4] powerpc/fsl-booke: Fixup 64-bit PTE reading for SMP\n\tsupport","Date":"Fri, 12 Sep 2008 16:08:07 -0500","Message-Id":"<1221253688-25864-3-git-send-email-galak@kernel.crashing.org>","X-Mailer":"git-send-email 1.5.5.1","In-Reply-To":"<1221253688-25864-2-git-send-email-galak@kernel.crashing.org>","References":"<1221253688-25864-1-git-send-email-galak@kernel.crashing.org>\n\t<1221253688-25864-2-git-send-email-galak@kernel.crashing.org>","X-BeenThere":"linuxppc-dev@ozlabs.org","X-Mailman-Version":"2.1.11","Precedence":"list","List-Id":"Linux on PowerPC Developers Mail List <linuxppc-dev.ozlabs.org>","List-Unsubscribe":"<https://ozlabs.org/mailman/options/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@ozlabs.org?subject=unsubscribe>","List-Archive":"<http://ozlabs.org/pipermail/linuxppc-dev>","List-Post":"<mailto:linuxppc-dev@ozlabs.org>","List-Help":"<mailto:linuxppc-dev-request@ozlabs.org?subject=help>","List-Subscribe":"<https://ozlabs.org/mailman/listinfo/linuxppc-dev>,\n\t<mailto:linuxppc-dev-request@ozlabs.org?subject=subscribe>","MIME-Version":"1.0","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Sender":"linuxppc-dev-bounces+patchwork=ozlabs.org@ozlabs.org","Errors-To":"linuxppc-dev-bounces+patchwork=ozlabs.org@ozlabs.org"},"content":"We need to create a false data dependency to ensure the loads of\nthe pte are done in the right order.\n\nSigned-off-by: Kumar Gala <galak@kernel.crashing.org>","diff":"diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl_booke.S\nindex 3cb52fa..377e0c1 100644\n--- a/arch/powerpc/kernel/head_fsl_booke.S\n+++ b/arch/powerpc/kernel/head_fsl_booke.S\n@@ -579,13 +579,19 @@ interrupt_base:\n \n \tFIND_PTE\n \tandc.\tr13,r13,r11\t\t/* Check permission */\n-\tbne\t2f\t\t\t/* Bail if permission mismach */\n \n #ifdef CONFIG_PTE_64BIT\n-\tlwz\tr13, 0(r12)\n+#ifdef CONFIG_SMP\n+\tsubf\tr10,r11,r12\t\t/* create false data dep */\n+\tlwzx\tr13,r11,r10\t\t/* Get upper pte bits */\n+#else\n+\tlwz\tr13,0(r12)\t\t/* Get upper pte bits */\n+#endif\n #endif\n \n-\t /* Jump to common tlb load */\n+\tbne\t2f\t\t\t/* Bail if permission/valid mismach */\n+\n+\t/* Jump to common tlb load */\n \tb\tfinish_tlb_load\n 2:\n \t/* The bailout.  Restore registers to pre-exception conditions\n@@ -640,10 +646,20 @@ interrupt_base:\n \n \tFIND_PTE\n \tandc.\tr13,r13,r11\t\t/* Check permission */\n+\n+#ifdef CONFIG_PTE_64BIT\n+#ifdef CONFIG_SMP\n+\tsubf\tr10,r11,r12\t\t/* create false data dep */\n+\tlwzx\tr13,r11,r10\t\t/* Get upper pte bits */\n+#else\n+\tlwz\tr13,0(r12)\t\t/* Get upper pte bits */\n+#endif\n+#endif\n+\n \tbne\t2f\t\t\t/* Bail if permission mismach */\n \n #ifdef CONFIG_PTE_64BIT\n-\tlwz\tr13, 0(r12)\n+\tlwz\tr13,0(r12)\n #endif\n \n \t/* Jump to common TLB load point */\n@@ -702,7 +718,7 @@ interrupt_base:\n /*\n  * Both the instruction and data TLB miss get to this\n  * point to load the TLB.\n- *\tr10 - EA of fault\n+ *\tr10 - available to use\n  *\tr11 - TLB (info from Linux PTE)\n  *\tr12 - available to use\n  *\tr13 - upper bits of PTE (if PTE_64BIT) or available to use\n","prefixes":[]}