From patchwork Wed Oct 7 03:48:18 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Wood X-Patchwork-Id: 527112 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 [IPv6:2401:3900:2:1::3]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 68201140D72 for ; Wed, 7 Oct 2015 15:06:30 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 4C25A1A1979 for ; Wed, 7 Oct 2015 15:06:30 +1100 (AEDT) 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-bn1bn0106.outbound.protection.outlook.com [157.56.110.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id 246161A00F8 for ; Wed, 7 Oct 2015 14:48:58 +1100 (AEDT) Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=scottwood@freescale.com; Received: from snotra.am.freescale.net (192.88.168.49) by BY1PR03MB1483.namprd03.prod.outlook.com (10.162.210.141) with Microsoft SMTP Server (TLS) id 15.1.286.20; Wed, 7 Oct 2015 03:48:53 +0000 From: Scott Wood To: Subject: [PATCH v2 14/18] powerpc/book3e-64/kexec: create an identity TLB mapping Date: Tue, 6 Oct 2015 22:48:18 -0500 Message-ID: <1444189702-17241-15-git-send-email-scottwood@freescale.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1444189702-17241-1-git-send-email-scottwood@freescale.com> References: <1444189702-17241-1-git-send-email-scottwood@freescale.com> MIME-Version: 1.0 X-Originating-IP: [192.88.168.49] X-ClientProxiedBy: BLUPR08CA0034.namprd08.prod.outlook.com (10.141.200.14) To BY1PR03MB1483.namprd03.prod.outlook.com (25.162.210.141) X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1483; 2:lm6R5M1afH/YOP1T5P8HgLa+hDC+LFBrk7+DousMjLSIBG0E5Ij/psnjaUgmDilf92M/Jl+g3ajkIu4ShQ/QZMKkG6M8f8G/SmG7+v7Uz8qypPfNCIrIpovxGfNKUI00lJWfc/qeBmextCzh0oFMh2Xjsz13N1G5RTI6pDywSr8=; 3:3EFt1uNcehpgC0KElfJFrUicSvRf3MbAvm+cL0cp4JsE+P9fU7MNQLxidRujHB6T/zF7PPQuoyvLW6JRV0rW0Bmp2igTHy7rSUDSDu++Vr9iwhu/yfXKEKbqztxVBEiM0dVyOxKYrgb+1e7VADnocA==; 25:20oTwyViMHbzLgzYhEfpKVD94qmYfeRfRiUqCBjXBUeH/j9pLbGhLEbBXvH8yxktargA7h3vd6T5hvxQeHK2YOrETpswISEMmVnhjxx3oCzqF08MQcOXAJ0lxjdZNPWUQSfQh8O2nOp4+FBtt/1zcBCjaWIIMvCiBV+qk7Q85SpE2UGCgdNNZDmOuFJdbt7oXdkaR7EeUjUwfyI1/DptXalt89UMJOodDTc9NudYjSMDWrZA6XkQ0eX+z5OpojvJUPqoiNnCUG1Ru1L9YllpHA== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1483; X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1483; 20:zCdIvXFPoT0X4EP9G5fZBaPwe3HhntHiPLzNQq4u3IjVFeOYr7QZUSQq6RqxtNLT45qHYwqG8utxe3+PLNRsHA9+kEcSqGnG85sIpG5AZBy2BDXhRCe1tO5jxBcV23fyOOSml0P88BRe/aGploKeRBgNEFrJWlulL7CrqItrjTG7UCsN5JNp8WMweUjRl6lCSMTeQIKms473fwJl2H+KAfhfU4KzGIY9o682VMLI3HGCvRFnid39FSsgGGWcO62i/4QJ9QqVXD4iIS1eEfF7UVtXOBOXI57VuqOtHUn4qPRe0xkYWfuHtmUDkZGa+FnHOLlw79C6w+BK1ol1g37fuhI9qyxxlL2CL1zJ/nFE4eRq90aMXVRSAE5LdtKkJVR1M2wYkIQ4131dt0LSHWvllvp9FcjWlCwnzmcFxGTJoCWtyrR5WB9gW/MSIjIvXEZleMIHexkrwTwTNMEULDtKPkWUZMGLj5eDj7Gob+x6DENTgiVaFzA2e9m+GnlbxNWU; 4:n6Tk6t/hXmUSQ9lfL0pNMGTkfGrMuWA1xO8vNnQdDSGDJ/31H4VfROr/Dc2IQ6I0Of+X4ODMfBqEzi8OwVajwyVnR98QADwSmJA0xT4pMZk5n8P3ju/xghdEoa6qq6ACw+0r6BKHChe+ucjxh1R4WXcLuUJw5Xn6eqwQsIZhBnxw63E8v0f63vo/M1lw0it1n1/E0ArFs+hFDJ0PesTzy6MVYKJvQ68bn2iYJipLVshEFqIsRjvNG98qW8z2IN261tPUw+GKdbL4iDQYEsKFxFuhTn0vOojWxGYt1P4l+HvJS7VdlNELhRb+XKq34yK4eiZGjdctMCieE2iVQaI3PKTKVVquZbrHp1Imcwry8Ac= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(601004)(2401047)(5005006)(520078)(8121501046)(3002001); SRVR:BY1PR03MB1483; BCL:0; PCL:0; RULEID:; SRVR:BY1PR03MB1483; X-Forefront-PRVS: 0722981D2A X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(6009001)(199003)(189002)(122386002)(19580395003)(5007970100001)(5003940100001)(189998001)(19580405001)(107886002)(105586002)(46102003)(106356001)(50466002)(77096005)(40100003)(2351001)(110136002)(50986999)(64706001)(42186005)(87976001)(86362001)(5004730100002)(47776003)(5001960100002)(76176999)(229853001)(101416001)(50226001)(92566002)(5008740100001)(2950100001)(66066001)(33646002)(36756003)(81156007)(5001920100001)(97736004)(48376002)(4001430100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BY1PR03MB1483; H:snotra.am.freescale.net; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: freescale.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR03MB1483; 23:8DJJzCkvqJACQ23IuCvwDKOUdGfSfHeEyKJEUUYwt?= =?us-ascii?Q?qA1jCPKkGuHiPkmmmTLbna5AMyirJUYtj6Ioa5nbYjUsALntG3WS/IMHAgps?= =?us-ascii?Q?pW8Q86T/E+T9+1fgtUtC7LB9meHu6fi3B3EF9bUBYhzqSTzdotsqKF9eFmzo?= =?us-ascii?Q?k8LawUEQ+trZwuKTy1N1EmpkxYyAbmakZvbXMJoh7pYzh9P2G1i3KCKRTsBI?= =?us-ascii?Q?3sGz7AzDMQjzydfX7IEeqMcmViQhOGkzlCEe9w7r3upIkO/F+vRmOp9uEoiV?= =?us-ascii?Q?foBDxq71RfObvOUlNLEFxnO3eFh+i/t9JbU2ABKlU3cKlyQk66uVUbgDyI51?= =?us-ascii?Q?wPMmlmlslWKDxYMTwSxgcsvwZUzeMUQStMQWRLteoe6Z4/PiYQ9eUONLD49C?= =?us-ascii?Q?iHapolxiXA7bP0zEMq9UpCMQDL8Mt/Dguny7bZKpNIJJZikTdgTySQ0Hk4Sv?= =?us-ascii?Q?EofHZJEO1jpaQvyK4qaldoFlMglgUokxN5AQvysRDn3yMTHabNIg5Tn8Kr+J?= =?us-ascii?Q?KVcDuQi4TxHjNjtICbg6hKjQKdXRXEmwAnsLukUnz0LeyKhpL+ZtdX2XONL0?= =?us-ascii?Q?5kul4XxFYbZznziyLcvM0P3ZkFcrnm/5BaFO9/Zjh5j7OydKEVRUBedQT2j8?= =?us-ascii?Q?nbJgJbztrMPu7XOfwXO3D7lcxJL1U/0jHkYZDYDf9J7pZURbE7UeUUBvH1hv?= =?us-ascii?Q?RYQ7xnlZH3qh8D8hVfI4pIxwfXjMWG4yhi9ZUslUFgopHhQbC1g1ZsVUImlA?= =?us-ascii?Q?hNt+VeWtW/VubaS9Dzolt1jGnZuFuTGymQKFR2ZBKSiCV/2iuN/97q8OzDoI?= =?us-ascii?Q?kMzFj7cOUrOCnodr10UzkMxPpzJfGXYeiiJb2v57i3+uP9mLXVtdJo4qE63t?= =?us-ascii?Q?Brq9Ouw2KVO2ity2Z6fWnrZ2HeHTyDJHRmd055xqLpX5CcJ394t12vn4wEvy?= =?us-ascii?Q?A2WBo9l+a0o8FGEzNh2lyD/+TEHBCEQhI2sdlATnrtwj2JXxdURJxVac675p?= =?us-ascii?Q?o/j9xttreHv/BJ/zRh5UY2ACXFDdqYhosa3Qc7KGk9HNnMMjGceVSxML+YbX?= =?us-ascii?Q?zCZMrYSreKS6CxS7aRjA7dleKXcCij/gMhzMkiJImFJbuQNACcMeda0yHwZ9?= =?us-ascii?Q?/Wi85ZLQAY=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1483; 5:ixO/J70kAFkYg2V9/Z0+WOA+mTuYC0J2n6tNrhOVWXEvBoDHp5VYwSrpJQHWX+uvMtOzbCe4L8cqEblUUHGFpu/UAlFLkU39Pe8/V2bH2V4Fvm8Z7rz/NWnrqVsi7KZDTdf4jIvq9lna+e7iyaL6Ew==; 24:7uZ++bX8hzA/nt/lYx+rwD81tOzqqDlYYFmm76ZjQML4K5gLX/pltR+wf3SRvbY0X2T+EJhiRkumfv//8a+9GWZWWrxvbyro9/mhS2AFkBg=; 20:J4BqQtZyY9jPSLK35x153E1VT6DzR93y5yTHBxKvdICpIbyGAC4VnBDOSGZZ6+FundyhsE8SoVxQ/sxXJz7/EQ== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2015 03:48:53.1545 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR03MB1483 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: Tiejun Chen , Tiejun Chen , kexec@lists.infradead.org, Scott Wood 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 6e4168c..246ad8c 100644 --- a/arch/powerpc/kernel/misc_64.S +++ b/arch/powerpc/kernel/misc_64.S @@ -26,6 +26,7 @@ #include #include #include +#include .text @@ -496,6 +497,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) * @@ -525,6 +571,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 */ @@ -536,7 +586,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())