Received: by 2002:ac0:a581:0:0:0:0:0 with SMTP id m1-v6csp1909347imm; Sat, 23 Jun 2018 05:26:03 -0700 (PDT) X-Google-Smtp-Source: ADUXVKIoaqqoCNLSSIugZMmprrxSVQZf+Q+DglRfdVZYhgiOZHMbAhLy0oSAhRn+LHVzzCnn+Dab X-Received: by 2002:a63:7553:: with SMTP id f19-v6mr4811684pgn.314.1529756762980; Sat, 23 Jun 2018 05:26:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1529756762; cv=none; d=google.com; s=arc-20160816; b=c9zZYfwnB/vBM0yqgr4vp6yz8nZSZDPCK5yT21AcoQCzGDgrtJ9VPG8DLDufpi4u9M zOdjfXP+ke+4bg955DGeVKvZfagW6zy2KWL2gK4uJc5hrdSv7k7ZGV2JbUPRz3LEOOaB iXe9S76UKRNDRPFaHN5nUvxFwYloF3KVLkkrIF3fBhU7Qyr/NMorvPnnvWGrSXYGHpsp PxE7b7ySLd1hejruPSRCYU8WwS6Kudti1jWgNdJQBHh2HFEqJnqAJr/f2fwPqeKt7/zA 4gY2ZV9Ze1/ftPwBGrs229ejCpk1AWdEmBq5W42PHwx4DlX72I83CbzvhEhrtNkTXGeh BScA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-disposition :content-transfer-encoding:mime-version:robot-unsubscribe:robot-id :git-commit-id:subject:to:references:in-reply-to:reply-to:cc :message-id:from:date:arc-authentication-results; bh=Gq1+RS6dOt5X0BDTXcaRVpF87MH21AFB5Vvzh7nLRV8=; b=NCd7LR5lG++mQMiHCTlGkv0T6ZET2vIogAEC3QPVudnz8Cl1emJPwW9vupWO1op2o2 nhWcRoY0p3dtpdp++bXnzfKgcrNdNlHBfMCgolG00/luGN+aOdr2ZaUx0zGRJSikHRCs pMKFLKzHRcuob33R5buBM75lm4WzG+CtZIOx8pI4JV+NLR4PbwRONTYk7FZrTKjRucmm +yGFuBNe/KiuZ+KIu0RvOkQ26tYD7c/I3uaH5BZ4RIp/BJBKLayOXrrVK5AQ1wc7vheG IUmY8k6rTyf3t9CqBs2Dl1ED2NepN+We93eRJsXeUz31wgg0jhzFz4VPA7Mm4g43e/yK Lzsg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i16-v6si3156760pgn.252.2018.06.23.05.25.48; Sat, 23 Jun 2018 05:26:02 -0700 (PDT) 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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751949AbeFWMY5 (ORCPT + 99 others); Sat, 23 Jun 2018 08:24:57 -0400 Received: from terminus.zytor.com ([198.137.202.136]:35669 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751622AbeFWMYz (ORCPT ); Sat, 23 Jun 2018 08:24:55 -0400 Received: from terminus.zytor.com (localhost [127.0.0.1]) by terminus.zytor.com (8.15.2/8.15.2) with ESMTPS id w5NCOoJn467133 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Sat, 23 Jun 2018 05:24:50 -0700 Received: (from tipbot@localhost) by terminus.zytor.com (8.15.2/8.15.2/Submit) id w5NCOoqJ467130; Sat, 23 Jun 2018 05:24:50 -0700 Date: Sat, 23 Jun 2018 05:24:50 -0700 X-Authentication-Warning: terminus.zytor.com: tipbot set sender to tipbot@zytor.com using -f From: tip-bot for Reinette Chatre Message-ID: Cc: reinette.chatre@intel.com, linux-kernel@vger.kernel.org, tglx@linutronix.de, mingo@kernel.org, hpa@zytor.com Reply-To: mingo@kernel.org, tglx@linutronix.de, linux-kernel@vger.kernel.org, reinette.chatre@intel.com, hpa@zytor.com In-Reply-To: <9f553faf30866a6317f1aaaa2fe9f92de66a10d2.1529706536.git.reinette.chatre@intel.com> References: <9f553faf30866a6317f1aaaa2fe9f92de66a10d2.1529706536.git.reinette.chatre@intel.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/cache] x86/intel_rdt: Create resctrl debug area Git-Commit-ID: 37707ec6cba6668f22a47016fdee612b0ff62fe9 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, DATE_IN_FUTURE_96_Q autolearn=ham autolearn_force=no version=3.4.1 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on terminus.zytor.com Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 37707ec6cba6668f22a47016fdee612b0ff62fe9 Gitweb: https://git.kernel.org/tip/37707ec6cba6668f22a47016fdee612b0ff62fe9 Author: Reinette Chatre AuthorDate: Fri, 22 Jun 2018 15:42:25 -0700 Committer: Thomas Gleixner CommitDate: Sat, 23 Jun 2018 13:03:51 +0200 x86/intel_rdt: Create resctrl debug area In preparation for support of debugging of RDT sub features the user can now enable a RDT debugfs region. The debug area is always enabled when CONFIG_DEBUG_FS is set as advised in http://lkml.kernel.org/r/20180523080501.GA6822@kroah.com Also from same discussion in above linked email, no error checking on the debugfs creation return value since code should not behave differently when debugging passes or fails. Even on failure the returned value can be passed safely to other debugfs calls. Signed-off-by: Reinette Chatre Signed-off-by: Thomas Gleixner Cc: fenghua.yu@intel.com Cc: tony.luck@intel.com Cc: vikas.shivappa@linux.intel.com Cc: gavin.hindman@intel.com Cc: jithu.joseph@intel.com Cc: dave.hansen@intel.com Cc: hpa@zytor.com Link: https://lkml.kernel.org/r/9f553faf30866a6317f1aaaa2fe9f92de66a10d2.1529706536.git.reinette.chatre@intel.com --- arch/x86/kernel/cpu/intel_rdt.h | 2 ++ arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/arch/x86/kernel/cpu/intel_rdt.h b/arch/x86/kernel/cpu/intel_rdt.h index 2b3f7619be48..a97be4094fa5 100644 --- a/arch/x86/kernel/cpu/intel_rdt.h +++ b/arch/x86/kernel/cpu/intel_rdt.h @@ -432,6 +432,8 @@ extern struct rdt_resource rdt_resources_all[]; extern struct rdtgroup rdtgroup_default; DECLARE_STATIC_KEY_FALSE(rdt_alloc_enable_key); +extern struct dentry *debugfs_resctrl; + enum { RDT_RESOURCE_L3, RDT_RESOURCE_L3DATA, diff --git a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c index 960066249374..bc52c593a87c 100644 --- a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c +++ b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c @@ -22,6 +22,7 @@ #include #include +#include #include #include #include @@ -56,6 +57,8 @@ static struct kernfs_node *kn_mondata; static struct seq_buf last_cmd_status; static char last_cmd_status_buf[512]; +struct dentry *debugfs_resctrl; + void rdt_last_cmd_clear(void) { lockdep_assert_held(&rdtgroup_mutex); @@ -2819,6 +2822,29 @@ int __init rdtgroup_init(void) if (ret) goto cleanup_mountpoint; + /* + * Adding the resctrl debugfs directory here may not be ideal since + * it would let the resctrl debugfs directory appear on the debugfs + * filesystem before the resctrl filesystem is mounted. + * It may also be ok since that would enable debugging of RDT before + * resctrl is mounted. + * The reason why the debugfs directory is created here and not in + * rdt_mount() is because rdt_mount() takes rdtgroup_mutex and + * during the debugfs directory creation also &sb->s_type->i_mutex_key + * (the lockdep class of inode->i_rwsem). Other filesystem + * interactions (eg. SyS_getdents) have the lock ordering: + * &sb->s_type->i_mutex_key --> &mm->mmap_sem + * During mmap(), called with &mm->mmap_sem, the rdtgroup_mutex + * is taken, thus creating dependency: + * &mm->mmap_sem --> rdtgroup_mutex for the latter that can cause + * issues considering the other two lock dependencies. + * By creating the debugfs directory here we avoid a dependency + * that may cause deadlock (even though file operations cannot + * occur until the filesystem is mounted, but I do not know how to + * tell lockdep that). + */ + debugfs_resctrl = debugfs_create_dir("resctrl", NULL); + return 0; cleanup_mountpoint: @@ -2831,6 +2857,7 @@ cleanup_root: void __exit rdtgroup_exit(void) { + debugfs_remove_recursive(debugfs_resctrl); unregister_filesystem(&rdt_fs_type); sysfs_remove_mount_point(fs_kobj, "resctrl"); kernfs_destroy_root(rdt_root);