From patchwork Sat Jul 18 20:08:50 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Wood X-Patchwork-Id: 497416 X-Patchwork-Delegate: scottwood@freescale.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id DA84614077A for ; Sun, 19 Jul 2015 06:25:52 +1000 (AEST) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 3A50B1A19B2 for ; Sun, 19 Jul 2015 06:25:52 +1000 (AEST) X-Original-To: linuxppc-dev@lists.ozlabs.org Delivered-To: linuxppc-dev@lists.ozlabs.org Received: from na01-bn1-obe.outbound.protection.outlook.com (mail-bn1on0130.outbound.protection.outlook.com [157.56.110.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id EB9921A1955 for ; Sun, 19 Jul 2015 06:09:36 +1000 (AEST) Authentication-Results: lists.ozlabs.org; dkim=none (message not signed) header.d=none; Received: from snotra.am.freescale.net (192.88.168.49) by CY1PR03MB1486.namprd03.prod.outlook.com (10.163.17.16) with Microsoft SMTP Server (TLS) id 15.1.213.14; Sat, 18 Jul 2015 20:09:30 +0000 From: Scott Wood To: Subject: [RFC PATCH 13/17] powerpc/book3e-64/kexec: create an identity TLB mapping Date: Sat, 18 Jul 2015 15:08:50 -0500 Message-ID: <1437250134-307-14-git-send-email-scottwood@freescale.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1437250134-307-1-git-send-email-scottwood@freescale.com> References: <1437250134-307-1-git-send-email-scottwood@freescale.com> MIME-Version: 1.0 X-Originating-IP: [192.88.168.49] X-ClientProxiedBy: BY2PR21CA0002.namprd21.prod.outlook.com (25.162.74.140) To CY1PR03MB1486.namprd03.prod.outlook.com (25.163.17.16) X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1486; 2:ZhvMxaZ4vnIGfOsUX2gvG+zmJ6CXqOL70g6cP8WP0goKVQC4oYuwmiK9FMiXibIh; 3:nDTCJxWX9pk7dbE3gWiRB9VGKiW4mdCCVlIX6Px1ePca1P4FGzYkOJDCMApVD+J/mXNesENvT0QG9cJXXz0cix3fxKpNHNl8GBsXMpG0iO67SvH6GxjeMzYn9b3fQZUAEBQ3G2gQGbHaZCPi4Hq2Sg==; 25:pygxrDG2HnazyPwyaWcj7g4u79FjIWdC8WIJJpaGQq3YTwMRiCtIRhzuyaEbxbQfrPvfbwcMgv0Fo5oe68qvK3if5LygsqMoLcVobZlmtkRUmd4qLPgzIRk3jbA9Zc5zN/2V/9cRHXeB6tZ73likl3dGZz6TY31j5cmcmCdZV9U78vC3cDnd2ui7viLcSct6bvXxHX+o4xrLPjujmnWTENhuWcdwDcUQSkFtrtX78PNRGqFxVyB/w9XJqPxJpH8SvZxAbMgFKmw8Ndf1PfM9UA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:CY1PR03MB1486; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1486; 20:Knwvi1d+0vaP+pKjxRufBVdRyMDd3Y4VZori4otQ0jX01oXWbRyIrbPomltOdDF0WTBp2bCxq/OTK8APnO2cPVIVh0sGB6d4kYvWDDNf+l6J1/0i3EyLfC5y1hD5lrhb/TPjxGhHcc2Hwd1sEL5zCzDjhA7K90x7QLdF53e6ggpjiF+8XvqCg81978yYzoaZw5lWDa4UwFd3Q6gU5wFsZfcY7oj8W4LU3am0V51ZqnFzH+qNNM/5DWpTbMdxLoQFfNnH0Xvg67+iEt3yzyZh4jI3F9JZD/pIWDoD9yGg+BoGUxiKTVpvvaUieFi67qhlyTuP1XdcQzr86bkL5lgrtyk3KsDTOVYl6b5dP8uWWW9ZvHDjK2xldiQo87YPP4mW9VIxgwB5Zy3V4YMXpjXmkn7jIcxf2+aumrTbzupt5B1tR5Y9FnHX7gYTWpKV/DbXT3XrIwzBjo/A4hEVRnube/hAk0PA7Ov3encP2NHzmOhrubBuWCvFr86CriU3E7Yi; 4:s1jWW6lupIldz0n9StYElk6IpzcDcKTVkSDCZ5MXDpu+/8fAQLb4XO/dncgLa9x//8en1sta8cFo88d/9XklDDjILwpwO7AbAFib6imvI3Z34SNjE4VV7ovI65GkQE6bhkd/DMMDbUkZqVqnbvVGhUWZd4L2yaWiM9lMM5pw4cEYfG2xM+JpmSIyDBxx6m2IlGKT57DaKP+W57Q9LTrrablFk5NrouWpD84TenDt3B//A3CBR+jTnl1EYZW1i71+wvh3LZgu2qOKbAxEsl84SBvZ4Y0Xyv5q9/kcPpJad+Q= CY1PR03MB1486: X-MS-Exchange-Organization-RulesExecuted X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(5005006)(3002001); SRVR:CY1PR03MB1486; BCL:0; PCL:0; RULEID:; SRVR:CY1PR03MB1486; X-Forefront-PRVS: 0641678E68 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(19580395003)(50466002)(19580405001)(229853001)(36756003)(46102003)(2351001)(42186005)(40100003)(87976001)(122386002)(33646002)(86362001)(62966003)(5001960100002)(5001920100001)(92566002)(2950100001)(110136002)(77096005)(107886002)(48376002)(77156002)(50986999)(76176999)(66066001)(47776003)(50226001)(5003940100001)(189998001)(217873001)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:CY1PR03MB1486; H:snotra.am.freescale.net; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1486; 23:ho3wGdCl+iZqs773uA2tQu46anCPef64d6zdJq0wzW4YfgIRC6+U8czO7CLMnzP1Usn3/eXigzUcVmfvlAHPA8vy2P3MF0JBTGsgQiV5fwGkrFK7472gqPrhz6hRgkE9Hgfu52UkjYNdeAsIlKEXikgvRq7w4JOpQm5o6Jlw8PglwJ8hnHv5AsQqA5QJ1d1QMhc6qPlGv29PBfN7ettIw0QMHGtW7YK6+GXb+W2BDGm6xNx00vAYPMwg1wdKWbnQoC4fTN0Vot1/SKKkuBuF07QMTdx50Jt+1e2fHsf231hP2upsl0YQfp3lpwhkGVY4K5tXhSup4bMp9WKoI4Y98kVH7Dy+XlZ3apfOTuXARuxgSDgrlGq0+TNJ9R5XgkwtCReWBQ6k3hf25crbuQUIVxOV2x5xSAKxXXbaJKfupnY37L24e9YJsLJmxVPuCVg/errVO1g4ml45TwBhtA09dlB8BSWR0F41rvhHiFE/VR68uvqCkJ9D0XZ4PI2RVJRNf1WS/7sKxBjnqLWlbs2F+8C/+Yv010SnpSR6A1FfFUlkEAWCB7v0zaQMVJ+rnFi1EvJrQuA2vtPhW2IHDi+9Ji+bo4/OIfgBHUWQ4z2h862IJhXycQKquQQN1ioYrat99GJ6RUQnFMjXt/+YFs0rvr3cDGkaPBvW3iwwoSDQbltGWLquTHuT4fxPnWPud6JlCJAA/LNDCmxro5ZpEt3uWR+EAWLiz+gr4b2LU7oEOQM5B5s0QRYPF7AR6036M8arcoNeHhoRalGDWaX+oBuxiKfQGwl2OAHk8Q8Tlaf6sjp4qf4owtoJDOQvXcVjr6q2w9/CCX0za3VxkoHV19KOXvPQmIimIC457ER21AayqXDfPTMXaMnCeEiimTOfQ2h7p0ppOZSBIT26zQVcG0S9hWjBICoRvGqLTEzZnomCUJU= X-Microsoft-Exchange-Diagnostics: 1; CY1PR03MB1486; 5:XFW0cmuEuxxN+tpkGpsQB3Fo0KD8IqnhBmofA8R9OuWVB3ukNIOZig5gYsUsctd1bENMTCWMhH66dBH4cDxhYk50aN/ZRo7pjlmwwnj+I027S4rZKx7AxV+OsGmNrYsBqJfDt3qsNmDdnYqwqtFMrA==; 24:EBkGH0UjfeUnKfYXoL73//7EqSPvFNQX/UN8WJGfqwSZ7ERylHHTKZfrMAr5yD50L7BJxwVZUFEepDaMsw3HMpD/s9n7EzrU7PBuRqemzDI=; 20:+ZxOxsmt/pJ2Ugc5+sw7ar/Gbe+QAvKlCiey1yGeHR+ooayTx4UtoubdL3hSkAUlZB5en77V1mwHJX2HvK+Ewg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jul 2015 20:09:30.0914 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR03MB1486 X-BeenThere: linuxppc-dev@lists.ozlabs.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Scott Wood , Tiejun Chen , kexec@lists.infradead.org, Tiejun Chen Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" From: Tiejun Chen book3e has no real MMU mode so we have to create an identity TLB mapping to make sure we can access the real physical address. Signed-off-by: Tiejun Chen [scottwood: cleanup, and split off some changes] Signed-off-by: Scott Wood --- arch/powerpc/kernel/misc_64.S | 52 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/arch/powerpc/kernel/misc_64.S b/arch/powerpc/kernel/misc_64.S index 4e314b9..c5915f0 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -26,6 +26,7 @@ #include #include #include +#include .text @@ -487,6 +488,51 @@ kexec_flag: #ifdef CONFIG_KEXEC +#ifdef CONFIG_PPC_BOOK3E +/* + * BOOK3E has no real MMU mode, so we have to setup the initial TLB + * for a core to identity map v:0 to p:0. This current implementation + * assumes that 1G is enough for kexec. + */ +kexec_create_tlb: + /* + * Invalidate all non-IPROT TLB entries to avoid any TLB conflict. + * IPROT TLB entries should be >= PAGE_OFFSET and thus not conflict. + */ + PPC_TLBILX_ALL(0,R0) + sync + isync + + mfspr r10,SPRN_TLB1CFG + andi. r10,r10,TLBnCFG_N_ENTRY /* Extract # entries */ + subi r10,r10,1 /* Last entry: no conflict with kernel text */ + lis r9,MAS0_TLBSEL(1)@h + rlwimi r9,r10,16,4,15 /* Setup MAS0 = TLBSEL | ESEL(r9) */ + +/* Set up a temp identity mapping v:0 to p:0 and return to it. */ +#if defined(CONFIG_SMP) || defined(CONFIG_PPC_E500MC) +#define M_IF_NEEDED MAS2_M +#else +#define M_IF_NEEDED 0 +#endif + mtspr SPRN_MAS0,r9 + + lis r9,(MAS1_VALID|MAS1_IPROT)@h + ori r9,r9,(MAS1_TSIZE(BOOK3E_PAGESZ_1GB))@l + mtspr SPRN_MAS1,r9 + + LOAD_REG_IMMEDIATE(r9, 0x0 | M_IF_NEEDED) + mtspr SPRN_MAS2,r9 + + LOAD_REG_IMMEDIATE(r9, 0x0 | MAS3_SR | MAS3_SW | MAS3_SX) + mtspr SPRN_MAS3,r9 + li r9,0 + mtspr SPRN_MAS7,r9 + + tlbwe + isync + blr +#endif /* kexec_smp_wait(void) * @@ -516,6 +562,10 @@ _GLOBAL(kexec_smp_wait) * don't overwrite r3 here, it is live for kexec_wait above. */ real_mode: /* assume normal blr return */ +#ifdef CONFIG_PPC_BOOK3E + /* Create an identity mapping. */ + b kexec_create_tlb +#else 1: li r9,MSR_RI li r10,MSR_DR|MSR_IR mflr r11 /* return address to SRR0 */ @@ -527,7 +577,7 @@ real_mode: /* assume normal blr return */ mtspr SPRN_SRR1,r10 mtspr SPRN_SRR0,r11 rfid - +#endif /* * kexec_sequence(newstack, start, image, control, clear_all())