Received: by 2002:a05:7412:251c:b0:e2:908c:2ebd with SMTP id w28csp2747775rda; Wed, 25 Oct 2023 11:05:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGCEyeUT8deSWcXntXq3f9N7J1jOtlvun3yh+c3FLR6+xJ5AkOLfW2DpaV5sDBVtR3ynEni X-Received: by 2002:a25:410e:0:b0:d9c:a3b8:f39d with SMTP id o14-20020a25410e000000b00d9ca3b8f39dmr14061888yba.65.1698257111396; Wed, 25 Oct 2023 11:05:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698257111; cv=none; d=google.com; s=arc-20160816; b=vy02kxQUW2cOX49ZOJ5cucNQROEPQRZfwIyBYCT95xou3CnzsPGaEkJ6N6lSJ8eBg4 R/wSrEcxcLTWozxauqx7xEW4CCH2LelZJOa5an4QDo03UqAU8tF4qC87Xv8n2zyQOgII RujOXqB1iGWEwsulxJvAE3T/0g7DnmjnBiFyayZwBo9nAHB/ine+EOmV+hojlxnd01O9 IBcQ23TbFuamtXsTKjFrHGsx36X9dcpeXkeXdSU0N7oG7T6FAYhztx47LfMt/egCKAD/ VmI/sZEgr45KBzMW9K540+0R0LxECHECZ1x93+4k/HP0vgihNnzyNS1c7viF81+y0Ira cVSw== 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=zoV4HfARCd8CV9gKgevlY5EDCBg651N/WKnoEqjyWzU=; fh=/glaS6mm5vpOJxBwqJTrAd1pIgGWr8mZXgOD/cPQ2gQ=; b=hI4T2E7qaKu9xnIckg2wCe60NEVVh+3waj6DdgD49sPjT+/Cwuxp8DkhqR5QklR6CO ndGJSiP9k4d77HaFZ1y/kWkuTatM7YOclDKWp1xUNpO9E5unDfFvjeY7ONAAhIXCldGH 8cjzTuI0lAmzBdaLTUqzGL9shqD74QtFgHbJ5hzD0Pbh+wj5IFG/mMlk3dG1uESuEcD2 BIaIsXCFjpNHUDqR9+YcrHKAxXz9ORtr2QKM9JTwpRTHg0lU81iTw1tohn89hj0qxQB0 S1B/Kd7cCee01oXUYdPtZVHUOA35CP+yCQ8fdn/UKVFiMH3x8RMd0kn8KlWANePOG2Od nmBQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 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 snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id h23-20020a25b197000000b00d815ce3c720si11406514ybj.64.2023.10.25.11.05.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Oct 2023 11:05:11 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=arm.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id 1298A8092D97; Wed, 25 Oct 2023 11:05:01 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234759AbjJYSE6 (ORCPT + 99 others); Wed, 25 Oct 2023 14:04:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234579AbjJYSEx (ORCPT ); Wed, 25 Oct 2023 14:04:53 -0400 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 461FE128 for ; Wed, 25 Oct 2023 11:04:50 -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 97C6F1424; Wed, 25 Oct 2023 11:05:31 -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 2722B3F738; Wed, 25 Oct 2023 11:04:47 -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, baolin.wang@linux.alibaba.com, Jamie Iles , Xin Hao , peternewman@google.com, dfustini@baylibre.com, amitsinght@marvell.com, =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Subject: [PATCH v7 03/24] x86/resctrl: Create helper for RMID allocation and mondata dir creation Date: Wed, 25 Oct 2023 18:03:24 +0000 Message-Id: <20231025180345.28061-4-james.morse@arm.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20231025180345.28061-1-james.morse@arm.com> References: <20231025180345.28061-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=-1.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_NONE 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 X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Wed, 25 Oct 2023 11:05:01 -0700 (PDT) When monitoring is supported, 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: Peter Newman Tested-by: Shaopeng Tan Reviewed-by: Shaopeng Tan Reviewed-by: Ilpo Järvinen Reviewed-by: Reinette Chatre Signed-off-by: James Morse --- Changes since v4: * Fixed typo in commit message, moved some words around. No changes since v6 --- 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 69a1de92384a..1eb3a3075093 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -3293,6 +3293,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->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) @@ -3365,20 +3389,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); /* @@ -3386,8 +3400,6 @@ static int mkdir_rdt_prepare(struct kernfs_node *parent_kn, */ return 0; -out_idfree: - free_rmid(rdtgrp->mon.rmid); out_destroy: kernfs_put(rdtgrp->kn); kernfs_remove(rdtgrp->kn); -- 2.39.2