Received: by 10.192.165.148 with SMTP id m20csp1032560imm; Wed, 25 Apr 2018 11:27:10 -0700 (PDT) X-Google-Smtp-Source: AB8JxZqssUlnLaojHH3CMxkyZf0aU/9HuCWCy0SmR+Zsh+hzmJMd0fpnkoaMpKYuk63EWPqUtcXl X-Received: by 10.98.231.16 with SMTP id s16mr3721902pfh.227.1524680830304; Wed, 25 Apr 2018 11:27:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524680830; cv=none; d=google.com; s=arc-20160816; b=M9EJ9ay2YvVbHj1YqfSDVDc23PzQvqsbit8L/MI3kti9V1X3vfnXYuYA3KhONQzT3g CZqB6diPJacu2tZw9fBTe9bDILnEGj4sUcEHjkMk7Kz28rpcZgon4oWEGgf6lZbuPe1i aKY+zMLgIZD4Fe9hsmqFcvAFTN0d9oH+IeCuKGFVXVCNEU/DX56Z5nCk7bHmikRUzIp7 RmPfQilh5cK7s/jErJbFBX2cTIr4YO6NKxLTfPzfvqlNlRc2eP6Zo0hHPugJDSQvQRjk NjSq2cHL3R3AMY52kbFa1LWbiGGzywNdLBGaFCnBmU7DbbMoBfop8pSLZyr81TYtibt6 NUCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=4Qc5iOA7SXX7iSIMc4HbddiycG4trnjYZKG4Y3qU3zs=; b=P4v+HsQwAdeYZQIyB01r0vBQh4HaWopm7W/d6tZk2K/mn32VC8c4pvBI4zB1vdcnfQ mVRfLX9kP1TBxYipkgF6iV9DaWRzdgQfdqwr6bZNWJ5DVT7FseSZLSX1jsaYJAhJoqzS eLcV/oiIBtPSxmMt36cMZ/06UmxvOMBygmOIU9LJiPaOPy3rIb2A75zchp0Psy0yghXN pBtK/pwkTlZJinlBA6I92a2n01z+STAdx9fuAdmBtbpNppxGgGVHe2PrOi1hiOMl8eEY EzdD43S9mQSySz2+qvmJJaiwWbWbIDtCE5DD5jm1Qpj9aNn3YAETFDXwMNplOspQxHpZ m8pg== 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 x25si13356346pfj.347.2018.04.25.11.26.55; Wed, 25 Apr 2018 11:27:10 -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 S932199AbeDYSMo (ORCPT + 99 others); Wed, 25 Apr 2018 14:12:44 -0400 Received: from mga02.intel.com ([134.134.136.20]:41709 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755898AbeDYSMa (ORCPT ); Wed, 25 Apr 2018 14:12:30 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 25 Apr 2018 11:12:30 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,327,1520924400"; d="scan'208";a="35243621" Received: from rchatre-s.jf.intel.com ([10.54.70.76]) by fmsmga008.fm.intel.com with ESMTP; 25 Apr 2018 11:12:29 -0700 From: Reinette Chatre To: tglx@linutronix.de, fenghua.yu@intel.com, tony.luck@intel.com, vikas.shivappa@linux.intel.com Cc: gavin.hindman@intel.com, jithu.joseph@intel.com, dave.hansen@intel.com, mingo@redhat.com, hpa@zytor.com, x86@kernel.org, linux-kernel@vger.kernel.org, Reinette Chatre Subject: [PATCH V3 04/39] x86/intel_rdt: Introduce resource group's mode resctrl file Date: Wed, 25 Apr 2018 03:09:40 -0700 Message-Id: <94b17d4be64092ef8ed4cf48df09a47d16e7c044.1524649902.git.reinette.chatre@intel.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A new resctrl file "mode" associated with each resource group is introduced. This file will display the resource group's current mode and an administrator can also use it to modify the resource group's mode. Only shareable mode is currently supported. Signed-off-by: Reinette Chatre fixme: merge with Introduce new mode file --- arch/x86/kernel/cpu/intel_rdt_rdtgroup.c | 83 ++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) diff --git a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c index 4683fe2b2118..bc5f98154177 100644 --- a/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c +++ b/arch/x86/kernel/cpu/intel_rdt_rdtgroup.c @@ -147,6 +147,24 @@ enum rdtgrp_mode rdtgroup_mode_by_closid(int closid) return RDT_NUM_MODES; } +static const char * const rdt_mode_str[] = { + [RDT_MODE_SHAREABLE] = "shareable", +}; + +/** + * rdtgroup_mode_str - Return the string representation of mode + * @mode: the resource group mode as &enum rdtgroup_mode + * + * Return: string representation of valid mode, "unknown" otherwise + */ +static const char *rdtgroup_mode_str(enum rdtgrp_mode mode) +{ + if (mode < RDT_MODE_SHAREABLE || mode >= RDT_NUM_MODES) + return "unknown"; + + return rdt_mode_str[mode]; +} + /* set uid and gid of rdtgroup dirs and files to that of the creator */ static int rdtgroup_kn_set_ugid(struct kernfs_node *kn) { @@ -761,6 +779,63 @@ static ssize_t max_threshold_occ_write(struct kernfs_open_file *of, return nbytes; } +/* + * rdtgroup_mode_show - Display mode of this resource group + */ +static int rdtgroup_mode_show(struct kernfs_open_file *of, + struct seq_file *s, void *v) +{ + struct rdtgroup *rdtgrp; + + rdtgrp = rdtgroup_kn_lock_live(of->kn); + if (!rdtgrp) { + rdtgroup_kn_unlock(of->kn); + return -ENOENT; + } + + seq_printf(s, "%s\n", rdtgroup_mode_str(rdtgrp->mode)); + + rdtgroup_kn_unlock(of->kn); + return 0; +} + +static ssize_t rdtgroup_mode_write(struct kernfs_open_file *of, + char *buf, size_t nbytes, loff_t off) +{ + struct rdtgroup *rdtgrp; + enum rdtgrp_mode mode; + int ret = 0; + + /* Valid input requires a trailing newline */ + if (nbytes == 0 || buf[nbytes - 1] != '\n') + return -EINVAL; + buf[nbytes - 1] = '\0'; + + rdtgrp = rdtgroup_kn_lock_live(of->kn); + if (!rdtgrp) { + rdtgroup_kn_unlock(of->kn); + return -ENOENT; + } + + rdt_last_cmd_clear(); + + mode = rdtgrp->mode; + + if ((!strcmp(buf, "shareable") && mode == RDT_MODE_SHAREABLE)) + goto out; + + if (!strcmp(buf, "shareable")) { + rdtgrp->mode = RDT_MODE_SHAREABLE; + } else { + rdt_last_cmd_printf("unknown/unsupported mode\n"); + ret = -EINVAL; + } + +out: + rdtgroup_kn_unlock(of->kn); + return ret ?: nbytes; +} + /* rdtgroup information files for one cache resource. */ static struct rftype res_common_files[] = { { @@ -874,6 +949,14 @@ static struct rftype res_common_files[] = { .seq_show = rdtgroup_schemata_show, .fflags = RF_CTRL_BASE, }, + { + .name = "mode", + .mode = 0644, + .kf_ops = &rdtgroup_kf_single_ops, + .write = rdtgroup_mode_write, + .seq_show = rdtgroup_mode_show, + .fflags = RF_CTRL_BASE, + }, }; static int rdtgroup_add_files(struct kernfs_node *kn, unsigned long fflags) -- 2.13.6