Received: by 2002:a05:6358:c692:b0:131:369:b2a3 with SMTP id fe18csp1500239rwb; Fri, 28 Jul 2023 10:13:18 -0700 (PDT) X-Google-Smtp-Source: APBJJlF9wF04DMBWNJ1b6keY0UDlJNzWYbYC05rgfjH4Z8hSJeliQJdDt6+edJcf12rSQMoBsBxv X-Received: by 2002:a17:90b:1c87:b0:268:abf:6431 with SMTP id oo7-20020a17090b1c8700b002680abf6431mr2680777pjb.24.1690564398090; Fri, 28 Jul 2023 10:13:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1690564398; cv=none; d=google.com; s=arc-20160816; b=04YykKPbN6TAzWLpWZxUxn44jzdsMUNQq746nF6OJAzuRN4zBDsl5R+Wj8nyFMaxUL 4IhpEghFqXjwrBhyhBImqXexxpbk9xkxarfn5U/lRu4+wFFE1tM19NKJHX0IDOg/8wMi N78kRkp1a+CnpRJjqCFuYcuspvF/GepnE4H2c2JtvFX+uzbpsRzPUX7dcj+Z5rZuSewi NSAtnRpYnI3K+ABnYD64IYloEJL0rcWBTZ8ucO+PD+i9zqX45tzXPSNh+gdJy+6j0jcD BTdEsJYo3J/PPQJd+Hn7jouoe8zm+A5c8RkyHHZ4fTLQyv7I64Y5t99ZNBDCd/UHVHRD 3RMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=F0PoYF4UCQsXzNgArbLB5t/lFRRi5X1s1x6V0VVusPE=; fh=n9L+e/Mo/wOalMjVbltm4zKnQoPh0Qbxoe+x3eznw8A=; b=oYTMsDRX9rCneJwsET2z4HXCQXXE5e7i/idf9mki0HNOTQcg1zQGsVMAIwYrPaIkbG t2qVubMGFEGzbPNObFA6UokIARHCl7s2mV896TkEID+YeqpVMiRvHa5zYIaJGCdVa4Vp ho78bqFfvLCKFONenLv1KN1WN68Gkc57DKEGvIauqz9hj22Jk/gdHGDiYSwZzbYivyhP 5jstJLBRpmoB1e507i1AZQcUQRChX2ZWVIahpTuaDct+lo0dR4s9SAOAKmgYdXuGKj+p vU7l8W0l6nzV+LTwZJso9Cj9MZ6FIfafnG2fuKv9wMZ/DdndKkKkXm9Qfshq1IV52m2Y FFnw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ie18-20020a17090b401200b002639acf55c7si4929746pjb.7.2023.07.28.10.13.04; Fri, 28 Jul 2023 10:13:18 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234281AbjG1Qo3 (ORCPT + 99 others); Fri, 28 Jul 2023 12:44:29 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46642 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S235995AbjG1Qne (ORCPT ); Fri, 28 Jul 2023 12:43:34 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7E7C93C22 for ; Fri, 28 Jul 2023 09:43:27 -0700 (PDT) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5075E2F4; Fri, 28 Jul 2023 09:44:10 -0700 (PDT) Received: from merodach.members.linode.com (unknown [172.31.20.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 882673F67D; Fri, 28 Jul 2023 09:43:24 -0700 (PDT) From: James Morse To: x86@kernel.org, linux-kernel@vger.kernel.org Cc: Fenghua Yu , Reinette Chatre , Thomas Gleixner , Ingo Molnar , Borislav Petkov , H Peter Anvin , Babu Moger , James Morse , shameerali.kolothum.thodi@huawei.com, D Scott Phillips OS , carl@os.amperecomputing.com, lcherian@marvell.com, bobo.shaobowang@huawei.com, tan.shaopeng@fujitsu.com, xingxin.hx@openanolis.org, baolin.wang@linux.alibaba.com, Jamie Iles , Xin Hao , peternewman@google.com, dfustini@baylibre.com Subject: [PATCH v5 03/24] x86/resctrl: Create helper for RMID allocation and mondata dir creation Date: Fri, 28 Jul 2023 16:42:33 +0000 Message-Id: <20230728164254.27562-4-james.morse@arm.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20230728164254.27562-1-james.morse@arm.com> References: <20230728164254.27562-1-james.morse@arm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_MED, SPF_HELO_NONE,SPF_NONE,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org When monitoring is support, each monitor and control group is allocated an RMID. For control groups, rdtgroup_mkdir_ctrl_mon() later goes on to allocate the CLOSID. MPAM's equivalent of RMID are not an independent number, so can't be allocated until the CLOSID is known. An RMID allocation for one CLOSID may fail, whereas another may succeed depending on how many monitor groups a control group has. The RMID allocation needs to move to be after the CLOSID has been allocated. Move the RMID allocation and mondata dir creation to a helper, this makes a subsequent change easier to read. Tested-by: Shaopeng Tan Reviewed-by: Ilpo Järvinen Signed-off-by: James Morse --- Changes since v4: * Fixed typo in commit message, moved some words around. --- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 42 +++++++++++++++++--------- 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c index 6b7190f9cff6..e7178bbbd30f 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -3165,6 +3165,30 @@ static int rdtgroup_init_alloc(struct rdtgroup *rdtgrp) return ret; } +static int mkdir_rdt_prepare_rmid_alloc(struct rdtgroup *rdtgrp) +{ + int ret; + + if (!rdt_mon_capable) + return 0; + + ret = alloc_rmid(); + if (ret < 0) { + rdt_last_cmd_puts("Out of RMIDs\n"); + return ret; + } + rdtgrp->mon.rmid = ret; + + ret = mkdir_mondata_all(rdtgrp->kn, rdtgrp, &rdtgrp->mon.mon_data_kn); + if (ret) { + rdt_last_cmd_puts("kernfs subdir error\n"); + free_rmid(rdtgrp->closid, rdtgrp->mon.rmid); + return ret; + } + + return 0; +} + static int mkdir_rdt_prepare(struct kernfs_node *parent_kn, const char *name, umode_t mode, enum rdt_group_type rtype, struct rdtgroup **r) @@ -3230,20 +3254,10 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn, goto out_destroy; } - if (rdt_mon_capable) { - ret = alloc_rmid(); - if (ret < 0) { - rdt_last_cmd_puts("Out of RMIDs\n"); - goto out_destroy; - } - rdtgrp->mon.rmid = ret; + ret = mkdir_rdt_prepare_rmid_alloc(rdtgrp); + if (ret) + goto out_destroy; - ret = mkdir_mondata_all(kn, rdtgrp, &rdtgrp->mon.mon_data_kn); - if (ret) { - rdt_last_cmd_puts("kernfs subdir error\n"); - goto out_idfree; - } - } kernfs_activate(kn); /* @@ -3251,8 +3265,6 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn, */ return 0; -out_idfree: - free_rmid(rdtgrp->closid, rdtgrp->mon.rmid); out_destroy: kernfs_put(rdtgrp->kn); kernfs_remove(rdtgrp->kn); -- 2.39.2