Received: by 2002:a05:6a10:16a7:0:0:0:0 with SMTP id gp39csp4180260pxb; Tue, 17 Nov 2020 13:33:55 -0800 (PST) X-Google-Smtp-Source: ABdhPJwIusZCqhx8PK49yFlTgPtp1B9ZLNYVcVWvd5NOM8A10GlrZ6VoxmRPP5535KqUL7CAazVT X-Received: by 2002:a17:907:20c3:: with SMTP id qq3mr20466406ejb.274.1605648835511; Tue, 17 Nov 2020 13:33:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1605648835; cv=none; d=google.com; s=arc-20160816; b=R1WOL7It3XOBI3w1e+jKYhR7IY28SjEMP1l0xUne11I3NlQPSI7h4bcvyQu6anBWjT 3QNioECJWtmMiESduCjXdBJ2hBr5rOoO5aUUMtFam41/JyI34LH5GQ48GiXhAyrDwqZH msizRvnSV5OvRcoi2V6wmwAFayDNpptBri4vcvx+gIp18Y2LkKRDyRfPOfv5eEO31TS7 lOHtBIJHnvC9fYTVQx/DMzGDsgL4kqxkmoTSj7msgsngi/eSPF9Ew1ElgDpMz7mZdfHb gJo58mTUIebeLMiVPL6af5OPV2mLDLX2AyzVF6hjxlnpo2wan/U54t+PLMhS1Nd1GGu+ Ve/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:ironport-sdr:ironport-sdr; bh=Xu6gy+snMhduqXyTMn+HWu283pfzr9iMvJAqsh7Rejs=; b=iwYl+5HUlmCqiggxuZGDFidi6g1Lu3dG04g5GTVKnm61OGu8BaSEvs85EdecFFsw35 QtzMSmymw58q7FOtgV1OyoUAC0BX0tsYsBUOU8WfMnG2EobjjyJfZcU9DsY4+LmKc2rh MHRhuDiK7hdDYn8eb1v8ThVmVGFXxa4V45yiQo/WO7eflvIiKhO2skYW4X1B5C17rn2J qowd7brXTxS0/75i6SBOuu5f2I8xpFD9vcJqf3qP0yxAn/zbC6h/GvUzObwIQ1rvEgIw bPIQouBIcGJ84TiJHznixjvLn4dflbdm99V6qaqyO8KnSZrX0d/7EHGX4qDiXMVydhLP bSlQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d8si14998112edm.404.2020.11.17.13.33.17; Tue, 17 Nov 2020 13:33:55 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727386AbgKQV30 (ORCPT + 99 others); Tue, 17 Nov 2020 16:29:26 -0500 Received: from mga06.intel.com ([134.134.136.31]:24731 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725779AbgKQV30 (ORCPT ); Tue, 17 Nov 2020 16:29:26 -0500 IronPort-SDR: SVcTRADv1jDA2qoJNpBNT6CaAUAoNzPa8UgVak9ErXD5gMkCrwEsIseQ1wbRD/mYzPdeB33BUs 1cvTSpFjPfEQ== X-IronPort-AV: E=McAfee;i="6000,8403,9808"; a="232630721" X-IronPort-AV: E=Sophos;i="5.77,486,1596524400"; d="scan'208";a="232630721" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2020 13:29:23 -0800 IronPort-SDR: TJ622ACXLdJWhNiKnnEsJ7IV9zVGj3dQ/KaLheykUX6+SVxN44Y5znYezx9T1jS0Qr7hSEGZAA ZxQl4qZhdmYA== X-IronPort-AV: E=Sophos;i="5.77,486,1596524400"; d="scan'208";a="430594946" Received: from rchatre-mobl3.amr.corp.intel.com (HELO [10.212.24.101]) ([10.212.24.101]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Nov 2020 13:29:22 -0800 Subject: Re: [PATCH 04/24] x86/resctrl: Add a separate schema list for resctrl To: James Morse , x86@kernel.org, linux-kernel@vger.kernel.org Cc: Fenghua Yu , Thomas Gleixner , Ingo Molnar , Borislav Petkov , shameerali.kolothum.thodi@huawei.com, Jamie Iles , D Scott Phillips OS References: <20201030161120.227225-1-james.morse@arm.com> <20201030161120.227225-5-james.morse@arm.com> From: Reinette Chatre Message-ID: <8c95f0d5-c543-a5bf-b3b6-df5c7a6f6c3c@intel.com> Date: Tue, 17 Nov 2020 13:29:21 -0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.4.3 MIME-Version: 1.0 In-Reply-To: <20201030161120.227225-5-james.morse@arm.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi James, On 10/30/2020 9:11 AM, James Morse wrote: > To support multiple architectures, the resctrl code needs to be split > into a 'fs' specific part in core code, and an arch-specific backend. > > It should be difficult for the arch-specific backends to diverge, > supporting slightly different ABIs for user-space. For example, > generating, parsing and validating the schema configuration values > should be done in what becomes the core code to prevent divergence. > Today, the schema emerge from which entries in the rdt_resources_all > array the arch code has chosen to enable. > > Start by creating a struct resctrl_schema, which will eventually hold > the name and pending configuration values for resctrl. Looking ahead I am not able to identify the "pending configuration values" that will eventually be held in resctrl_schema. With entire series applied there is the name, type, num_closid, and pointer to the resource. > > Signed-off-by: James Morse > --- > arch/x86/kernel/cpu/resctrl/internal.h | 1 + > arch/x86/kernel/cpu/resctrl/rdtgroup.c | 43 +++++++++++++++++++++++++- > include/linux/resctrl.h | 9 ++++++ > 3 files changed, 52 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h > index f7aab9245259..682e84aebd14 100644 > --- a/arch/x86/kernel/cpu/resctrl/internal.h > +++ b/arch/x86/kernel/cpu/resctrl/internal.h > @@ -106,6 +106,7 @@ extern unsigned int resctrl_cqm_threshold; > extern bool rdt_alloc_capable; > extern bool rdt_mon_capable; > extern unsigned int rdt_mon_features; > +extern struct list_head resctrl_all_schema; Considering the relationship with rdt_resources_all it seems more consistent to call it resctrl_schema_all? > > enum rdt_group_type { > RDTCTRL_GROUP = 0, > diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c > index df10135f021e..f79a5e548138 100644 > --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c > +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c > @@ -39,6 +39,9 @@ static struct kernfs_root *rdt_root; > struct rdtgroup rdtgroup_default; > LIST_HEAD(rdt_all_groups); > > +/* list of entries for the schemata file */ > +LIST_HEAD(resctrl_all_schema); > + > /* Kernel fs node for "info" directory under root */ > static struct kernfs_node *kn_info; > > @@ -2117,6 +2120,35 @@ static int rdt_enable_ctx(struct rdt_fs_context *ctx) > return ret; > } > > +static int create_schemata_list(void) > +{ Could you please use the new namespace (schema_list_) as a prefix instead of suffix? That will make it easier to search. > + struct resctrl_schema *s; > + struct rdt_resource *r; > + > + for_each_alloc_enabled_rdt_resource(r) { > + s = kzalloc(sizeof(*s), GFP_KERNEL); > + if (!s) > + return -ENOMEM; > + > + s->res = r; > + > + INIT_LIST_HEAD(&s->list); > + list_add(&s->list, &resctrl_all_schema); > + } > + > + return 0; > +} > + > +static void destroy_schemata_list(void) > +{ > + struct resctrl_schema *s, *tmp; > + > + list_for_each_entry_safe(s, tmp, &resctrl_all_schema, list) { > + list_del(&s->list); > + kfree(s); > + } > +} > + > static int rdt_get_tree(struct fs_context *fc) > { > struct rdt_fs_context *ctx = rdt_fc2context(fc); ... > diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h > index dfb0f32b73a1..de6cbc725753 100644 > --- a/include/linux/resctrl.h > +++ b/include/linux/resctrl.h > @@ -163,6 +163,15 @@ struct rdt_resource { > > }; > > +/** Missing a kernel-doc description here > + * @list: Member of resctrl's schema list > + * @res: The rdt_resource for this entry > + */ > +struct resctrl_schema { > + struct list_head list; > + struct rdt_resource *res; > +}; > + > /* The number of closid supported by this resource regardless of CDP */ > u32 resctrl_arch_get_num_closid(struct rdt_resource *r); > > Reinette