Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp8018393imu; Thu, 15 Nov 2018 05:23:55 -0800 (PST) X-Google-Smtp-Source: AJdET5cIjYq6ZcGAbM4g4aFKHrBDThRHYJke5MrXjq1Alr/FvKH3UM4Ojfp5rOZpoi66nLPw5F08 X-Received: by 2002:a17:902:9045:: with SMTP id w5mr2627199plz.32.1542288235031; Thu, 15 Nov 2018 05:23:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542288235; cv=none; d=google.com; s=arc-20160816; b=Yu+O3NzxlDDCixm+ZR62dPcofJraecdZpg/Uk1C+1FgOhMgi7R+nYpOmVRnBycWdy6 w1n1y6VUnEltkxTR3lNey7cNpioeJxSAt038vPjywFcc4CmerpzGvY5mdVgjbw27I8/o i/Fr6D5Lvi3+B8y/RBS5p+sXFC19CgZh8aMuR9IXX91/cUtjy5q6OuBu8e+bRyQ4LydY 5eU4s+tFMlCWJM2zIskZ+tHO6qn/rEeqqfFFdqgjhbj6od8kv0glGCRyfB5+6HyLb3eq 7Lh6fui6KQ8L7xgd74VCFc9SH5hjiH4U9IQBnXjuSrLOdwD2dSvzbvknhzC40RI6k+iU 3wSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:subject:message-id:date:from :mime-version:dkim-signature; bh=6bVqNIwIjcqyAYRf50vXBp4OyR+LNfvyTizOI66xHF4=; b=04cC+RlNIdFQnAHoZyAbL3e8IjozKeWz5v+9tUyL78kWmwkWUux8mZ6wSqKXoD6zix uVjvqfMA4TBjWiQMiTrE3e6QW/RbygjZuqLrIKDzAxxornT525LPz/v5c6yOe66snO3E LnV/Xg1OAWo+s8aG7l2UTLVF3pbvtFBIuPGcVlC+H3ZGvkFNgRY+a7/aUlhV9f4J010i s6RMfXmnLBplwTl/fihJzcUIvqnFshbs70UWJIk4wNiCM3oBErHqsmDh7EJx8Veckono N9v+DLv1oQmSSbYwvxOhwCNirsQf92RxTMagBliUvgM8ypsi94IAwz4YfTPCBYTgoiZK tz2w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=puOTXfiI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q76-v6si21435370pfa.211.2018.11.15.05.23.40; Thu, 15 Nov 2018 05:23:54 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=puOTXfiI; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388294AbeKOXan (ORCPT + 99 others); Thu, 15 Nov 2018 18:30:43 -0500 Received: from mail-vs1-f65.google.com ([209.85.217.65]:35834 "EHLO mail-vs1-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728931AbeKOXan (ORCPT ); Thu, 15 Nov 2018 18:30:43 -0500 Received: by mail-vs1-f65.google.com with SMTP id e7so11657901vsc.2 for ; Thu, 15 Nov 2018 05:22:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=6bVqNIwIjcqyAYRf50vXBp4OyR+LNfvyTizOI66xHF4=; b=puOTXfiI2DGAhVMtVCBW39dXRZgdGgPodyyc5puFvwz2y4L/PZdHOOLAOqBtXbJgXI MRoCoZKeU0CfK372huZyBNX91lobd2NdkX1hhvHFztRCPHvpGw3Si6zLibMVySCoW2LD KMVNnEza2Xpgm+HfMMSkw33ZVve4/bYV7USq1tDaZkxDP4DwiX+5K4FGPpAjWgFDOmm+ gpBIItpEsSNDfiMteIogwxn5fF3dOQv/TmJT5/BhUMDsrPCSeokewzqA8lcR7BkDVC/g xhMyMCo80qDZyuPCfgvKJAmuFjLvcvlyiZc1IOIXaWKGvn/zOQf+JSidpdkFgACq8BJA BUSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=6bVqNIwIjcqyAYRf50vXBp4OyR+LNfvyTizOI66xHF4=; b=i77WHGhpwUIc920PpIEKsZBnmzLpPr6LXQ+ttIvL6U42m/QeN4mhWPf9xSIdEvM20m zQZHDAV54rlJbYJhqeGENfYuFv0L/txtisORpqa+66cJ5mZQw7Ij46z/RYfMBTbNnEz7 m6Cpq87WY6/LA14GRGfi86E39PMMmEZX3094sH6YChX4yMyM2zjv5i+S3ItEV6DNE+zC 5b3UeQeGVvgdPC+6vWfyY2gKySfkkpjTyvXEz7otNUPDp811lMHHXex1FX6ZmFt9XvDE zMVk5/uOK3JO+1CtVhKgtuUdgJcPsKuD6WoxI2lPfPmiISVeirlyxjDSo0i9N5ztYWHl QM/Q== X-Gm-Message-State: AGRZ1gLxxizHAtlvqRxTQlSCezO7wl7ITX9LgzJ6A8qRIYUuNDSNa6vM 4LazdXffUjhvRZN7LDav4NQva+O9EdoSj+hzRm3KhP7v X-Received: by 2002:a67:4b0f:: with SMTP id y15mr2661713vsa.50.1542288171324; Thu, 15 Nov 2018 05:22:51 -0800 (PST) MIME-Version: 1.0 From: Pintu Agarwal Date: Thu, 15 Nov 2018 18:52:39 +0530 Message-ID: Subject: [ARM64] Printing IRQ stack usage information To: open list , linux-arm-kernel@lists.infradead.org, Russell King - ARM Linux , kernelnewbies@kernelnewbies.org, Pintu Kumar , jungseoklee85@gmail.com, catalin.marinas@arm.com, will.deacon@arm.com, takahiro.akashi@linaro.org, mark.rutland@arm.com, barami97@gmail.com Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi All, I have a requirement in printing irq stack usage information for each cpu. I am using the following: Linux Kernel: 4.9.x Board: hikey620 (arm64, armv8 with 8 cores) Platform: Ubuntu 14 debian As a vague idea, I tried to implement like this: ------------------------------------------------------------- static int dump_irq_stack_info(void) { int cpu, actual; unsigned long irq_stack_ptr; //unsigned long sp, sp1; unsigned long stack_start; unsigned long used; actual = IRQ_STACK_SIZE; used = 0; pr_info("CPU UNUSED-STACK ACTUAL-STACK\n"); //seq_printf(m, "CPU UNUSED-STACK ACTUAL-STACK\n"); for_each_present_cpu(cpu) { irq_stack_ptr = IRQ_STACK_PTR(cpu); //sp1 = current_stack_pointer; //sp = IRQ_STACK_TO_TASK_STACK(irq_stack_ptr); stack_start = (unsigned long)per_cpu(irq_stack, cpu); used = irq_stack_ptr - stack_start; pr_info("%2d %10lu %10d\n", cpu, used, actual); //seq_printf(m, "%2d %10lu %10d\n", cpu, used, actual); } return 0; } ------------------------------------------------------------- Currently, when I tested this (as a proc interface), I got the below output: CPU UNUSED-STACK ACTUAL-STACK 0 16368 16384 1 16368 16384 2 16368 16384 3 16368 16384 4 16368 16384 5 16368 16384 6 16368 16384 7 16368 16384 ------------------------------------------------------------- But, I have some doubts: 1) I am not sure if my implementation is in right direction, or the logic is totally wrong. 2) Is there better way to perform the similar objective? 3) How should I test it to get the different usage values for unused stack ? Can I get these values by implementing a sample interrupt handler, and printing information from there? If this works, then I want to use it as part of dump_backtrace() function. If anybody have done a similar thing in past, or have some ideas to share, please help me. Note: This is required only for our internal debugging purpose. Regards, Pintu