From patchwork Wed Oct 7 03:48:05 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Scott Wood X-Patchwork-Id: 527089 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 CFC18140D72 for ; Wed, 7 Oct 2015 14:51:01 +1100 (AEDT) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id B08491A0392 for ; Wed, 7 Oct 2015 14:51:01 +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-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 1788E1A0008 for ; Wed, 7 Oct 2015 14:48:37 +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:29 +0000 From: Scott Wood To: Subject: [PATCH v2 01/18] powerpc/fsl-booke-64: Allow booting from the secondary thread Date: Tue, 6 Oct 2015 22:48:05 -0500 Message-ID: <1444189702-17241-2-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:uKp74lkrZupNKntwY2cLH3JHFj8W81RHyOdbau3yU4uzwJ3njer5bjJQ4BPzSWJBzh/Xitur6UkvZNFaJXaP0Mp4d4/E+iz89U3ipBXd2ITij2O6eGNhwMTkQnlR1gG5oce4nmsf3aN5nZoZH9XRYwGWaCiqX8n2JTc5o1GzuY8=; 3:jEoJlwqxZKidpGcc8ovMWrc2jwn9yN+gLGdg5HIJ8WfZghdcD5cxv5xZUI7XIrMdlOihCbOq4K+siFu3d69YMbnAwMI2ySUoBj+ov72CB3eqGsDd0AVIXI6euboCymheIpX7m5uhUvIP4o8KFraqWw==; 25:Po5T2GV0BnAnd0bAc/0iM/QTgv++z/y+t7jYIop6K+mRlceCje9wftgJJWJEgMmIpONmJpKWMdRBwxqqOPMtcT8GX73maopAq84rnzN/lM2JFW9k+kp8kzzEVMo1iPElkHoK7qtbwClRWyNHeiwyJ0qpEu1pugrtnVfqOhaZ/j/wm9K/V7jpsHoyzBiFSbkDdiHUWmeVCy9jUQieuZp8Q5rLQxZ7oluRRZIS0YxETYZz2QVVT0QMF7BrxvPET/RtRM4fZbi2WxSWmwLzeoSq4Q== X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BY1PR03MB1483; X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1483; 20:L5NBauy3bvsW7TStbWngqeb+caFKbTRZ1kpYCpi2buBAhNDfVPXckEZmm55wuN6zh6LjOP1pNrOjMQDJWDf66Ew21RLsAojohM5xrOOq+bc8cR4z6BDZHbj+OD4DKCZO96FElSmO+B0W6llpg6yIjXndU3ib7ZdQuNL9lZiMVMyVIutFl+kWZEF0t0Jtm19v0eV0Fbqv5cBdaLnC1O9JBlU+nQCXQvQuZcxJ6Sn344hOpNB0n0nKoCQt1Ae2cY+BJewoZ010onawLO7/E3Dh7q48Ttmf9TuOlxnFQppeUNcNJ7Zyl5Np56c4Oc3ilwkASOX0zbo23f7dK+1CdyyV0yVjrxwpKjpbXvZpWxFiLLIv/3kQb1LnxgzFNwMlG0z/uTwO6QSrIbICeZjW1c6XkpYBLSt8jNduNs3TKbMNpCI1+2RY696QwmHxpsyOa2VUjzy1+AUs1/mX1ba6I2XVdw5ZytO6+qGUsMXMsE0QWoWc6Z5P2K0dvDwgaai7NXVU; 4:GnHMzPbz/Ug8YpMxyp+qE9W2srC6OOWJYRnwpblAaQ8HZ4YIQJKqTZPdtgA3+8CKNBp9xd54GTjT3XjdaWtzDYMTlyf8fXLK4RmNJl2SpUOhIayyshGk2r3KWEYBGfycIlVgQbQqa1CCHtwzSGGgNDu3CyRqStylPZJszSHC1yawlzquzN65mOnST7dUXDWPF5QBMN642adW/iA4AIfeWgfBrQgNT82DYNDDz4eE2mQ23RbMD1OYcK0uGUu7uFVCBK48+xglNYX57OcI+y8pAIqOTk76f2IjFT+pbtMAS9dVS1LLJclihCQ41aIY22V8QzuTWi5jF9LrEa0kZFXpocs6GBvSrz5saqTzAcUOeyQ= 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)(230783001)(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:H7EtLv8WfrKLXkDsZGSkz9ulwVCfA02Wmv8b+7M0n?= =?us-ascii?Q?XjP37nWnNxZIPuImeD1K2Fegy1mTh7U6W4J26VDBu9VIxRytyUB3Y9tiGfUJ?= =?us-ascii?Q?Imb5YRJZi6dOyua1U3BTnNNc53yQ2nLQM/Esboyb0jfedQg3KzsIKDv2L2J0?= =?us-ascii?Q?KKqHb3og5QlxYZT83+lRQHuvOFnOHb7t6nhGQZiVz0emMnBX1I+1bEAI9Ujv?= =?us-ascii?Q?76DUWzYVV90rjBYUFqbY7GFbgSbW1uAtlHzpR+vxLxEMT9R+7aAuaNzTE+oC?= =?us-ascii?Q?sA1T8GL8hD6clsEE71f5HyScielunt7HklwK9ovX5GmSTz7ZJwf6DXQ7Y5bM?= =?us-ascii?Q?YZUizp76FblTknI8cETcS5a2MxKOGxiL3RXypmh3NsIVlGtGaSrQWTV+B8zg?= =?us-ascii?Q?saYieU3ZWEQTzE1k0IBIHQ68urPuLt6aJPOtqV3UAUzd9oAZ80QlNZH5xogh?= =?us-ascii?Q?efLy7NMWwuznizofRXYPj1QchLohkEzNkp0wyZRObUwJOpdT1y1oM5w7sMl1?= =?us-ascii?Q?GtoTTLUNc2STeTf5dEJecc2qQAO8dZt83/svacDNcBUtal3PcS1R7wLMshIE?= =?us-ascii?Q?jBu/nXmyWB2A+aa7JCcGhC2P/ckHcBN7Bqkfx6zJI7RVgxyZvnwgaO1jd7Fs?= =?us-ascii?Q?VH77SwXv7dsUrIVIruimWhnuYkT8H6mN7F3aznXeez2QZVIrzrnsrhlcppe8?= =?us-ascii?Q?WOfM+3acL4fzqXLiUc1JJIp5SAB+fHaCJnxlXknhSDWsRYrtZKs278IcrIVG?= =?us-ascii?Q?PUu+JAh5ltF6zMvLodtF1jDa6PF/u5Ut1+EUje1qMKR8T7Hh/9TxNCUPifrv?= =?us-ascii?Q?4JLJ6jYei0ovnvCLjZ6pSFOcxNt5if2xMalungOk0VPvgOZMBULARZmiH+ES?= =?us-ascii?Q?+7s/NX3GAin2QAMS6jzDHyL5xoPmmjxtgr4VmiBe1MSMEXFi+4yS4C+X/r4X?= =?us-ascii?Q?TJKM6F7dCzyOIZORPKGLogCB3qWSZ1mC33deZRCezTZOPVtLBMunqQHCQVWA?= =?us-ascii?Q?hHBmHCPLnXFx9QmVAb0+LEo8sB1pJPZVQHbEkkMKlhiEiJIowyGf/6QR8HAl?= =?us-ascii?Q?FgIVqqjnVnnVtEUJ/p6FUqdjgVwgKQNIXZKyraLNXU7DjR/9UzdIi8sGOfTU?= =?us-ascii?Q?37yVToP22DG+JpA6yc+AHeclC0xHvwd?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR03MB1483; 5:s2zhOYrcQDni9fYCfh+EVX2GHEtHfaxzKq3JoHy8YQ+mJkuwBlY0S0vTTu7wCkGcZMsXmSlsGgv9aFV0oNBnwC6hWCTBK4OxT7uMnqgLeWPAeQWid0QVTeQ5j82ROBFVfXaLgHDTrskKI++yip+/aQ==; 24:CJ5yoSaOpSg9irO0NcouJyralnnm/fTZ5l3GLL1I1CAKlgo7eLxQ8+DDjuPUdpCMcbe+LHitWnXmkLz+3f9Y6i7tPnDnoFE4WyD1uUM0+Bw=; 20:SMH1Eug5+LvgAG/MTstsKYwM48nxiNk2GrqAeJ2wuEvt5hsiW24zmOWqMCS2NR976c7K6L4HufJdXT+sgbaltg== X-OriginatorOrg: freescale.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Oct 2015 03:48:29.1692 (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: Scott Wood , Tiejun Chen , kexec@lists.infradead.org Errors-To: linuxppc-dev-bounces+patchwork-incoming=ozlabs.org@lists.ozlabs.org Sender: "Linuxppc-dev" This allows SMP kernels to work as kdump crash kernels. While crash kernels don't really need to be SMP, this prevents things from breaking if a user does it anyway (which is not something you want to only find out once the main kernel has crashed in the field, especially if whether it works or not depends on which cpu crashed). Signed-off-by: Scott Wood --- arch/powerpc/platforms/85xx/smp.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c index b8b8216..c2ded03 100644 --- a/arch/powerpc/platforms/85xx/smp.c +++ b/arch/powerpc/platforms/85xx/smp.c @@ -173,15 +173,22 @@ static inline u32 read_spin_table_addr_l(void *spin_table) static void wake_hw_thread(void *info) { void fsl_secondary_thread_init(void); - unsigned long imsr1, inia1; + unsigned long imsr, inia; int nr = *(const int *)info; - imsr1 = MSR_KERNEL; - inia1 = *(unsigned long *)fsl_secondary_thread_init; - - mttmr(TMRN_IMSR1, imsr1); - mttmr(TMRN_INIA1, inia1); - mtspr(SPRN_TENS, TEN_THREAD(1)); + imsr = MSR_KERNEL; + inia = *(unsigned long *)fsl_secondary_thread_init; + + if (cpu_thread_in_core(nr) == 0) { + /* For when we boot on a secondary thread with kdump */ + mttmr(TMRN_IMSR0, imsr); + mttmr(TMRN_INIA0, inia); + mtspr(SPRN_TENS, TEN_THREAD(0)); + } else { + mttmr(TMRN_IMSR1, imsr); + mttmr(TMRN_INIA1, inia); + mtspr(SPRN_TENS, TEN_THREAD(1)); + } smp_generic_kick_cpu(nr); } @@ -224,6 +231,12 @@ static int smp_85xx_kick_cpu(int nr) smp_call_function_single(primary, wake_hw_thread, &nr, 0); return 0; + } else if (cpu_thread_in_core(boot_cpuid) != 0 && + cpu_first_thread_sibling(boot_cpuid) == nr) { + if (WARN_ON_ONCE(!cpu_has_feature(CPU_FTR_SMT))) + return -ENOENT; + + smp_call_function_single(boot_cpuid, wake_hw_thread, &nr, 0); } #endif