From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752051AbdBOLo1 (ORCPT ); Wed, 15 Feb 2017 06:44:27 -0500 Received: from mail-ve1eur01on0060.outbound.protection.outlook.com ([104.47.1.60]:52609 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751532AbdBOLoZ (ORCPT ); Wed, 15 Feb 2017 06:44:25 -0500 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Mark.Rutland@arm.com; Date: Wed, 15 Feb 2017 11:44:16 +0000 From: Mark Rutland To: Leo Yan CC: Mathieu Poirier , Rob Herring , Wei Xu , Catalin Marinas , Will Deacon , , , , Daniel Thompson , Subject: Re: [PATCH RFC 2/3] coresight: add support for debug module Message-ID: <20170215114416.GF31733@leverpostej> References: <1486966298-16767-1-git-send-email-leo.yan@linaro.org> <1486966298-16767-3-git-send-email-leo.yan@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <1486966298-16767-3-git-send-email-leo.yan@linaro.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-Originating-IP: [217.140.96.140] X-ClientProxiedBy: AM4PR0202CA0018.eurprd02.prod.outlook.com (10.171.80.28) To VI1PR0802MB2400.eurprd08.prod.outlook.com (10.175.25.148) X-MS-Office365-Filtering-Correlation-Id: fe5aefc8-7b66-404b-803d-08d45597fb7a X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(48565401081);SRVR:VI1PR0802MB2400; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2400;3:/AXnocGLD6rnuRCEGhurO7vUf3CdraKqV9WmAK7cONcvwT1ad/4xxFjY0jfNbdKEw4IXSv/ebaofLkVxL2XxBxoLw7mo23HOHMor4I1obuiOtssUPFhP6rOsGgBfRkOfTWlQOzt8zr6NFvYW2hQlJn+tSm3La2fzNofSO9LFEsLIQMD99lhEOiF8ZKMiFDQ2hp5nNYpGL4M3GRjnSx6h2S6kJYZ5mbuhhoIAz8ADagCqaGPRqeXIYCoSL+2x8hk+SSFddoPGP5ShE4tGkmNWUVk+HQBE6fPm3RGItQNBLTI=;25:xsSNv+NRFfyP9okD18fYX7rVpMSK6pd2tKdA0dgASUO1ErW/juNDkJfidd6ZTN/OVa5VrJxNOvBRXTArsC0e7Hg6FjKVkrdGHEsIa0rj96LBuWK6ZLCzPPPQRXboT0fzNQ+pZirQHne496SYuo3yz0djEK2ek+UFEYK8FOyJtBJleU8fXbugFr5Lyo4rWQEZWITid/dHPfzVNqb0cnrP58/p76JDWVprAcY+rJdLNDOavPUprTwrdhkmF2ppxuHGy5lXr706ypuEXNxTNJ7k+OmtqkAopZpSlePkYAUuMG7pGw9jyuy1+LbzSF3HbIOQDDeaqb6UUgU1qRcVhWLYLOR2yWvkYCYCCba0dqdqQj0DNU0qF10qx9KifjSDf8bgTVDGz677zByaL4YRkkc8lUsVdAqcTCd27F7KO+l42O10vXd8tAGaOHL3RsGeRCix+KjJF2UAJDEes4A0+B9+/A== X-LD-Processed: f34e5979-57d9-4aaa-ad4d-b122a662184d,ExtAddr X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2400;31:hdIf7cceHGt4RHiWh7wB8PU9CpZRypjvXBBTP1ZucXg6hR7ZUfp00Xeztb6WeTy2lWMoDFHFAggLlszzNhkcIUnxxsbl6MrdNDpeHwDu9kpT/yK15GOaUVytPU/t5wh1h0GlAHIvfk22NnKSBeoouuaiW/rzchgtt2gpmW215o3hLWyyHt+CDzqhhtTt5KtDWaXT/cvs8vawCSyH8st8ZuBJhe44vfj1qwsMk1OXD80=;20:4VwXqJPZ0lRmtIyJbPH0aiSiVm/Z+yS+sVDt43dqKg5GIpVd0Zyhl7heH/AyLeqJKJUF0GdLnXQARz1bDOeE3yXt6/KjevtroR59mrl1pph+7tRpqUR+CppctWoKDEr9LqYNMJMBjqvRttOglaMFFuoZSF5riytykMwv6GmSYS4= NoDisclaimer: True X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(158342451672863)(192374486261705)(35073007944872); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6055026)(6041248)(20161123564025)(20161123562025)(20161123560025)(20161123555025)(20161123558025)(6072148);SRVR:VI1PR0802MB2400;BCL:0;PCL:0;RULEID:;SRVR:VI1PR0802MB2400; X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2400;4:My9Mfj7AR4EQGlew67sc2Inu+YnSbc4Z/EtWPz+x1tYSMwm51+m0QZcfbOTDdviEJniOM9f4ddP89Xv3dF0ImQAPgByPey685Uo5VUzDKMGdYFXU0lQWMG83BXVrpx/pqAzFAuBLrFe/1MfZ4N2ElrEiFFcKCOEddu8yPf2/kWJPlC0qWVwXDm5yQVgEhXAIqr8CKj4sqDmc/GNPefBi8HWh49k+CjAXVV+8lXnp3nEC63uuQFPHL+sIM8LdqbK2B/ge2qk5jmxeeKlhBrdfyCn1GyOqE5tNnBU8SVY/B7fdIQE8IqJDLaxIVqeitu6UXMqEeZB2Pl3IfIDmcYf9WCxNN73rC3xkrJ95ewqvoDhp/eeCn+wNfQzP6vFlryd8Dv/RcScbbhyEW1bEMKEExzS0cdzmQcCZAd+QBSiSZHkASddo8kBqhW3eci29yEubSMgBZHUWVBFF9kBJBP/FDCtKxknVNLZOxXXegsARx/zCVfjQljeQ5LH/0VOFkY5oTbpy5pdvivuCutWH/AOin/AdxCjXvj3/5Qr+EYjvKbRMRLL/b5F7ck0zu+3qVk9VpeOpkyYea1mWk/ZWmLn+SiSNFncS2lnQLLaz3IC7bIVaCOfSSawpU5+il4gnaov4fR+ye7wFA1AccIWf9/ciXTSYnWFTsiuIUV+h/PT8ljp/uUerlBAWdoOmEeWAmt+5OBlzoUbFTIxSkdNh1UwLSJAYv9JzSbNPBf1wAP8M2X8= X-Forefront-PRVS: 021975AE46 X-Forefront-Antispam-Report: SFV:NSPM;SFS:(10009020)(4630300001)(6009001)(7916002)(39840400002)(39850400002)(39410400002)(39450400003)(39860400002)(199003)(57704003)(24454002)(189002)(46406003)(68736007)(2906002)(33716001)(66066001)(92566002)(305945005)(7736002)(4001350100001)(97736004)(110136004)(38730400002)(389900002)(47776003)(5660300001)(101416001)(54356999)(4326007)(6916009)(83506001)(6116002)(3846002)(50466002)(2950100002)(23726003)(1076002)(50986999)(76176999)(6666003)(86362001)(9686003)(105586002)(33656002)(229853002)(25786008)(81166006)(81156014)(55016002)(42186005)(8676002)(53936002)(6246003)(189998001)(97756001)(6496005)(106356001)(54906002)(18370500001)(217873001);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0802MB2400;H:leverpostej;FPR:;SPF:None;PTR:InfoNoRecords;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;VI1PR0802MB2400;23:LmLOXSZFauhnbaIPMkL/HoIFhwHjPbIvCZ8EBIm?= =?us-ascii?Q?imfEwPYp/N16x0pv35agwk8s/NQI9IcuYW1ezWSys9QXGOuq3gD1+atJRCoT?= =?us-ascii?Q?ykx5Vrj28KgLY5FVhKn2r0yttr8yluxNfRj0/Wlfe6ymtz1cbYRetoFLIW+/?= =?us-ascii?Q?35w4iNijwM58VdTdse3vZVCGGb3N240ROG9ItyZlWbfMisYlXPk2lNQ5Ma5n?= =?us-ascii?Q?Dkn1JnxYmG+CLOmkZhG/xpBeFw3qsybvxeuI0/88pBbcHiEz1w52RH9FN2C3?= =?us-ascii?Q?9gPJYRlsDheIc4o6y3MscSHIivTmsodvVc/meoJQTy98W2D/DkQFbhUyehVW?= =?us-ascii?Q?tqGRXM8ChSwfUajpllticOi6Y8FpY6aNpEm3W3XbvbEymmbst3MtZBHS7eqL?= =?us-ascii?Q?pf5nt3SHVlQfGW6bahxoHgAxd7mDfqcYVjHTB/3ztsspmzgsaBJUPjAe5wE5?= =?us-ascii?Q?qNUCmoDjq+HEDW2t2xB1VhpBeFPfIVRHrgszF1HEY7odaAX7xqBEzHi7jarR?= =?us-ascii?Q?0r8M0XGUN3l9DFjp6VGnEhOZCmkCPKIR5RMwos/tGXGRyebWi7VCpAub0aMi?= =?us-ascii?Q?tBiSaKxmk9/AoNwhDkMbGal28kVyLEZVnwunw/ueoxJYpb1/gX36D6+O+Ast?= =?us-ascii?Q?9lPUHwTb3zaKDDL8fslzkEVdMpBEYHHODog8j2A2kZ0Woyx2twSa5aIFCkwE?= =?us-ascii?Q?zE5IA+VemsoChb/Dm6aLwLsEvuJgpV4SWG5gxSAUYKcwbPJ/eT40VSa58zII?= =?us-ascii?Q?/7fGRbcXU3JrZawaC34wMqh3lmdpOCi5sywQf7zWMelaIfcNwBnR7WezBeTo?= =?us-ascii?Q?jZ3IRBSZQTpnpyJea5bPSslMmHqg5ppcJMnxvFrpFsZoV1aK6tzsJInoyvuI?= =?us-ascii?Q?F1M0g1LzZ6QZFsulKiLGISyw/OoS+66jRsj2cwpHjbrKO8YgBAXf660Skt6U?= =?us-ascii?Q?jKai5BE1pDeHJJNib9MWvBFWVfzq6c5+BfsdOO3Jq7HhfyTWFTGd2IuUUQ9d?= =?us-ascii?Q?reYc3zKYBq73UTj+OBHgs+CjfcnWb10FCzGUGaW1XfeGacM2J4ITjrezelMd?= =?us-ascii?Q?w33K5XU5mtyJ+LfSZeR+9schGiOuUfA3f39B2hB1LLlm/bTZ85UjEqUHPQQG?= =?us-ascii?Q?1joqXNl3QSbbr+ANbBpMyuKh4yTQ3DMDNUpMT7pqSOVp2smJPh0nPFfpFway?= =?us-ascii?Q?hwroruKFGg3spSKfNUWy415bCJB0ZPVSaPxwK0ZEzUxSxV3/t+PcA6JnlnMB?= =?us-ascii?Q?JjLn186kpC0lvtw1jywjDJ8hjW7rziyXBy9u38HHEHGAO8Z3qxyPTXFqQiO8?= =?us-ascii?Q?r5JrjSEHx/fkL/jDdy+CqF03J96V6Xy/nmOfk0sxz9GNwaj2GIdojUhPXa4E?= =?us-ascii?Q?87ux28d8fP9ej5BxtgKcEDHqd2wU8XhGyRW+cpoV9brdXWpMsoXtJV1FjUkX?= =?us-ascii?Q?dRoWPzriNZGt3sdwabCfW48yoEcZHm70WpsjwQkxan9PLv3lFqcZC?= X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2400;6:KC4N2E3/Sw3a1z2Hdmh53pOwGOUW1uCLWfsR5sQCuIcX7riIsT1tchNdPOWn+oW9vNJEJspsbBfTJP8oMbgfhV6RUEjGwUTnUojd6R0EtRR8Ccps9WS0D8xmTZCcFOLuHleuxGpsp4vgTL4s5r5yyR/7rokow8atDnJ8ktKJPPsnb25hxypzMLr+NsiLG6kiwKtx9imFUdqB2CviC7Fbqd/J+jG0fk38RCzNcEmiUiMOHzqYZ/qNNlmUO7tC8keJNQ7R4Z16k2rKJilMFyJvFa+AOon2k/U+nhOl1CUGnHT74+XG5lyZ4mvsNsfvPppMUZHpHzijetLsG+LogMuWxcNi+fyFUnNpptlqbvb3x03xELtz+Ry1J8XUnQOlssLugiNZx0BD9J9FG06NuipHYfb9X9oIKzNrkaPNbf+mlxc=;5:fnUJphI5bdEp7apdpsSuRLw7EHlwjhsheciZ2bGUUA2eNVmwGD8RdkHEWyN1khBL2Z9qoXNcC7//2N00Z392+14IzoPdqvPCt7M0Douk/zYMmrgWjJhkGGrYZEsEqE2trObFTuJsvloYk66hwowK0g==;24:Mky1gqVCcMwVghdqIGqlIgIDQDwfgcLRyvG5md1REhUrJCmhqP6Yx/96XNbFhXF1rz7s2d5XzHauyJRRZWo9ajRZTV5BajKTk+0yAkvbQTk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;VI1PR0802MB2400;7:GGl1FO72qGVsCKkp/dFBE8kgpgqdHG3l/TSSBusKn00ZNcbOZ6PmDDj87p4RjEBRUEmV0JFoFJDT0+WO16BscpZUzYOP4oW9IALkLY64nqodXPkH4wkuogkaireZ8wjTXsk76KanZyP1Y0DiNlt8Dkf8MkLrAMHlSPonSdygWiz0T7Wkx1uQqWijMBDHWaImcVzpvcZWpyuUq9lhVdvK98AIy4ZkIWkHgpAucFV4QnbZEPIkPurrpB5pBOqfG84dnV2dlD0trqNecgfL2A+Muxl24ReLfWgnWXeyIB40Es0AwBcnWbRtRtv+abBYQE1cvqs3zIKPqjozrCEtyXSq7YbiIJUfk7J+qBZPTcR+OVZ/i6wHNvtYdKyE4KEOPlBYTRUMh2WWrojGkU2cgvSJk1mnOI2SgtODqX+bLjassE/+CVNdPq0SMYOevyI6e5MBNZLLVXdm7RCMxSxpPCVNAjr9/5LS6tbiQE4TzjzsuYfG6QEm0vE/out/59R+pLUrV05nI2mEZetjax7RGDnFQg== X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Feb 2017 11:44:20.6438 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2400 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [resending due to a mail server snafu] On Mon, Feb 13, 2017 at 02:11:37PM +0800, Leo Yan wrote: > Coresight includes debug module and usually the module connects with CPU > debug logic. ARMv8 architecture reference manual (ARMv8-ARM) has defined > the debug registers in the chapter "H9: External Debug Register > Descriptions". This should have been in the binding description also. The layout of the ARM ARM can change over time, so please refer to the full document number, which can be found at the bottom of each page (e.g. ARM DDI 0487A.j). > After enable the debug module we can check CPU state and PC value, etc. > So this is helpful for some CPU lockup bugs, e.g. if one CPU has run > into infinite loop with IRQ disabled. So the CPU cannot switch context > and handle any interrupt, so it cannot handle SMP call for stack dump, > etc. Furthermore, now ARMv8 introduces some other runtime firmwares like > ARM trusted firmware BL31, so sometime CPU hard lock may happen in the > firmware and cannot return back to kernel. I would generally expect that the secure world would lock down debugging, as this poses a security risk. I take it that this is only unlocked on development firmware. Given that cores can be powered down outside of our control, I'm not sure that accesses to these registers is safe in general. > This patch is to enable coresight debug module and register callback > notifier for panic; so when system detect the CPU lockup we can utilize > debug module registers to get to know PC value for all CPUs; so we can > quickly know the hang address for CPUs. > > This is initial driver for coresight debug module and could enhance it > later according to debugging requirement. How does this interact with an external debugger making use of these registers? [...] > +static struct debug_drvdata *debug_drvdata[NR_CPUS]; A per-cpu variable is preferred to an NR_CPUS sized array. > + > +static void debug_os_unlock(struct debug_drvdata *drvdata) > +{ > + /* Unlocks the debug registers */ > + writel_relaxed(0x0, drvdata->base + EDOSLAR); > + isb(); > +} I do not believe this barrier is correct. [...] > +static void debug_read_pcsr(struct debug_drvdata *drvdata) > +{ > + u32 pcsr_hi, pcsr_lo; > + > + CS_UNLOCK(drvdata->base); > + > + debug_os_unlock(drvdata); > + > +#ifdef CONFIG_64BIT > + pcsr_lo = readl_relaxed(drvdata->base + EDPCSR_LO); > + pcsr_hi = readl_relaxed(drvdata->base + EDPCSR_HI); > + > + pr_emerg("CPU[%d]: PSCR=0x%lx\n", drvdata->cpu, > + ((unsigned long)pcsr_hi << 32 | (unsigned long)pcsr_lo)); > +#else > + pcsr_lo = readl_relaxed(drvdata->base + EDPCSR_LO); > + > + pr_emerg("CPU[%d]: PSCR=0x%lx\n", drvdata->cpu, pcsr_lo); > +#endif > + > + CS_LOCK(drvdata->base); > +} Per ARM DDI 0487A.k_iss10775, H9.2.32, "EDPCSR, External Debug Program Counter Sample Register": Implemented only if the OPTIONAL PC Sample-based Profiling Extension is implemented. So even if we have access to an MMIO debug interface, we cannot necessarily acecess this register. [...] > +/* > + * Dump out memory limit information on panic. > + */ > +static int dump_debug(struct notifier_block *self, unsigned long v, void *p) > +{ > + int i; > + > + pr_emerg("Coresight debug module:\n"); > + > + for_each_possible_cpu(i) { > + > + if (!debug_drvdata[i]) > + continue; > + > + debug_read_pcsr(debug_drvdata[i]); > + } Is there no potential for deadlock with a CPU reading its own debug interface registers? [...] > +static struct amba_id debug_ids[] = { > + { /* Debug for Cortex-A53 */ > + .id = 0x000bbd03, > + .mask = 0x000fffff, > + .data = "debug", > + }, > + { 0, 0}, > +}; The DT binding said nothing about Cortex-A53. How variable are the MMIO registers in practice? Do we need to know the particular CPU? Thanks, Mark.