From patchwork Wed Oct 25 18:03:24 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: James Morse X-Patchwork-Id: 158199 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:d641:0:b0:403:3b70:6f57 with SMTP id cy1csp138479vqb; Wed, 25 Oct 2023 11:05:05 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFrmJFn4OVD0l/yNUJ7oua9sI7MckqA132l7Fhq9m/JBPpbzMaigFa48XnnHTM6N//Z0EsJ X-Received: by 2002:a25:ef4e:0:b0:d9d:116a:89c8 with SMTP id w14-20020a25ef4e000000b00d9d116a89c8mr12798582ybm.54.1698257104993; Wed, 25 Oct 2023 11:05:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1698257104; cv=none; d=google.com; s=arc-20160816; b=kQ9+6ub54TCc4Vtw6DbsFZgS9/3mlOPgQNaThGkDlgR5hq7VFaiPuVjlkdZb6PueqL 3y7hidEMIQFko2h2m4FFD8p36ygdbpHQ0gsny5SGDzu5cO/1xxH4LCRnOhBChctBH1bO QQfugIO/vgveBzOwI7SL6Ky7AA+H2xbP03sugot6vAT80DcFQws8WA/N+RB2dGcwtDJ6 T+aAFO249NysClGRNiLhUsz83dUbj4PD6e3LFRnutfzoKlEeiPRKuqisEhR2mI+47dUi iEeIeTADjpR6b7Ku6ShMPSiSjuS8hKk5iIQOf4EPh+KEJ4gbvWg21CAdpde/YkPy2fZV wKYA== 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 Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id h18-20020a25b192000000b00d9ab3de6d0dsi11780997ybj.125.2023.10.25.11.05.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 25 Oct 2023 11:05:04 -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 AD917811F918; Wed, 25 Oct 2023 11:05:03 -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 S233862AbjJYSE6 (ORCPT + 26 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_J=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 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:03 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1780751642473879705 X-GMAIL-MSGID: 1780751642473879705 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 Reviewed-by: Babu Moger --- 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);