From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752641AbcB2Vkv (ORCPT ); Mon, 29 Feb 2016 16:40:51 -0500 Received: from mail-db3on0091.outbound.protection.outlook.com ([157.55.234.91]:23008 "EHLO emea01-db3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750780AbcB2Vks (ORCPT ); Mon, 29 Feb 2016 16:40:48 -0500 Authentication-Results: spf=fail (sender IP is 12.216.194.146) smtp.mailfrom=ezchip.com; ezchip.com; dkim=none (message not signed) header.d=none;ezchip.com; dmarc=none action=none header.from=ezchip.com; From: Chris Metcalf To: Russell King , "Thomas Gleixner Aaron Tomlin" , Ingo Molnar , Andrew Morton , CC: Chris Metcalf Subject: [PATCH 2/4] nmi_backtrace: generate one-line reports for idle cpus Date: Mon, 29 Feb 2016 16:40:22 -0500 Message-ID: <1456782024-7122-3-git-send-email-cmetcalf@ezchip.com> X-Mailer: git-send-email 2.1.2 In-Reply-To: <1456782024-7122-1-git-send-email-cmetcalf@ezchip.com> References: <1456782024-7122-1-git-send-email-cmetcalf@ezchip.com> X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CPI:12.216.194.146;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(2980300002)(1110001)(1109001)(339900001)(199003)(189002)(106466001)(19580395003)(5003940100001)(19580405001)(105606002)(229853001)(33646002)(107886002)(189998001)(5001970100001)(87936001)(85426001)(81156008)(50226001)(5001770100001)(11100500001)(2906002)(586003)(4326007)(4001430100002)(36756003)(2950100001)(50466002)(1220700001)(5008740100001)(104016004)(48376002)(42186005)(76176999)(92566002)(1096002)(6806005)(47776003)(50986999)(42882005);DIR:OUT;SFP:1101;SCL:1;SRVR:DB3PR05MB425;H:lab-41.internal.tilera.com;FPR:;SPF:Fail;MLV:sfv;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;DB3FFO11FD024;1:3I92HgI1r5ppC79Yh1LP+yLlxJPkbe4RnxKYWYZ0aoNfJuYbDUWKGpuSfeH3IBYPFSesLN51Nx8ZcqZtEYdujKDkt99ZZ0I25Bo9Biffs7RbBAtlYdAUn/fQG8X1ABGVkyTIEfixD4mx+Y1VtyInrMCAGJVsNaQzVjNQhxRFaKgQmXZOhteVxY2LGx+Wg+wdEO2uXoUlPYgyLELTr5dJco2wIi2YFvBKeQ00RG1EJ1hV6lsdablDNWsJn86aTB4REU/kPy8Ro5IQx02NDdHHYWPdN36pSa80/1YSz3OTpeSSYTOj2myQH4Fo2M8l10/HajJGLUaPhvNvtMjoW9UTYXyTaHejW6e1nXC1lahwa4AeKeEbGzAxGvFGujeLlQXab1RKyEYJ+oj77mFSNv3Q5rR9c1ny0/k8IoeImEFx/fMi8VCfqqUc5DrnKNA+V0LF19OyG6UtXaS5+Ql4FZfcfUsSdLuyjdZIHdLBUSdv5TTkopibp1kskb62s3uyE0BKIM8wFcb9WazqcpvysfX7MA== MIME-Version: 1.0 Content-Type: text/plain X-Microsoft-Exchange-Diagnostics: 1;DB3PR05MB425;2:QVwFFdV8DbZV8cAU7Txjizu2+/kNClfxSdlvKm6OOAaxU5qsa0TMEerznP1emcI74ifRYZdPxF8kBoW9PxycoYqPnTBUprY8NqeZepX269Rcvfgcr82JFxDtisny3iJl8oFkKz4ipaOMqZQiw4uTcQ==;3:gS1T3tKSAESI2XaZGjML4iuDx0jiV7IUiMmaZ+WnevWA6GtXJKjrsMO0jVyeWZbayI8xppcg56ycUqKHcauw5Yrj1RY7NLzUZJAlzRmKA9PKYmh+gp4JoG3ysKYJ2Wq31/sezEKMZGP7fVxruCu0+0J1bbJc96Hy+ofgmxuuQNQ=;25:Jcv44u0JCndtJGlMcjSDNjAvj8N1ju4kOitrB/GkXYXUvCGmzP9y5fnrdDEgAbzvm9Qt7EXFRmlrYIy3BKH0U8wZAOr2siXROFrUNNsW5GGcVAQjyfn2VjXvRhdvDSrYIkj/EKM2ytrtnFUj006zEKSe+EkBy0nCry1IVpkmb0UFWRDH0li0VlnvOxNqL70kRprdv9g/713ju1K7fKQ4n/6MnXZ6puPlO2YlWplJl8GGGcpGg539tPa4/C6nEzTOOK/Hvxf0FggE29Bxyr+k3Efm/A/aeefuyeycmqTHxDONa1TBy4BJbaFzgVwJHk2PUNiyg9ufh4w8ArV9Tqo5TwEhj7++W8OhSl7BzCnpA1w= X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB3PR05MB425; X-MS-Office365-Filtering-Correlation-Id: 0cc7cba1-5664-4ae8-5127-08d34150f96c X-MLNXRule-EZCH-Linux: Rule triggered X-MLNXRule-Acc-Dom-4: Rule triggered X-Microsoft-Exchange-Diagnostics: 1;DB3PR05MB425;20:FJznBsCDA3mLmf+MO4BnKht9tQoBZCvwstzsubr1boR6WveCcr6LYZRZEHFemhxVU4nWrsViAHZUOyBB3TkOvr+m8wnWo1Rb5gk35e1I30i1zFHAiXKy9zqDmzA4+ZB/jua2vT8FY5f3xJ5OdtwvnHBaLmkd/htzd/Jr7/KAeAk5c3yFLVFzbnPSNjC2nPOevp3SPyCrKoHaa6BQIM7dsNAGDaIUD6LnikppVtsjoCs3osYFKiRbmnp6nIB/dTSE/iUVNQUOgBlD1fePWC+QF8do/nNLzaP9vMBu5KfoO9SY4P9nVsu6efDlZvgr7dmQTp3ddeUGOEV4kVmOyZ7Q8LtvUia+8oILgpFJhruPEjVpo7bQgQaNWke1HXirw/Nw+ZNo/ltvP3aHVQZwd3L6w0Vsa15wEc3ESAUcp74gEWcpsA2UqtUlvEX+U+kQ0EW1mreZpqQjiJ2zDkN+UQMJt9+XdYmAm+bwm12zft9ttUIEJGJ5ff4vVpPGGDCQmeJQ/yK93GX7tlU2jdlQNqA+PMHT+c66hupQ+djTM7SDiYARvHtRVNuIM78HKrzSeSYz8KtuwwOh/AUFTwbs1g6m1GIN0EYjz4YA6H+RqNa6M5Y= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(2401047)(13017025)(13023025)(5005006)(8121501046)(13015025)(13018025)(13024025)(3002001)(10201501046);SRVR:DB3PR05MB425;BCL:0;PCL:0;RULEID:;SRVR:DB3PR05MB425; X-Microsoft-Exchange-Diagnostics: 1;DB3PR05MB425;4:f7KgYU4ZArc9s4JMuoN/ZQIonPPr/se1dBte2QWMYhqci8fxu0cPzi3NmyMp536+sv+GD/fCMyzsEttD5j/I+n6NLOw95Kbd5Flkb6mRrwGiCBNNP818m9BnDnR703lVLSSKuU+tPXVwRUtKhYpXR9hhSS+8DRlw8Y57gmDbBcYPr8MxzeTPYmoNUuR+ZQ71gl8sKGIXPpNVEdaosEvDOMi36NPLhW7Kg2QzSWeYzxchxqVtTZbEQmIZ3X6dyz3o5SoaXlxKscfegmdHJqBl3uC+jj/HBz2ewXYsxpxKINNBsL85jCq67p44QXU7m4s4PCE56UJDfQm58BcGKIC6Vo6A7MqbpOGzyKjcdTxZ//A0FdiSYbcDOdwLFhQH62JJbDFR7sfaH7Axg4dIdj2phw7XZfuyY/JhCYsL9lP31h8+vL8sMFMUqZysJa5SjT5psdSy/S8gKe2k6veGWhnImQ== X-Forefront-PRVS: 0867F4F1AA X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DB3PR05MB425;23:lpdSpIcLGox5ZkdhmDCL3gplRXSrEZ66VMP2jUY5xD?= =?us-ascii?Q?kU3n3fsUSLRp53mBTUcatb2HBOsEmbA/DaHqqxuYP5WQ2oSim5gK5BDGTgn1?= =?us-ascii?Q?Do/t5TdEaAiJf/8imXSxsISwt6MazvJn/it18q65s9ePnYY7fzPhUIjBfBaK?= =?us-ascii?Q?B2YsUzimeSIFMfKRgBylTnME83vURnRS+ifMEahf4o2ybwVrBSAbRjIwGi4a?= =?us-ascii?Q?7hBDa3Bshl473tAQLEnVpmMBPivz3AK7Ifmr4Yc29cpMVuFGpsJflJ0W0+gW?= =?us-ascii?Q?BgnWKAkhdnjl+ZL0/oThQCn01FPPFRJ5rlIkk+xi/jPknr8DCoqTERmrhGRy?= =?us-ascii?Q?tagfWeK1iROH6allW5veTcheUHbthI0xOTCOLAorWouPfP7CRAH40O+Ylzww?= =?us-ascii?Q?TaYiEIk2CMONRQWtnOdq/k/yQrNnTJLRjewTeg1OHlPDHPwJf6X16lS+cbRF?= =?us-ascii?Q?JWceoxqMR7k+lsu2OEzLnSkxDnx2/3GbIKNlnCiqZMKNc+DyFxC3ddejiEOp?= =?us-ascii?Q?yCP1UWsO0IgIY/GSYoRFll1LvUeFEFLc7wxCbQSjGu1BKTHDfPxAk0aEIAKn?= =?us-ascii?Q?/6l+LcMFb/J1yIVg+QuUwUy+a9yPS2Wuvik50eo/SYipfO58M7j8NUwzSRQ7?= =?us-ascii?Q?PVydOHahg7uowP1XA4wakW17pVmYpSm5ixfFZI2oDn6RYTi3MSn6Ynvpnthi?= =?us-ascii?Q?itxI21NVa4pdAhYmwlST7QBW8VuAR13bB0kOl7u93KtiuHLJ8WRdL+XRI9o7?= =?us-ascii?Q?aGx5rzl4ENaLu2jmD3lLp+NncfspTjAYxdXgivzy1KbyVYKBu4hpEq/e+8OQ?= =?us-ascii?Q?g8uIAQap9aTaEgUsDaSzQvWPVAf/7cvCOzGp/Er34dFp2E6efnqhJ5hYnQ6C?= =?us-ascii?Q?cvP7TzeR1JS2Zo8YwAMFZtrMGshfe30ELYMNFvHyJPoM98tYiK5ngRLtdHxA?= =?us-ascii?Q?wN9e9O1lIy+fnocvwIKOWklQgNjUq0RJbXUJdsnRMRv6fLk7HSvb2Idu8wa8?= =?us-ascii?Q?VzJweGkWdqMLLFJRI9fEymni4Dnxoqo97ULOTDdJTyOUDEpR0mgwxdhQcIjn?= =?us-ascii?Q?xWGDrcHfSrHlDVzfHW3vowclGjYEgnX7Tv72LPP5LWaPX7jSOK0CyGvlkvfE?= =?us-ascii?Q?FL+SXrRMc=3D?= X-Microsoft-Exchange-Diagnostics: 1;DB3PR05MB425;5:2TJh/l+JMyNDKPXuFccYq/9LSMTwlVqdIF6M9mRvZxepEBv9y8yYsrJ78h4A2seTPklkM2/pzan5XDJ0gmS8wdEoj5OVccZi0M9e947MF4iTAYcRR76vyHpretvtUD2JxNrl2ev7gTVqnZb6AZ1Q/g==;24:MHiMdu6niWapNnQL9O1UZdzq/nn1FtataLeUmfhCB9uJwZZAoN52EV0JNkDA1A0ffK7ZJBCAPOllVWVTBs/tG7aLulwUt5Oj4IRchllFVEo= X-OriginatorOrg: ezchip.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Feb 2016 21:40:42.3910 (UTC) X-MS-Exchange-CrossTenant-Id: a652971c-7d2e-4d9b-a6a4-d149256f461b X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=a652971c-7d2e-4d9b-a6a4-d149256f461b;Ip=[12.216.194.146];Helo=[lab-41.internal.tilera.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR05MB425 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When doing an nmi backtrace of many cores, and most of them are idle, the output is a little overwhelming and very uninformative. Suppress messages for cpus that are idling when they are interrupted and just emit one line, "NMI backtrace for N skipped: idle". Signed-off-by: Chris Metcalf --- lib/nmi_backtrace.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/lib/nmi_backtrace.c b/lib/nmi_backtrace.c index db63ac75eba0..f878efc9e851 100644 --- a/lib/nmi_backtrace.c +++ b/lib/nmi_backtrace.c @@ -142,6 +142,15 @@ static int nmi_vprintk(const char *fmt, va_list args) return seq_buf_used(&s->seq) - len; } +static bool idling(void) +{ + if (!is_idle_task(current)) + return false; + + /* Account for nmi_enter() having been called once. */ + return hardirq_count() == HARDIRQ_OFFSET && !in_softirq(); +} + bool nmi_cpu_backtrace(struct pt_regs *regs) { int cpu = smp_processor_id(); @@ -151,11 +160,16 @@ bool nmi_cpu_backtrace(struct pt_regs *regs) /* Replace printk to write into the NMI seq */ this_cpu_write(printk_func, nmi_vprintk); - pr_warn("NMI backtrace for cpu %d\n", cpu); - if (regs) - show_regs(regs); - else - dump_stack(); + if (idling()) { + pr_warn("NMI backtrace for cpu %d skipped: idle\n", + cpu); + } else { + pr_warn("NMI backtrace for cpu %d\n", cpu); + if (regs) + show_regs(regs); + else + dump_stack(); + } this_cpu_write(printk_func, printk_func_save); cpumask_clear_cpu(cpu, to_cpumask(backtrace_mask)); -- 2.1.2