From nobody Wed Feb 11 22:24:34 2026 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2054.outbound.protection.outlook.com [40.107.223.54]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B1F7A182A1; Fri, 29 Mar 2024 01:07:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.54 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674435; cv=fail; b=pXNK8GOSl1tQEt6TEbVq+RysHbbB4GbV0kPAcwg9WTrZ3CAuBZoonkSnu95STOd4/wLPMved5dinFEOFY3jR6MW4a4iXWy+oQfugcfbxlAyr4jA7WC+PUgf3M3W4qUw5BJ9Nl+1+TUiRYZawpILwKJRiz2KCOCqrxdWIQh2L/9Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674435; c=relaxed/simple; bh=jlj96uO/OIu4Uj+sbkbdPRQ1lGw0U4HvzThBdv0hplg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=oq7iM9DgZGmqAkH9M9MyZGq1dwi+iUrVQtA/RLQd/Gwxqj2TxI7vzAtYyTjbnMWmIs5g46XpYBCKo7PCVTheeDLF0vqGZQAcTC2ONgZR2r0KwQKkij7Ki0PUAWQ6c71MC3CbsuTE9Z020VvcEosfqDNNBZ4GUOMgf6SB8TY3Iwc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=TClgPuvW; arc=fail smtp.client-ip=40.107.223.54 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="TClgPuvW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KPyUZyWBqJJgoZVog9tk+CKLJqc7uwUcsxJevDIhU0MgMpNRN73N1tVRxsZFyPTt2N9/uBJ9p8LpI4fyK9bcL2V4Gk8IEkUIqTeR6vhOOh9ixHScqLAkAJKJT0Thw9EdMqT12Qe7mt4QJYxwC3mmQw5lMBz+3lAHRR5Dpu9rqXqjBroXzhP6P8hpj1gbowkhsCVU5GTkc9fRMQkBtJSCXXavt/bLp8g4Cn7opqmVxcc9J886GtsHDD8pBh+BSy0I99fcWnoaHXGEIFOz160rTXCS6HmexEpgTh1h2YS1+W5oUEYg7D7fx6ZYyGOAMVpYWCt6bY0qiiCcTJgk5XDCew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=fwk6MuCbdiKwHmuX/4xXDME5vFCxcNg8BTN1fb8qh+o=; b=fu1rUaE0Z9Sgr6SG0OOz/mTxNRyRMnySv02DbF9LQTM5MWRwcjXy9kRgVwE9FAuqNYYLh6/ZVqK1w60ueZPUX3DijccD7B57MLb+SwjuLdthLz+XbiMM/R3jQ7K3Wq/jo67UoorRUZfnEfqbq36Qd36tlsJCceQMnUBpl8lbmx78hy25/P2DpEVXQRVt8xIWh1DycKSv09/GWCCq/H7Z31Lk+0Ea739K9dLI/Jhn/cwNN8uOKdHJy7iLZL/VBuk5ajSz7dnpD/3i+s0qwEIzCvCWS7Yoy4CdJ1yek0p1eLO9DaCgHS7G73JCz+oJHoSmPYDRbFjlDUB7vIcpFBOmtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fwk6MuCbdiKwHmuX/4xXDME5vFCxcNg8BTN1fb8qh+o=; b=TClgPuvWrpnJa6wT96o5pHmu3IAqDQvbdT3Z2T5iRxeAq/YNNP2iPSlwi4wu/mctQPn1uE1byEaWcfCaTRimHXgWy0jg4ARTTZfGZ0wSra5iJuTwy1if4ataEkX/BneZwPd93w5qhhYL3tH6RxrNHSmFTvHDGKOz4pNuUZP/vKE= Received: from DS7P222CA0018.NAMP222.PROD.OUTLOOK.COM (2603:10b6:8:2e::33) by DM4PR12MB6446.namprd12.prod.outlook.com (2603:10b6:8:be::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:07:05 +0000 Received: from CY4PEPF0000FCBE.namprd03.prod.outlook.com (2603:10b6:8:2e:cafe::ba) by DS7P222CA0018.outlook.office365.com (2603:10b6:8:2e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7386.28 via Frontend Transport; Fri, 29 Mar 2024 01:07:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by CY4PEPF0000FCBE.mail.protection.outlook.com (10.167.242.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:07:05 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:07:04 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 01/17] x86/resctrl: Add support for Assignable Bandwidth Monitoring Counters (ABMC) Date: Thu, 28 Mar 2024 20:06:34 -0500 Message-ID: <1194d7c66607648368fe34460709649b76ab85e3.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY4PEPF0000FCBE:EE_|DM4PR12MB6446:EE_ X-MS-Office365-Filtering-Correlation-Id: 09c9e5aa-0b6e-45df-41ce-08dc4f8c8cbc X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M0/AYWClcKVO/ET7dN9a9b6BS8qVok0QN12qFvc3e/R/KFTeRx8YpdeBMrcHrHZG4yUCnciaz7fno9+RLiHHuQJwFmzSvhGK3gyRQRVLHLOtTMZR7wLFNbPZXpOU3Z5LOXpVRLY7MCmDBUWiksPWozWXhNbDseFaeF7JPRlmliVeT3XZEVOuDBLYjGJwRNNjdBO6nPQ5MuQj3l4Ylqx62Im+suwmC2CaTgeMIdl4Ik7UvrxRfKKuUeD45/GoMpa18VD3brcrwE5H/n53IHW7h+1kP9o76nCulWwt6n535Lf9klCoXK/8j8P8fHhXmd2vSCrxkdHkyFarg55cG9zSHFOYf0Vu50WordIwMvyJck6bw3vx2hiJzGAZjqaZm2MfcF8kztT0wLpBWbdNXDWc8cI7MiAqssbV12uTK0VS29XMg3R5kbd+Ad9xNvDEdsYHGqDiOnXXpxZhbgM4bNt4fG3XtAan7Tytzc4S8scP9Yk7n7shQ8aWFQZaMk86Nk8ztZ5RdnFBv5uDZuImg6ASTo2eUhNUTfKZUMlHFkcqXYvCXUt0ICOg/9mgdQg5crqXw82OfZpaDLyCTXLTaT6eNpSpVwitHzTVXn4zLZ1l2rYYMGV+QvMSWcU35WSXSh5P+h+/E03oGbc1tG/e2ejrPEgwuqZwneeAjdMkcBwQtiWyDOu6BYEkUrrv2xQR4Z47jiE74GNjVoKfQ1LND3v7xw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(82310400014)(36860700004)(376005)(7416005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:07:05.3837 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 09c9e5aa-0b6e-45df-41ce-08dc4f8c8cbc X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: CY4PEPF0000FCBE.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB6446 Content-Type: text/plain; charset="utf-8" AMD hardware can support 256 or more RMIDs. However, bandwidth monitoring feature only guarantees that RMIDs currently assigned to a processor will be tracked by hardware. The counters of any other RMIDs which are no longer being tracked will be reset to zero. The MBM event counters return "Unavailable" for the RMIDs that are not active. Users can create 256 or more monitor groups. But there can be only limited number of groups that can give guaranteed monitoring numbers. With ever changing configurations there is no way to definitely know which of these groups will be active for certain point of time. Users do not have the option to monitor a group or set of groups for certain period of time without worrying about RMID being reset in between. The ABMC feature provides an option to the user to assign an RMID to the hardware counter and monitor the bandwidth for a longer duration. The assigned RMID will be active until the user unassigns it manually. There is no need to worry about counters being reset during this period. Additionally, the user can specify a bitmask identifying the specific bandwidth types from the given source to track with the counter. Linux resctrl subsystem provides the interface to count maximum of two memory bandwidth events per group, from a combination of available total and local events. Keeping the current interface, users can assign a maximum of 2 ABMC counters per group. User will also have the option to assign only one counter to the group. If the system runs out of assignable ABMC counters, kernel will display an error. Users need to unassign an already assigned counter to make space for new assignments. AMD hardware provides total of 32 ABMC counters when supported. The feature can be detected via CPUID_Fn80000020_EBX_x00 bit 5. Bits Description 5 ABMC (Assignable Bandwidth Monitoring Counters) The feature details are documented in APM listed below [1]. [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming Publication # 24593 Revision 3.41 section 19.3.3.3 Assignable Bandwidth Monitoring (ABMC). Signed-off-by: Babu Moger Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D206537 --- v3: Change because of rebase. Actual patch did not change. v2: Added dependency on X86_FEATURE_BMEC. --- arch/x86/include/asm/cpufeatures.h | 1 + arch/x86/kernel/cpu/cpuid-deps.c | 3 +++ arch/x86/kernel/cpu/scattered.c | 1 + 3 files changed, 5 insertions(+) diff --git a/arch/x86/include/asm/cpufeatures.h b/arch/x86/include/asm/cpuf= eatures.h index a38f8f9ba657..342b82ec15be 100644 --- a/arch/x86/include/asm/cpufeatures.h +++ b/arch/x86/include/asm/cpufeatures.h @@ -466,6 +466,7 @@ * Reuse free bits when adding new feature flags! */ #define X86_FEATURE_AMD_LBR_PMC_FREEZE (21*32+ 0) /* AMD LBR and PMC Freez= e */ +#define X86_FEATURE_ABMC (21*32+ 1) /* "" Assignable Bandwidth Monitoring= Counters */ =20 /* * BUG word(s) diff --git a/arch/x86/kernel/cpu/cpuid-deps.c b/arch/x86/kernel/cpu/cpuid-d= eps.c index b7174209d855..c1f2abb209b4 100644 --- a/arch/x86/kernel/cpu/cpuid-deps.c +++ b/arch/x86/kernel/cpu/cpuid-deps.c @@ -70,6 +70,9 @@ static const struct cpuid_dep cpuid_deps[] =3D { { X86_FEATURE_CQM_MBM_LOCAL, X86_FEATURE_CQM_LLC }, { X86_FEATURE_BMEC, X86_FEATURE_CQM_MBM_TOTAL }, { X86_FEATURE_BMEC, X86_FEATURE_CQM_MBM_LOCAL }, + { X86_FEATURE_ABMC, X86_FEATURE_CQM_MBM_TOTAL }, + { X86_FEATURE_ABMC, X86_FEATURE_CQM_MBM_LOCAL }, + { X86_FEATURE_ABMC, X86_FEATURE_BMEC }, { X86_FEATURE_AVX512_BF16, X86_FEATURE_AVX512VL }, { X86_FEATURE_AVX512_FP16, X86_FEATURE_AVX512BW }, { X86_FEATURE_ENQCMD, X86_FEATURE_XSAVES }, diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattere= d.c index a515328d9d7d..930655f22f75 100644 --- a/arch/x86/kernel/cpu/scattered.c +++ b/arch/x86/kernel/cpu/scattered.c @@ -47,6 +47,7 @@ static const struct cpuid_bit cpuid_bits[] =3D { { X86_FEATURE_MBA, CPUID_EBX, 6, 0x80000008, 0 }, { X86_FEATURE_SMBA, CPUID_EBX, 2, 0x80000020, 0 }, { X86_FEATURE_BMEC, CPUID_EBX, 3, 0x80000020, 0 }, + { X86_FEATURE_ABMC, CPUID_EBX, 5, 0x80000020, 0 }, { X86_FEATURE_PERFMON_V2, CPUID_EAX, 0, 0x80000022, 0 }, { X86_FEATURE_AMD_LBR_V2, CPUID_EAX, 1, 0x80000022, 0 }, { X86_FEATURE_AMD_LBR_PMC_FREEZE, CPUID_EAX, 2, 0x80000022, 0 }, --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (mail-dm6nam04on2047.outbound.protection.outlook.com [40.107.102.47]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BB4871CFB6; Fri, 29 Mar 2024 01:07:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.102.47 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674438; cv=fail; b=UeXUDCASuq0Gqu97DtAi6Hw4NYsfBE4cc/Ze72x00ijyP/Zf+ps1c1yUuFRo5GrfGGb1zF4XDyZc2HHTFIUyqnNqwoDZBYq8e7So2WzcRJRRrVwSMCTBrqhM0M7cTLkWC6Dvqo9e2g9OBOCoJUeB+v9zGIzewNkA9hibt/qqheE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674438; c=relaxed/simple; bh=+6KMIvVWD1aJ03MiQ7BmHsqbEAz3jg1goaQPZfV2gIg=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=p0RBuEHjaNvaAWxEwYDVMTedDlt07YfUKoVaqT6n7nNp8niOIuuzZyGR6ywej9PlxhyWNARGjAVFIw/r57w3n+L5gvXkL5k/4X49OsoT/PKcvgp0wK9+NBsuw+ZTIOyEdhDcPB/t1O1z7/oGTgMO5rFcQDbESqszGuBpwudypoM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=yirZDoNq; arc=fail smtp.client-ip=40.107.102.47 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="yirZDoNq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YeVZiOIqr8Hfw39C7jpHqxoBRqqajICEZB5hqcc2lbeF/EH7ixNjwz7iY9mIKIeHC8hUfL28dvY4JQSpm29FRDEEzhYCIsE9pDWY9nZ+Pmo/FxU2CYYR0g+hTEWCvyp9g1xCXH8gbBUPR8jAMN1asiKAZPUSbW7rdxbbvHTB1Zh/xmUaN6ONS8zJtPnvjMQ6Qjup15WFzZnV4Ye9vCbZoE25VI8hJICiIlC4C3av38qvxnfR3gwxh0gaPnmq5jPt2yY6KwxsQN3gEkK3aNY0p/v5CBpy21AsVdq6CdccyyczjZL8dTE/peiWg1cY7/0CHA27HEXDXli0jyat+gKFbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2ZaXSbimx93/0ZOwTxMfynatv5yYygcvqYfPxXt5aKw=; b=HoMMCma6KKGIvrEcSN67shXOTvegwRPYV1Y/j2PesIACvhsD5v3xjSzUjKSF7P0x4115b3h36qbByMilw3RUzfCzPIxG2t+2ramOKy0ir13/aO97ysqb+k4RvKyMIlxge0BK15vEG8m0UpelIfWl+lg5NVWHgb0scFGXw7DdS2XRERz5517u9bXLTf7cDG50IUjsR1P1H5aUD774+sQrRGVr236HlvKwKrizFiD0cPQR/j2O55HZMV32SVrU6QpV8V8Q+nLMWMerHoGvUy+8hNoLc1VS/CKNrJvf113/slnyUHu8XwCX4fM8i9vxUzPX+n2gtQ1kWH8GG/6hXK5O+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2ZaXSbimx93/0ZOwTxMfynatv5yYygcvqYfPxXt5aKw=; b=yirZDoNq7bnvVhtScnxLXF4/UZOMTrhLojsK+949JTHJ+1rsXTqdvmauYiHH7GjTssnef1c0G629oPbmAHVJ61GYCUDmM5eSdZHAjur5cGYy6gv52wWtM2isgx2SgAEjwUvUc/s97REy5o8f/MiG6gZqx4dwD9GKm1xX2H0yaOc= Received: from PH7PR17CA0024.namprd17.prod.outlook.com (2603:10b6:510:324::21) by PH8PR12MB7350.namprd12.prod.outlook.com (2603:10b6:510:216::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:07:13 +0000 Received: from SN1PEPF0002BA4F.namprd03.prod.outlook.com (2603:10b6:510:324:cafe::2f) by PH7PR17CA0024.outlook.office365.com (2603:10b6:510:324::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.40 via Frontend Transport; Fri, 29 Mar 2024 01:07:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4F.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:07:13 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:07:11 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 02/17] x86/resctrl: Add ABMC feature in the command line options Date: Thu, 28 Mar 2024 20:06:35 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4F:EE_|PH8PR12MB7350:EE_ X-MS-Office365-Filtering-Correlation-Id: c91e74f2-41d8-4376-906e-08dc4f8c9169 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: vH9/SOXPdzU3AFWkukP+TZ5kTQqEp88PdgEQweNGCSa3vuAOHibquTaekuZXJwV9DOn5tvItbqr/tJWOrFcco2iy1xNJjN5eQXGpuKc/tn7dezpYi7eO2vubYlMOKiAxYwZ+YcfpK8L0V361zIxe1lXU11WWToj247H0KDztS8CgdbEeRq3u1YnRHGtNmmxJAjT5a6cT0Vj6s/dr8pawaxFH6vd0P8UeIaiD5aUL8DIZ8qYQWpxy45EdtUNg7kQclumvVBb2VEcrCYzNNDlig1As9RpR+UANnQXE0Eygebtn6hsq+wxQWzDuPZd4DQ0EGuBFwBl5cOV2uB8ud9xmz7k7Yy6B4+e7KjpUwgHMO63b2JTTzq+uEdunr7+XEnKPaDUkza31EhIf/jrrM0teJtwx3eOLWUCby4ndR9iR3UOYj9Qz7XytfamwOwtZYVrj7hQOFe7/JzzxJQAWHxsSGINQe8+Kl0OqLwvX4zXgPVj9QSJIAGokQBWmx7DK/vGR5i2Wr+uNs4Zwfn98hCEby++sVCYG9bGZNsPzhBt7d178l6S56tjpo1ajbtujOwzYAj9jl+v5dO4bwuzqOQ2bMVW0BagQXLE+nfsdyim0+YrzGNpGcKCMszU+vvzJGbLOO6jYybFwhjlLnHWtd7ij7Vkl2KdwqJ9YYxVl7oFz+rcl5FBuW4r3FP3FzcHBxrkMvR7V8LYvMuQouAdBjVWUKXFuWaydPZYpXznL9SM8+I0+LhsvAa2kKZeATuWJW8hC X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(7416005)(1800799015)(36860700004)(82310400014)(376005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:07:13.2773 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: c91e74f2-41d8-4376-906e-08dc4f8c9169 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4F.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB7350 Content-Type: text/plain; charset="utf-8" Add the command line options to enable or disable the new resctrl feature ABMC (Assignable Bandwidth Monitoring Counters). Signed-off-by: Babu Moger --- v3: No changes v2: No changes --- Documentation/admin-guide/kernel-parameters.txt | 2 +- Documentation/arch/x86/resctrl.rst | 1 + arch/x86/kernel/cpu/resctrl/core.c | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentatio= n/admin-guide/kernel-parameters.txt index bb884c14b2f6..b3a2e7f72462 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -5551,7 +5551,7 @@ rdt=3D [HW,X86,RDT] Turn on/off individual RDT features. List is: cmt, mbmtotal, mbmlocal, l3cat, l3cdp, l2cat, l2cdp, - mba, smba, bmec. + mba, smba, bmec, abmc. E.g. to turn on cmt and turn off mba use: rdt=3Dcmt,!mba =20 diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/re= sctrl.rst index 6c245582d8fb..68df7751d1f5 100644 --- a/Documentation/arch/x86/resctrl.rst +++ b/Documentation/arch/x86/resctrl.rst @@ -26,6 +26,7 @@ MBM (Memory Bandwidth Monitoring) "cqm_mbm_total", "cqm_= mbm_local" MBA (Memory Bandwidth Allocation) "mba" SMBA (Slow Memory Bandwidth Allocation) "" BMEC (Bandwidth Monitoring Event Configuration) "" +ABMC (Assignable Bandwidth Monitoring Counters) "" =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D =20 Historically, new features were made visible by default in /proc/cpuinfo. = This diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resct= rl/core.c index 83e40341583e..57a8c6f30dd6 100644 --- a/arch/x86/kernel/cpu/resctrl/core.c +++ b/arch/x86/kernel/cpu/resctrl/core.c @@ -664,6 +664,7 @@ enum { RDT_FLAG_MBA, RDT_FLAG_SMBA, RDT_FLAG_BMEC, + RDT_FLAG_ABMC, }; =20 #define RDT_OPT(idx, n, f) \ @@ -689,6 +690,7 @@ static struct rdt_options rdt_options[] __initdata =3D= { RDT_OPT(RDT_FLAG_MBA, "mba", X86_FEATURE_MBA), RDT_OPT(RDT_FLAG_SMBA, "smba", X86_FEATURE_SMBA), RDT_OPT(RDT_FLAG_BMEC, "bmec", X86_FEATURE_BMEC), + RDT_OPT(RDT_FLAG_ABMC, "abmc", X86_FEATURE_ABMC), }; #define NUM_RDT_OPTIONS ARRAY_SIZE(rdt_options) =20 --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2045.outbound.protection.outlook.com [40.107.101.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 14B001171D; Fri, 29 Mar 2024 01:07:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.101.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674450; cv=fail; b=ikSBwNPpDDOSP2ijlMK7r8pn9qUt/DNpLlfEn63XklHuSjrxGf2nqOHKdmeVr6su/WVn7vOBQfWn7Lj+WSauMT5qUia6grtTST0NwtaBaxc3bA2GtZbwlacoCTKSlM/4AXCZJ7FORnMFBrdxT258RNZyqSHkq0ICiRRGFbTua/s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674450; c=relaxed/simple; bh=4ON5cTFNWv7ZEKdfrDHRnIrO8qrMdP35eEn7gO1RuOw=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=u6OaduoGV2eLtvrqjzbcd26DShDMSxVLDQjaHj0xSGUxD/ub0heYXkuPJ8ybCFWpn5Q2kcb2nkxLTUXzz/1kT5DjzDuqopYm87LT2+bwPM0dVJe4tHio9tdeKMrNmxsCw4DJvugzVRV49gh35nMt/GJe/zbBgIIO25g3jFQa6KE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=yjQMXpWB; arc=fail smtp.client-ip=40.107.101.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="yjQMXpWB" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=X+ZN04e2NHTGop/wlRAtSkPtU9mYpQfZ3na6y9MZX+6ZqhvI6PVFte1oTXEVwsIqOCD+9eqQZ7x0f98D7QyFDWQyMuP2mHfMYTwaIjDia6WEXbk7O8nI26/seec2cQEIigbyQUYc2kAp//9xGuPN20AAeAB3WxdDw/s+KVhRKJoHyn0l90F8J+CTdlmVOKHqisayb7b8LqWWIVQpzcjXKs7HUkxiusIxqNJNsdfzYR+dOBPNlO7bgiCkJb904hLD592+a7qMbG3dQFUBx5KjjfPP1RkV4YwrQvJ0cwGKTn8QxrePqUWqJyWlTRXad0e66BiadOaN3sSOyEarJo1FCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wadMJD+pmw/IkeV+n73MjBwEz/qsM4NIngtFC4PBRZM=; b=NVg8Q/vkhUotX989cGrCWCqog1KTET7jNkx8WKw4oLfelO1FQ1bwZrRxRzk5vifzxoTNFV7flJmWldJjzOFbuAQsFISWGEmdXB+c9OqeLjzekVLixfmUNmT/mTmRXqRdOS1JshAln47SaSpNlSaqkEJnhN/URPvTAeqHok07KNBEaozvEgpT3NYXSr+cmcEEeEFN2LQu6JnVENaQXPkxETLBJGMw6XWBlNfsiIx4fUETKmHQJp0sbkzFavu8iZ8irzFrOJ7ZTaMpCFYxBWZp4lddUbB5yi+sjvHVT+MZjDYFDB73AQI1PJkV5RATTddjuFrYNS7zj0Mc/NGH5QhGgA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wadMJD+pmw/IkeV+n73MjBwEz/qsM4NIngtFC4PBRZM=; b=yjQMXpWBj33naWrPx8/wRQw/mb19wwW70N0i5zfVauK+0QyB1uY+vOSqoIHTanxz5G5fqgzZltXhkEcwd0JU8RJGapeg4TlHHh9IcoQx5rxuMohq5FGOXBrh4lJDL7soJSyg/enj00xsZMQxo7/WfKhu9LamLSe0VNVuZBqL780= Received: from PH2PEPF0000385A.namprd17.prod.outlook.com (2603:10b6:518:1::7c) by CY5PR12MB6453.namprd12.prod.outlook.com (2603:10b6:930:37::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33; Fri, 29 Mar 2024 01:07:25 +0000 Received: from SN1PEPF0002BA52.namprd03.prod.outlook.com (2a01:111:f403:f90c::) by PH2PEPF0000385A.outlook.office365.com (2603:1036:903:48::3) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.38 via Frontend Transport; Fri, 29 Mar 2024 01:07:25 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA52.mail.protection.outlook.com (10.167.242.75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:07:25 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:07:23 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 03/17] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Date: Thu, 28 Mar 2024 20:06:36 -0500 Message-ID: <63134ddf18208bbd11bcec0ec75c33ef6e5635b2.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA52:EE_|CY5PR12MB6453:EE_ X-MS-Office365-Filtering-Correlation-Id: a6360095-af0d-43af-63ec-08dc4f8c987d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: CFvLcUpvuTKDMRwrGIKG5GWfkGYSDI20ho8GvxJmOfZX4fXQjSNOxvNIxuaRrFDTMSXwipMNZvDI9rJuLmB0tbCPb6mQLEjkdU+ZNSb763hjYAKNXBXkd0AumoAMhEroV9o+Ke1WZ+iM1ZfTr7MjrvaEiJHhMhm874vFzNPp+6oHQ3KYjlvhPJDdV6fUwAwqbuBQtaFSJAV609YGYKux07oh4YwMk7iZj/UK3jYzUkr7UKT1MvJoOXO3Y6NCdfsqKXJzHKFGAh+FCgWS6I2+tw/6aJI9DFFgSSFmnkYBJrE+NsY42cy/gdKLzZCnrD9lSrvfVIb3/vLH7PlgeHanCotJQ79HTroHjdCrtbVZkDJPNscTRWpAZvHsnlrJVKY8PBp/m8PWeyvrio0okqvioLfcvbQm6BrcOETyRGOgKPTll1rZ9bfhsWIxGcVzYF5Z3Gp910ao6kk7PDP16kub8CtEw3uKmUYhV+a0icIzhbCz+DP4UMKD4zwQ0biNr+majzQ1AYH/EWd5h0UFD5jHtCkkhu0hnUSYiBIFIMvTGBMsfE7/GoTcNPYWQ2t4orKKzytTEDnRD6UUpTleAOmKP912kMedbEwiBNSISEsXft6Qgf7kfwO1TFPrnwdNLTMIERqy6AN3fU2+kYX5K1Hn6UDd2HyBZrONg4E768cr2OZXJI5A2nVJ1W8GzFpxhUEJFylsnwb+zAe64Tm6TM7yJw== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(1800799015)(7416005)(82310400014)(36860700004)(376005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:07:25.1512 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6360095-af0d-43af-63ec-08dc4f8c987d X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA52.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY5PR12MB6453 Content-Type: text/plain; charset="utf-8" ABMC feature details are reported via CPUID Fn8000_0020_EBX_x5. Bits Description 15:0 MAX_ABMC Maximum Supported Assignable Bandwidth Monitoring Counter ID + 1 The feature details are documented in APM listed below [1]. [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming Publication # 24593 Revision 3.41 section 19.3.3.3 Assignable Bandwidth Monitoring (ABMC). Signed-off-by: Babu Moger Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D206537 --- v3: Removed changes related to mon_features. Moved rdt_cpu_has to core.c and added new function resctrl_arch_has_abm= c. Also moved the fields mbm_assign_capable and mbm_assign_cntrs to rdt_resource. (James) v2: Changed the field name to mbm_assign_capable from abmc_capable. --- arch/x86/kernel/cpu/resctrl/core.c | 17 +++++++++++++++++ arch/x86/kernel/cpu/resctrl/internal.h | 1 + arch/x86/kernel/cpu/resctrl/monitor.c | 3 +++ include/linux/resctrl.h | 12 ++++++++++++ 4 files changed, 33 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resct= rl/core.c index 57a8c6f30dd6..bb82b392cf5d 100644 --- a/arch/x86/kernel/cpu/resctrl/core.c +++ b/arch/x86/kernel/cpu/resctrl/core.c @@ -740,6 +740,23 @@ bool __init rdt_cpu_has(int flag) return ret; } =20 +inline bool __init resctrl_arch_has_abmc(struct rdt_resource *r) +{ + bool ret =3D rdt_cpu_has(X86_FEATURE_ABMC); + u32 eax, ebx, ecx, edx; + + if (ret) { + /* + * Query CPUID_Fn80000020_EBX_x05 for number of + * ABMC counters + */ + cpuid_count(0x80000020, 5, &eax, &ebx, &ecx, &edx); + r->mbm_assign_cntrs =3D (ebx & 0xFFFF) + 1; + } + + return ret; +} + static __init bool get_mem_config(void) { struct rdt_hw_resource *hw_res =3D &rdt_resources_all[RDT_RESOURCE_MBA]; diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index c99f26ebe7a6..c4ae6f3993aa 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -584,6 +584,7 @@ void free_rmid(u32 closid, u32 rmid); int rdt_get_mon_l3_config(struct rdt_resource *r); void __exit rdt_put_mon_l3_config(void); bool __init rdt_cpu_has(int flag); +bool __init resctrl_arch_has_abmc(struct rdt_resource *r); void mon_event_count(void *info); int rdtgroup_mondata_show(struct seq_file *m, void *arg); void mon_event_read(struct rmid_read *rr, struct rdt_resource *r, diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/re= sctrl/monitor.c index c34a35ec0f03..e5938bf53d5a 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -1055,6 +1055,9 @@ int __init rdt_get_mon_l3_config(struct rdt_resource = *r) mbm_local_event.configurable =3D true; mbm_config_rftype_init("mbm_local_bytes_config"); } + + if (resctrl_arch_has_abmc(r)) + r->mbm_assign_capable =3D ABMC_ASSIGN; } =20 l3_mon_evt_init(r); diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h index a365f67131ec..a1ee9afabff3 100644 --- a/include/linux/resctrl.h +++ b/include/linux/resctrl.h @@ -150,6 +150,14 @@ struct resctrl_membw { struct rdt_parse_data; struct resctrl_schema; =20 +/** + * enum mbm_assign_type - The type of assignable monitoring. + * @ABMC_ASSIGN: Assignable Bandwidth Monitoring Counters. + */ +enum mbm_assign_type { + ABMC_ASSIGN =3D 0x01, +}; + /** * struct rdt_resource - attributes of a resctrl resource * @rid: The index of the resource @@ -168,6 +176,8 @@ struct resctrl_schema; * @evt_list: List of monitoring events * @fflags: flags to choose base and info files * @cdp_capable: Is the CDP feature available on this resource + * @mbm_assign_capable: Does system capable of supporting monitor assignme= nt? + * @mbm_assign_cntrs: Maximum number of assignable counters */ struct rdt_resource { int rid; @@ -188,6 +198,8 @@ struct rdt_resource { struct list_head evt_list; unsigned long fflags; bool cdp_capable; + bool mbm_assign_capable; + u32 mbm_assign_cntrs; }; =20 /** --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 31CEA182A1; Fri, 29 Mar 2024 01:07:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674459; cv=fail; b=U4YHzMUPX3XtWKxQ1AcVlKBXnN26DezQeI7gg3oeeNrzuuJPhUucoE+MAee0NJZg+6FJGZpqPvVdgLLYWZMLSLMLxa0xUuv+CUUz5bx+Q764zDRKMSG3gggWyqq7LN/svRT8gBVCxu2sEmntMppSaT2LUdAbsfi+0FL2km8XYAY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674459; c=relaxed/simple; bh=mTzTr2yBXRhcgYs2+vrickK9/ktmtYAX86BgarBT6g8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=TIgS6jQ8g9gHorThZRFFW35ZYQxvPc6f+UEZpfrHrumM9AdO25/1sWZcWz1zsQLDP7MDlECQUQwm8yLxcARG1IUjCiTqKDxxXKizuJsXHJd5srgNTb3D9d42PrahH6w8dXauJ2lKVFa5yiOiQg20HABw77+InaLUZoWaAnFTAtE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=VGiVzKDa; arc=fail smtp.client-ip=40.107.236.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="VGiVzKDa" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hG2h0Hqz/k0YN22Qu97JnKYS5CZ1mEdRw+ipgBPxbqGLI6IH95KuNoIeJQDmTgpOhMNjl/dqsiheixVEV+J0GXeqTFVLzW8nq1bG1VfqpeHHA54OmLBED7xen0vZgnO1eW45ckb7OVVY2hKjasZV4AFVquFmDDTZYeeNaqdep9BTogUX+AIgc47PLOsn/rrOpyFVGAa9GVuDmHUuJMmdySLt5GWGvrdFLoVo46eljHnNeP8bpr/mVksoTKEzF3YaYUvx5px2KPi+o6yJanFCaF8bTLzZCVB40ZOm69Ldhgb81CLou6It2VJ9GYDDl9FVeFZn2c+pGFc4HHBvIyqE4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=DaENX+lLEp5EGPbThUWz8uwtmmeolMR+QpH9oAlyhz8=; b=cFRxy0EnSyvEm75dsgUn6KikjLUlphntMMFANuthOV0qFsJO+fUw4PgUWrp9hAB8oryYM0P/W85KvPIEeJmohtx14s3OqO8gBMqB+oAn1X2iuYK+ywAPLXczaWWydUdAcT5fDI3YhRgtXyug8SBA/vQrS0T1OJY3F2X3VOn2CBc8n7yrZLY779FG81ibrIdUs8zs+ldhVTjTIL8kvE+quHjsTu8uxSUq+iCGv0wvDiCjFNMa9ySQ5yh0Osx7n2wXX2LEKSr1YUo6XTaz/CUXF2L9o7MiYXqznTO/E1p31mqGGs+3l/MlOJ21QdXNaCBVgudurA4h2Y0MeJ5aP4SUuQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=DaENX+lLEp5EGPbThUWz8uwtmmeolMR+QpH9oAlyhz8=; b=VGiVzKDapu/qqX40nvHZ04eertTPRSU1BrXAO6X7mgnm4R4BnRub8tQvqxTxoNtf0Y5Jjhf5+j7q8dXp19S/MPTSbTsJY/vqF29DjYfQRdMLcqiPirs8R2/z0huypoOx/ouvhQODzSVf69Hi0kVqDPsKCOmmmK+bIerNLsIwem0= Received: from SA0PR12CA0002.namprd12.prod.outlook.com (2603:10b6:806:6f::7) by DS0PR12MB8561.namprd12.prod.outlook.com (2603:10b6:8:166::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:07:33 +0000 Received: from SN1PEPF0002BA4C.namprd03.prod.outlook.com (2603:10b6:806:6f:cafe::b6) by SA0PR12CA0002.outlook.office365.com (2603:10b6:806:6f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.40 via Frontend Transport; Fri, 29 Mar 2024 01:07:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4C.mail.protection.outlook.com (10.167.242.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:07:32 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:07:31 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 04/17] x86/resctrl: Introduce resctrl_file_fflags_init Date: Thu, 28 Mar 2024 20:06:37 -0500 Message-ID: <363c14eeeac99eb0453ac3429f9e7bd446b2acdb.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4C:EE_|DS0PR12MB8561:EE_ X-MS-Office365-Filtering-Correlation-Id: fa7b06e1-a749-4893-1623-08dc4f8c9d06 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7GaxCYLQs9YJK0mMgOFxXlLgsHaiVUt2SdHDM2zDAZ9Z6lulsCBXirky6qI0Xb8wDMxaCjJ4qXFwg4hw0Hu/LUkY/nriIDZQ2Kc/EnRfv1+rV6WRs0Kd4amul5Er2+mAHQkOQNz2iGrbdfkwrEq0SS2Vsc3by8afLMGH97Ce0AKyPuZMhIHVHsQcLlElUJrd1DeNe1POrUFcXfk9iwT3JjVOPdZWCjYV5wlWJaJSVRbfEhhvaCxf7swWzhjHmlWQ/JuQ6C3BSOeWZK7CRLUPAtv84rPLo9YinVDE8n4Mis/oJKrSaazCeE6if8tQnyefDRawHwFKN42YyuJme9NT+lW3FPW0v6i1tCWv/kwuc66pb8JEyEW+/R2pWXV5xF31YNySdkH3qLGhN5aMAk65hPRmxX1Ei5zRZICdCzHjKCeJ3QFNtraO0RQb7GT5+NacO4C4Qd5QkorfprBCPrrjAQQ4Lzy8os1oEjlOx9TK8LXLYA70tFQNlW+zRAnaMLuCfRdAw2HLpH97aMaci2laGpazR24B7SSeQH+NZQCMCjAt4k4pUXN0fFWL0GcZIxOX7MG+MmlpHkDGKYwjcm17j4AonKwrK3hnQoCEed43IuLCBURMzpdpCy27crBgtIJ6sQ9vf6mbtnXmlYlsU1ESlf74LXX/IjtcbiAIdWi10yLgZ2H3L9TK0rJqxJe6eLu6ugUcd5LRqYhhQtqob/xusoKtQ2ppM51jV8OHu3uJHmS5JpszVDnGz6rsopNJITeK X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(376005)(36860700004)(82310400014)(7416005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:07:32.7580 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fa7b06e1-a749-4893-1623-08dc4f8c9d06 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4C.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS0PR12MB8561 Content-Type: text/plain; charset="utf-8" Consolidate multiple fflags initialization into one function. Remove thread_throttle_mode_init, mbm_config_rftype_init and consolidate them into resctrl_file_fflags_init. Signed-off-by: Babu Moger --- v3: No changes. v2: New patch. New function to consolidate fflags initialization --- arch/x86/kernel/cpu/resctrl/core.c | 4 +++- arch/x86/kernel/cpu/resctrl/internal.h | 4 ++-- arch/x86/kernel/cpu/resctrl/monitor.c | 6 ++++-- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 16 +++------------- 4 files changed, 12 insertions(+), 18 deletions(-) diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resct= rl/core.c index bb82b392cf5d..50e9ec5e547b 100644 --- a/arch/x86/kernel/cpu/resctrl/core.c +++ b/arch/x86/kernel/cpu/resctrl/core.c @@ -229,7 +229,9 @@ static bool __get_mem_config_intel(struct rdt_resource = *r) r->membw.throttle_mode =3D THREAD_THROTTLE_PER_THREAD; else r->membw.throttle_mode =3D THREAD_THROTTLE_MAX; - thread_throttle_mode_init(); + + resctrl_file_fflags_init("thread_throttle_mode", + RFTYPE_CTRL_INFO | RFTYPE_RES_MB); =20 r->alloc_capable =3D true; =20 diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index c4ae6f3993aa..722388621403 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -602,8 +602,8 @@ void cqm_handle_limbo(struct work_struct *work); bool has_busy_rmid(struct rdt_domain *d); void __check_limbo(struct rdt_domain *d, bool force_free); void rdt_domain_reconfigure_cdp(struct rdt_resource *r); -void __init thread_throttle_mode_init(void); -void __init mbm_config_rftype_init(const char *config); +void __init resctrl_file_fflags_init(const char *config, + unsigned long fflags); void rdt_staged_configs_clear(void); bool closid_allocated(unsigned int closid); int resctrl_find_cleanest_closid(void); diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/re= sctrl/monitor.c index e5938bf53d5a..735b449039c1 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -1049,11 +1049,13 @@ int __init rdt_get_mon_l3_config(struct rdt_resourc= e *r) =20 if (rdt_cpu_has(X86_FEATURE_CQM_MBM_TOTAL)) { mbm_total_event.configurable =3D true; - mbm_config_rftype_init("mbm_total_bytes_config"); + resctrl_file_fflags_init("mbm_total_bytes_config", + RFTYPE_MON_INFO | RFTYPE_RES_CACHE); } if (rdt_cpu_has(X86_FEATURE_CQM_MBM_LOCAL)) { mbm_local_event.configurable =3D true; - mbm_config_rftype_init("mbm_local_bytes_config"); + resctrl_file_fflags_init("mbm_local_bytes_config", + RFTYPE_MON_INFO | RFTYPE_RES_CACHE); } =20 if (resctrl_arch_has_abmc(r)) diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 011e17efb1a6..dda71fb6c10e 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -2022,24 +2022,14 @@ static struct rftype *rdtgroup_get_rftype_by_name(c= onst char *name) return NULL; } =20 -void __init thread_throttle_mode_init(void) -{ - struct rftype *rft; - - rft =3D rdtgroup_get_rftype_by_name("thread_throttle_mode"); - if (!rft) - return; - - rft->fflags =3D RFTYPE_CTRL_INFO | RFTYPE_RES_MB; -} - -void __init mbm_config_rftype_init(const char *config) +void __init resctrl_file_fflags_init(const char *config, + unsigned long fflags) { struct rftype *rft; =20 rft =3D rdtgroup_get_rftype_by_name(config); if (rft) - rft->fflags =3D RFTYPE_MON_INFO | RFTYPE_RES_CACHE; + rft->fflags =3D fflags; } =20 /** --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2052.outbound.protection.outlook.com [40.107.94.52]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 43FBE200C3; Fri, 29 Mar 2024 01:07:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.52 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674466; cv=fail; b=EclfR6RBKRADbLsST6vNV2eCxWMmYd1+IvgisVeLXQFc6IG9fdz5wz7QGZ8Hh0uuiFaPjo3HzcMHJp6cxLiyEsr7//8JExpgU5nsKDDXsR13dqMiKTyStxY0+SI1ottlDqL5/CuU/GMt7KhO/enHrNCKIam6EB+4gAFrOJNfTHo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674466; c=relaxed/simple; bh=PJnQoB+0EwtPtcF6Znu4w5VFg9ebC6GK5TOhX4LqZ4c=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ZEJ+7XFZkvJ/7YIdkgNk1NUrDRUqZSGY6fxt84DzU5l5S9vqUtJCGzmUplw8D/0KFSCct88tXrPgntQ3maToJGHYj/8ef3cMxyKxCIjdjDe+ORXqNhK1aJpPCb//S7XL1ZyeDPwTrZ947eop00EwsZ8bm9EwJAdyoeBi7KjYuIA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=w6m1hwHP; arc=fail smtp.client-ip=40.107.94.52 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="w6m1hwHP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lgaPpCXeuLwNYeYntizS2q5tqRV7+/555B+TQ06BMzO8cbeotR2+4E8AP4DYwKByM2XzHilAlizMRw1XiRVE7CSf5VqQQBEmyLisJDW/D/O+HpTGmVA2HmNARDQioZa9kk2NpUIgBodUNL+PLmjtFR3WtPckQDNwJmd45HBkAbe7/OfTW3IJmD+BaL6hmDrFaOLZvyn6dxhPhgAW3CObVYjg2I6pLg8tBo8djdfzF0SnvuPLtAn48BpVN8w3/GkClE5gHHJwNPiIuFNQtBwXx/Nx6wfmO79wHwYkqvUAwSDASGQYQ+uqruVKjT3rLtJidAqYbSWER/9N8IxSZi+Q0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=gE7Q/RoxBICUCnjeHeZKwglzapPNF1MQqYqZWDR33dA=; b=l5QioQO0Jm5Zk7qLPEkJh5gTlXb4kYLVc3gc4XMsa9GqCls64YIaAkLROnzNYL9obVc1D1RMg47vT2SZEzpT5IuMaiY8OqI3qK2gO4/GvMex6O9GrfrE1nGLxOFpEn9TTFncKVANfT4/D+WqEf6OH5ClJDRoPlFufeIbezH8Nokrckd5CvbOg65Otnxyvwazvj1dsalxfmk1VAvHQgQc7PpkCpzmsrbbonVbswy3GQrg4KpNxWdvbDz2WboSIUB3YE9blIOOenKio4FbFZDKwvMwgQr/7V2WDoYa/nfyUl4jvyu8jMnK1/j65whcYY30bp30AxhntchvzDwC1hHXWw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=gE7Q/RoxBICUCnjeHeZKwglzapPNF1MQqYqZWDR33dA=; b=w6m1hwHPtiZobcv3XTgZ5Cv7r349jQk3nbh8bD8gh22TlwdUSX2avWUbkxb/sSU10VanxA9S/HQHkJDduj/qCO6MgciETVCj/IA3ow8vxgeqMoYlndiSsPyEFREQ272H3fTsc/8xX/FEcFe8Un524n9SyvFfSzcST80PEyqBoF8= Received: from PH7PR17CA0024.namprd17.prod.outlook.com (2603:10b6:510:324::21) by SA1PR12MB8841.namprd12.prod.outlook.com (2603:10b6:806:376::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:07:40 +0000 Received: from SN1PEPF0002BA4F.namprd03.prod.outlook.com (2603:10b6:510:324:cafe::58) by PH7PR17CA0024.outlook.office365.com (2603:10b6:510:324::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.40 via Frontend Transport; Fri, 29 Mar 2024 01:07:40 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4F.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:07:40 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:07:38 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 05/17] x86/resctrl: Introduce the interface to display the assignment state Date: Thu, 28 Mar 2024 20:06:38 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4F:EE_|SA1PR12MB8841:EE_ X-MS-Office365-Filtering-Correlation-Id: 5f9a7593-9e2c-4678-af58-08dc4f8ca19b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: W8x9jkMMfwgCrFkyRDZzepLYvLt2QkU1odjcUCkMKKyivvdpZccLH4NmiVvjayiee3OUuQH7rd8/Y1C/Sv4OgqyaOmJZio2vKyHOqLl2akr4ImoeTAOZBsZeTZGqCrOJqc20pH7aqeoJNIzYnXjJWi1bdPJtrixr8SeK8yI9ZJNXumiE5JuzqNvGyySp1+iqgrllnl3q2c8DPLfVR/8Ltdhut17qtzsgsaKymnDpU9QuKMOIzkgO/a9sms//wEe+PcTsEu2VkHVaDK7MKqiVzyrzFgX1t86yvsIK8f88YzrH2o85CO2nM9IY8NmRgLY2YfCgIPYgtwqEWdgB+RSemrgtpwSxJP45M+yicqOlQJNhkqlSqp26AeSEuMuOv8TZg6pOa87MA9Srg5CRf6EjCEOGiePUXYuJIn+gG2RJ7BEKhzUBPJhmp22e96+C1GpGt5aDw3OKFwW/uSmbdakEkO+le53x1L6x2/HaWF9A0aEFCRZ17wTbN3/XLfmrc4p/+IDSrvHLBvjhT3dFk3zhML+s6QpbwQNZy10IAyD8GbuS0fpTVCwV3gEEExWkj0f/mLQNPQgHxWc19GTruYvOAsutUjbYsXBPrXDiWS9VwTV3Op1rkSpaPVo0On7sZHtFygjo0gmonynUFTIvIB/koKZTW7IbYLFHOTHKwGvIPmcwNX5r+YKh1P5PvcY/SnMPWTtGyhLkZnqlSRZ2AUnGdZIrsrydF0+Flu1heSAjP7nPeHIUOgNFRbZkmGIdFCIk X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(376005)(1800799015)(36860700004)(7416005)(82310400014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:07:40.4493 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5f9a7593-9e2c-4678-af58-08dc4f8ca19b X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4F.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR12MB8841 Content-Type: text/plain; charset="utf-8" The ABMC feature provides an option to the user to assign an RMID to the hardware counter and monitor the bandwidth for a longer duration. System can be in only one mode at a time (Legacy Monitor mode or ABMC mode). By default, ABMC mode is disabled. Provide an interface to display the monitor mode on the system. $cat /sys/fs/resctrl/info/L3_MON/mbm_assign abmc When the feature is enabled $cat /sys/fs/resctrl/info/L3_MON/mbm_assign [abmc] Signed-off-by: Babu Moger --- v3: New patch to display ABMC capability. --- Documentation/arch/x86/resctrl.rst | 5 +++++ arch/x86/kernel/cpu/resctrl/monitor.c | 4 +++- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 17 +++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/re= sctrl.rst index 68df7751d1f5..cd973a013525 100644 --- a/Documentation/arch/x86/resctrl.rst +++ b/Documentation/arch/x86/resctrl.rst @@ -257,6 +257,11 @@ with the following files: # cat /sys/fs/resctrl/info/L3_MON/mbm_local_bytes_config 0=3D0x30;1=3D0x30;3=3D0x15;4=3D0x15 =20 +"mbm_assign": + Available when assignable monitoring features are supported. + Reports the list of assignable features supported and the enclosed bracke= ts + indicate the feature is enabled. + "max_threshold_occupancy": Read/write file provides the largest value (in bytes) at which a previously used LLC_occupancy diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/re= sctrl/monitor.c index 735b449039c1..48d1957ea5a3 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -1058,8 +1058,10 @@ int __init rdt_get_mon_l3_config(struct rdt_resource= *r) RFTYPE_MON_INFO | RFTYPE_RES_CACHE); } =20 - if (resctrl_arch_has_abmc(r)) + if (resctrl_arch_has_abmc(r)) { r->mbm_assign_capable =3D ABMC_ASSIGN; + resctrl_file_fflags_init("mbm_assign", RFTYPE_MON_INFO); + } } =20 l3_mon_evt_init(r); diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index dda71fb6c10e..5ec807e8dd38 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -846,6 +846,17 @@ static int rdtgroup_rmid_show(struct kernfs_open_file = *of, return ret; } =20 +static int rdtgroup_mbm_assign_show(struct kernfs_open_file *of, + struct seq_file *s, void *v) +{ + struct rdt_resource *r =3D of->kn->parent->priv; + + if (r->mbm_assign_capable) + seq_puts(s, "abmc\n"); + + return 0; +} + #ifdef CONFIG_PROC_CPU_RESCTRL =20 /* @@ -1903,6 +1914,12 @@ static struct rftype res_common_files[] =3D { .seq_show =3D mbm_local_bytes_config_show, .write =3D mbm_local_bytes_config_write, }, + { + .name =3D "mbm_assign", + .mode =3D 0444, + .kf_ops =3D &rdtgroup_kf_single_ops, + .seq_show =3D rdtgroup_mbm_assign_show, + }, { .name =3D "cpus", .mode =3D 0644, --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2086.outbound.protection.outlook.com [40.107.244.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8C3CA24A12; Fri, 29 Mar 2024 01:07:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674472; cv=fail; b=tKjc6NPjTl4SG7dXeBg7uCqyODEgKukzrE2cMQjhC4g90dKHDtbhKO5ABZt4sELA3ZcwiH/391H9OziCTuo+4knrpfia9kEHyHvKLoHi9BFTQsdipEiTFqgROCrHmY2ZmrOwLV3yEbuvzn3skWmnkwotqk4JSSQMbwH95Y9jhuk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674472; c=relaxed/simple; bh=C4LyNBFmchTqWXR/XFGHRJRH4Yo1dQidF8A5D7/2OgY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=tJ2NeWv8UV4qcT4wuBKvUPRuKdXjKV4c8gDsRrhgfYJZkRiq8CJbfgsZ9KZDfqfZGBMVTU1/BSOIznbAoShonTRByNnRqHPk/240J9HToPu2r/CBGtk2GaZgK5ltnVLg+iISP+Zc+QhmCP6+PsMpE80qXH7jLNgIF8ZzlG1f9io= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=F3PYjf62; arc=fail smtp.client-ip=40.107.244.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="F3PYjf62" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CFvgX2wVelfn5O52FRjuloTQ57f/IPAOQ0eI9kfvl4/OBbmhwHkNP2hvMODNWgKeb07Sr0CIK3CCpuWuRRffF7QqRJn/zc9GPwEkwDyLb3KbjUwDE7I34ZgjMbiOp7Uo7PRnG+0Kw7Qgba0w2nU1MH6/2Y/q6DoInSjVl+3J0TYRLH6XxBUcXh8W8cJU506WQPmfxCg9uUkbRBNAros+PACJ605Pyf3axa1ZaME5rlzB1xsxxyZvIF8R++n1hKBt715m4pPZLL81NNEkddy5S1OHneixf9+tP4wCVgENdtQgDTfeWtbCleDMEOr80dA2MV3dTvMD+TJT2+NOnNuFmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7y7VzAJLf9MvKpFI92d69MmkXi82yAtuTJT50MWtGqQ=; b=be9VqUsI/i3arqinpE5JTPylu/3tE7JcG+upNv9b+jjDK2JyS354f3JnULzQ3KDrcsjO5BJAiMT1acIiXjnK28kvMcTvxFQiuumnxMzFajD6OG1MPm6k/e1PhaVXoIxIFsA2aQsvyzOCk62nniFRrp88zGDmctuiMgtARa00Ijzt/rB7p134F01dpjwyRc+U/zjjSd/kO9XekIQlHhdZXTFA2Vcqi8UJCATHWD7GTX7L8zvzeEiyFmKOz76JE2q49v7p2D3EZpS2MVHwhpkSDVwBjWt3kFzjONHE62xmtGgEu90vGmjvtroiH91FxhvQpMPernOwhfhvCuOSseYgZA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7y7VzAJLf9MvKpFI92d69MmkXi82yAtuTJT50MWtGqQ=; b=F3PYjf62ku5+l5PYb3eqaE7oAqtrugFUTIbeGUWJ5mdbeNVq2CU3G8QYApSH3EBdjtZ/rjRPm8+m0mbb7GqTk2Yd5JrMEWiq4UASxf+QrHwN/WSqtjZZ5bYid2a+4Uukyq7N523qccAtcxwT6TuLPkpZV2u9YGPxtuSbYfFWJaA= Received: from PH0PR07CA0022.namprd07.prod.outlook.com (2603:10b6:510:5::27) by SJ0PR12MB6903.namprd12.prod.outlook.com (2603:10b6:a03:485::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.38; Fri, 29 Mar 2024 01:07:48 +0000 Received: from SN1PEPF0002BA4D.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::c2) by PH0PR07CA0022.outlook.office365.com (2603:10b6:510:5::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.38 via Frontend Transport; Fri, 29 Mar 2024 01:07:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4D.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:07:48 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:07:46 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 06/17] x86/resctrl: Introduce interface to display number of ABMC counters Date: Thu, 28 Mar 2024 20:06:39 -0500 Message-ID: <8d3e07ecaf178ca0a42894d6d07a4f047bb3e689.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4D:EE_|SJ0PR12MB6903:EE_ X-MS-Office365-Filtering-Correlation-Id: 6130b658-f891-45de-5172-08dc4f8ca621 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lHwHZz3t/hXWP27ZSRzm2OSx3kva1dllVa/xMdjFN54JswJrsfVA+xybLTJS5BejPZXZNSsfswaRgO+PyiIWgtJllO4eQtzyjEdwAEisAsAPAUo4m09Rqj9FpEx/WFgOWNKoxa0jUDq2Givw5iHHN3cnSO88Edtedlb9DI1byBYmb5mgbrsjr4Hhw1wZTzwgcugWTfN8wJm7Qg4jOj62LHM7ksuVH1Oqg2CI5Wnyir+uunz6VUGCsr+tJwOUx2UScJAxD9/2ndTU6NnWsiUbsPAHMnc7ELqg+CRLyPUMWRBTV9g8isb+cnVsfqk4kjLG0D1WPXfrdXnu1Qqfzbd6GxI97UHGuC2zx6CCBjOuvRJRl2fBXDhgQuG3+S3yWI1a/O8fxS566whjwBoYI0jUK1cNyWU0BSE5WZqjFAIY/629ulDdm7bL7QFiVVxvXfwHyOjOHhWFIQzGApuztWJ1mAhk3azby0M3dGILu1Bnd3qXi7flZDCni0+OKMXl2SNR6kLRRC96qvRW/Zi6AUJI9yCC/I7BCAa5hunmSyT8VmUsbTqGpV5Sjb7/8G+LkuXZuZOaNGqI+RfVKYsNUky6YRSQTmlG4YRbJEQBjGQ/WNMCdI2OjDh6vdZS44jMRIN0O68Kr8J9VFyDfHPk/BgXGMVfcX7w16IPwtYxbWz4wG4XWfKkxaC2VtU3LM2zfPyrF6A3ZJREPWIbHNt+8ckNj+5f7EWNBU5jRVX+zxIZryL3Xgpa9d4fSOu6yMy36O6+ X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(1800799015)(7416005)(376005)(36860700004)(82310400014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:07:48.0359 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6130b658-f891-45de-5172-08dc4f8ca621 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR12MB6903 Content-Type: text/plain; charset="utf-8" The ABMC feature provides an option to the user to pin (or assign) the RMID to the hardware counter and monitor the bandwidth for a longer duration. There are only a limited number of hardware counters. Provide the interface to display the number of ABMC counters supported. Signed-off-by: Babu Moger --- v3: Changed the field name to mbm_assign_cntrs. v2: Changed the field name to mbm_assignable_counters from abmc_counters. --- Documentation/arch/x86/resctrl.rst | 4 ++++ arch/x86/kernel/cpu/resctrl/monitor.c | 1 + arch/x86/kernel/cpu/resctrl/rdtgroup.c | 16 ++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/re= sctrl.rst index cd973a013525..e06ffddb64f6 100644 --- a/Documentation/arch/x86/resctrl.rst +++ b/Documentation/arch/x86/resctrl.rst @@ -262,6 +262,10 @@ with the following files: Reports the list of assignable features supported and the enclosed bracke= ts indicate the feature is enabled. =20 +"mbm_assign_cntrs": + The number of assignable counters available when the assignable monitoring + feature is supported. + "max_threshold_occupancy": Read/write file provides the largest value (in bytes) at which a previously used LLC_occupancy diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/re= sctrl/monitor.c index 48d1957ea5a3..56dc49021540 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -1061,6 +1061,7 @@ int __init rdt_get_mon_l3_config(struct rdt_resource = *r) if (resctrl_arch_has_abmc(r)) { r->mbm_assign_capable =3D ABMC_ASSIGN; resctrl_file_fflags_init("mbm_assign", RFTYPE_MON_INFO); + resctrl_file_fflags_init("mbm_assign_cntrs", RFTYPE_MON_INFO); } } =20 diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 5ec807e8dd38..05f551bc316e 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -857,6 +857,16 @@ static int rdtgroup_mbm_assign_show(struct kernfs_open= _file *of, return 0; } =20 +static int rdtgroup_mbm_assign_cntrs_show(struct kernfs_open_file *of, + struct seq_file *s, void *v) +{ + struct rdt_resource *r =3D of->kn->parent->priv; + + seq_printf(s, "%d\n", r->mbm_assign_cntrs); + + return 0; +} + #ifdef CONFIG_PROC_CPU_RESCTRL =20 /* @@ -1920,6 +1930,12 @@ static struct rftype res_common_files[] =3D { .kf_ops =3D &rdtgroup_kf_single_ops, .seq_show =3D rdtgroup_mbm_assign_show, }, + { + .name =3D "mbm_assign_cntrs", + .mode =3D 0444, + .kf_ops =3D &rdtgroup_kf_single_ops, + .seq_show =3D rdtgroup_mbm_assign_cntrs_show, + }, { .name =3D "cpus", .mode =3D 0644, --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM04-MW2-obe.outbound.protection.outlook.com (mail-mw2nam04on2086.outbound.protection.outlook.com [40.107.101.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4025431A94; Fri, 29 Mar 2024 01:07:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.101.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674480; cv=fail; b=k8GGma4PRyUfDPrc6ft44fjH7DjGJwG8NduIq+xx2/WJ52ywrpQKJSV5oETF4Ru6Vu4G9u91NdS1rjR+d2hk1sp0y+x7DnVNy/s9FfS2cxL90YiDdcv3GH3fOBmM71LcJ3PLtOGXGPr8RNt72Bf/Hv29VLb72hVUzYO4Kh+SOSk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674480; c=relaxed/simple; bh=orTPKa/rxOGUD0zgLlNhxB/OGnhL//AL7AeKvxiwBAE=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=gSxN8tzc5t+Z/E46rkRJzl4s0Zhx3HNKTn/cqRUckQw/5ijIp1QzYWNL2JCPpBuj+pgwSw3WFUSdr5rwLUSdvPa9/PM0pnOO1nw0Kidt+jpTw34dWVEePKjzq+HnJgPAG3lpXxfGZYWVk4LiCmQ8md3foptz0dZcktt/F19Ev4E= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=zu/Pt+Em; arc=fail smtp.client-ip=40.107.101.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="zu/Pt+Em" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KkTEscBjp1vWIIwNhUvvck1/mT9oUTwxHPEgtiMHJ8h2zDhGYlyLMdu4nuGRUFM0z0fAYgG8bFIhMPv0p8Hk6XCW7FcT7Y/E4EmjujpsBVsTW47f9Yjey4VvqBghk9qS/cdSytsNJoO0owrKRZWRH7B0JuTBmklo0t5Lm3ZQ6GMwJppjp42E1S+dDpBLzufVoDDTmgTkLrkmwPZJA0Ai+sNHzuNRrReE6WHoJNDIi3AhHnwFpaNTgrrjSp8EpSncXg4ordqjjIhlXPiNs3nFXUGl2o9Kp0CMx3uam5FtT63GZLe0pmOA88nm2NCrX/ojCTMK1COOg5R4KUO5o+dw6w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZOqeAm+AJamlf/q9XoaWWxNBK0JLDLGWa9K02fLDo44=; b=GAqX1uewKQm8rxry1/Z/kn3l4/WzQrXZU6K+j6IyCvB9EXF95C/g/UJc1YVs3+uCehPSHLrkwEN7yp4oinymAB5DKNbMnr/Lv85s0H1cDjTonkkW0wtQZI0hUG15PTbd5wlv+NzHr4UxBoXwaGYlWxScmIOCphZFAXPHDIiIENVD7/0YxtT61EAMuZj7ZzCq3aHvVnBMygQhjoLRMMHzBzMR5re9H9CPHFnWmYaOpq8RTURUKtlB12IDiNlbuphLTWTVItS/BoicXbdpw3FHak09HISOBFlZkwQI0le7jhr0L2/r95MU39UWClxmgIRjFf4lcOdUq2Dqv90WoKqc8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZOqeAm+AJamlf/q9XoaWWxNBK0JLDLGWa9K02fLDo44=; b=zu/Pt+EmuGXtvIBKBHKa/1bodTgzbXS+5ZALouhYoUvucBdUFt/JHAaG0gFCEo9j4ugCqyWQb47xrhw5ZfiQrjCYcgOwzhSy37wCdIsdhFMfVLumbMj/6lCTH7it279KebWuDJkp3R7eqV8Bz8xr+KSosuY2vyKLfWkjGF4iCnw= Received: from SA1PR05CA0010.namprd05.prod.outlook.com (2603:10b6:806:2d2::12) by CYYPR12MB9016.namprd12.prod.outlook.com (2603:10b6:930:c4::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:07:56 +0000 Received: from SN1PEPF0002BA4E.namprd03.prod.outlook.com (2603:10b6:806:2d2:cafe::4) by SA1PR05CA0010.outlook.office365.com (2603:10b6:806:2d2::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.39 via Frontend Transport; Fri, 29 Mar 2024 01:07:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4E.mail.protection.outlook.com (10.167.242.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:07:55 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:07:54 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 07/17] x86/resctrl: Add support to enable/disable ABMC feature Date: Thu, 28 Mar 2024 20:06:40 -0500 Message-ID: <0db75c94886da62b8da498ef159d8fe27b0b3811.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4E:EE_|CYYPR12MB9016:EE_ X-MS-Office365-Filtering-Correlation-Id: 2bbbad6e-61d9-494b-5d0a-08dc4f8caaa9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w9yX+p86N/lShnRsERWPNmFOFI/q+LegSRUfmA3dcwh6qkuetas4z8by6MiOjR9FBnOX20xrBT0/qjdBzcx/PiLdHpvpnHHsLO6lI8fPoNuHCjun13bDHN0wf8lEbBAbdKFv4hCFR6q7YezplQLUddPCyzLL+bCZycyxW9LfKpFLdIr10vnf/9ooONMsDDQlng9+T4/BwzlM9Jzk9yvEIkmq7MnKOGU3KF6sDeZwg/+z5nPMUWwOnBOavO5Vtwalgh6cnFS6mJ7m/u/QtZCUJZTGFOqE1JrJDiePpQWyDtS0nQPtloWji/65k4dHMMq00/8QVvqogPCA3eEh7/jJrkqi4b9qogEbEjZdY/7S/4IuuJKbkejG6v8IzGqOCc6p5Zj/rPw2a65OQv5UWG2dPeZnJ7NCQPt5vUDTaSTACq3c1etlKlTj3S0hgOj48kIY4kWsexrk7O+oQhRh73XiQ4JL76DY7TRFEjAky3WicBGp3rdUCqkWcAtTbMweDnTqEJD7alCQaC++VOAVDrXXB6TByxjzf//9P/05HT3xPeff7EbTJ5tc9z5bdyaLpfS3yf5SSVFGo/cixlD03dgPTu2r2+Azu/IrN79d7fi3REgWG4lr7f6O9DB4kVirmCLkJ1BFdRPG4Q4lUQXNSL7htnZo7WbaN7hgqGj47Huk9lPHN3C/K6uEM1GFCMdISnqpBkbg0xwVXFt65lNPdK/b4g== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(376005)(36860700004)(82310400014)(7416005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:07:55.6384 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2bbbad6e-61d9-494b-5d0a-08dc4f8caaa9 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4E.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CYYPR12MB9016 Content-Type: text/plain; charset="utf-8" Add the functionality to enable/disable ABMC feature. ABMC is enabled by setting enabled bit(0) in MSR L3_QOS_EXT_CFG. When the state of ABMC is changed, it must be changed to the updated value on all logical processors in the QOS Domain. The ABMC feature details are documented in APM listed below [1]. [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming Publication # 24593 Revision 3.41 section 19.3.3.3 Assignable Bandwidth Monitoring (ABMC). Signed-off-by: Babu Moger Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D206537 --- v3: No changes. v2: Few text changes in commit message. --- arch/x86/include/asm/msr-index.h | 1 + arch/x86/kernel/cpu/resctrl/internal.h | 12 ++++ arch/x86/kernel/cpu/resctrl/rdtgroup.c | 76 +++++++++++++++++++++++++- 3 files changed, 88 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-in= dex.h index 05956bd8bacf..f16ee50b1a23 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -1165,6 +1165,7 @@ #define MSR_IA32_MBA_BW_BASE 0xc0000200 #define MSR_IA32_SMBA_BW_BASE 0xc0000280 #define MSR_IA32_EVT_CFG_BASE 0xc0000400 +#define MSR_IA32_L3_QOS_EXT_CFG 0xc00003ff =20 /* MSR_IA32_VMX_MISC bits */ #define MSR_IA32_VMX_MISC_INTEL_PT (1ULL << 14) diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index 722388621403..8238ee437369 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -96,6 +96,9 @@ cpumask_any_housekeeping(const struct cpumask *mask, int = exclude_cpu) return cpu; } =20 +/* ABMC ENABLE */ +#define ABMC_ENABLE BIT(0) + struct rdt_fs_context { struct kernfs_fs_context kfc; bool enable_cdpl2; @@ -433,6 +436,7 @@ struct rdt_parse_data { * @mbm_cfg_mask: Bandwidth sources that can be tracked when Bandwidth * Monitoring Event Configuration (BMEC) is supported. * @cdp_enabled: CDP state of this resource + * @abmc_enabled: ABMC feature is enabled * * Members of this structure are either private to the architecture * e.g. mbm_width, or accessed via helpers that provide abstraction. e.g. @@ -448,6 +452,7 @@ struct rdt_hw_resource { unsigned int mbm_width; unsigned int mbm_cfg_mask; bool cdp_enabled; + bool abmc_enabled; }; =20 static inline struct rdt_hw_resource *resctrl_to_arch_res(struct rdt_resou= rce *r) @@ -491,6 +496,13 @@ static inline bool resctrl_arch_get_cdp_enabled(enum r= esctrl_res_level l) =20 int resctrl_arch_set_cdp_enabled(enum resctrl_res_level l, bool enable); =20 +static inline bool resctrl_arch_get_abmc_enabled(enum resctrl_res_level l) +{ + return rdt_resources_all[l].abmc_enabled; +} + +int resctrl_arch_set_abmc_enabled(enum resctrl_res_level l, bool enable); + /* * To return the common struct rdt_resource, which is contained in struct * rdt_hw_resource, walk the resctrl member of struct rdt_hw_resource. diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 05f551bc316e..f49073c86884 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -850,9 +850,15 @@ static int rdtgroup_mbm_assign_show(struct kernfs_open= _file *of, struct seq_file *s, void *v) { struct rdt_resource *r =3D of->kn->parent->priv; + struct rdt_hw_resource *hw_res =3D resctrl_to_arch_res(r); =20 - if (r->mbm_assign_capable) + if (r->mbm_assign_capable && hw_res->abmc_enabled) { + seq_puts(s, "[abmc]\n"); + seq_puts(s, "legacy_mbm\n"); + } else if (r->mbm_assign_capable) { seq_puts(s, "abmc\n"); + seq_puts(s, "[legacy_mbm]\n"); + } =20 return 0; } @@ -2433,6 +2439,74 @@ int resctrl_arch_set_cdp_enabled(enum resctrl_res_le= vel l, bool enable) return 0; } =20 +static void resctrl_abmc_msrwrite(void *arg) +{ + bool *enable =3D arg; + u64 msrval; + + rdmsrl(MSR_IA32_L3_QOS_EXT_CFG, msrval); + + if (*enable) + msrval |=3D ABMC_ENABLE; + else + msrval &=3D ~ABMC_ENABLE; + + wrmsrl(MSR_IA32_L3_QOS_EXT_CFG, msrval); +} + +static int resctrl_abmc_setup(enum resctrl_res_level l, bool enable) +{ + struct rdt_resource *r =3D &rdt_resources_all[l].r_resctrl; + struct rdt_domain *d; + + /* Update QOS_CFG MSR on all the CPUs in cpu_mask */ + list_for_each_entry(d, &r->domains, list) { + on_each_cpu_mask(&d->cpu_mask, resctrl_abmc_msrwrite, &enable, 1); + resctrl_arch_reset_rmid_all(r, d); + } + + return 0; +} + +static int resctrl_abmc_enable(enum resctrl_res_level l) +{ + struct rdt_hw_resource *hw_res =3D &rdt_resources_all[l]; + int ret =3D 0; + + if (!hw_res->abmc_enabled) { + ret =3D resctrl_abmc_setup(l, true); + if (!ret) + hw_res->abmc_enabled =3D true; + } + + return ret; +} + +static void resctrl_abmc_disable(enum resctrl_res_level l) +{ + struct rdt_hw_resource *hw_res =3D &rdt_resources_all[l]; + + if (hw_res->abmc_enabled) { + resctrl_abmc_setup(l, false); + hw_res->abmc_enabled =3D false; + } +} + +int resctrl_arch_set_abmc_enabled(enum resctrl_res_level l, bool enable) +{ + struct rdt_hw_resource *hw_res =3D &rdt_resources_all[l]; + + if (!hw_res->r_resctrl.mbm_assign_capable) + return -EINVAL; + + if (enable) + return resctrl_abmc_enable(l); + + resctrl_abmc_disable(l); + + return 0; +} + /* * We don't allow rdtgroup directories to be created anywhere * except the root directory. Thus when looking for the rdtgroup --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2086.outbound.protection.outlook.com [40.107.237.86]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2C0AB12E48; Fri, 29 Mar 2024 01:08:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.237.86 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674517; cv=fail; b=tlbdQG9BnFoasBy3JjpSn9Atf6V/5gbCY6w7CHKdPteOZsRtylg9zOYyTSvfXyBD2Epk5ZWmPEfFDwAWhk5rlT0ERC2dBNk6s9ZzCQzY9plGShWuhrnKriK1y8Nfg4rHDuWfhu0zoeYxY/r9hro/EW1D0TekM4d2hxoQTrkthP4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674517; c=relaxed/simple; bh=uNLT273ei5F5WXEcFnGe38XMPHSWtJMP3hSUH+lYJso=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=NMZS3WfwQfGVwDO92hJE9b2yBCGy+QfTn0sc1T0IShYYbuGcO+c5nvpwhtK1naYTy3SfRpV4VOw4kroZBIw8lrOUbwW40IQN7RAYLZcZJYZGweL3xvJSEmR1H48UCJfYVWLUe0/3sIkKie7+7s1NMPTmEJjsRt2kxLZfdDhTFL4= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=tb1T1+3R; arc=fail smtp.client-ip=40.107.237.86 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="tb1T1+3R" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LQmp1NeQlJhVloZHAknHEf6CJwfZ9Qe6PyfRG5DFMzdHS9QoTiIF6aKIweH7r7JJ/Q47WnSL5IuuYuKzwjsT/7XPlbLS7mZ2bQ7wjybWtFoFQKKcAGIhqWOKyif4yE0agSvGhhpXU+UYwQkou4gcEUwNLk5e3RFvUyivSGXl1PWIYcUTfNGxeiFpJacsYqsPSJ6lekFih8y0ILEqpV106w2PxUtGtbqwfA6en7i6d4TxOygsL0jmv24EJ7DpSIKBKmqetW8Mq7bcfR1m2rnwZBpWSOMB6DnslCvEX5sP28Fg1TOk/U7WI4UUr6tMKe6SwigKCiqTWyVl2/FBxPLVwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=S9XA8c5++shykdTd+fjFtLyX3ZiXJu97t/f8LD8+RRA=; b=gJH6SXG2NYmDrHwuqV7ZR5ikQfHzHqDLYWIpZCU+FsylruSE5Crd8765bYu3VJich08G91+0Y6URABABUjfB722tQjvpIPCMKHi6oO5KQoc8uIVi7yM1OWdmH1HUudQ6zJRknVLRlLBR147cPfWc5EhCSAq0XmLjfNJn4MR2qdht51cNVVvfSyDrX0ZF5CPOna9sKf7VnSJUFUoVvL1G4o8PTKWPsu60yYkQgd3P+JG6DjdcZx5AN7DsWs1IKgkPVf0U7CG+7s3L8pSsjDe9Y2lE7R2fyyDvl9feM9+TWhRF9SsCWdiSioJaGubOt6OtCqHjO4wffCjP3oKFp20Q8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=S9XA8c5++shykdTd+fjFtLyX3ZiXJu97t/f8LD8+RRA=; b=tb1T1+3RXpgcwxQh5KzDGk7OiK37/A+sJmgMtycbOfCfYsh5REbKmoRg95l/xZlNan7pxgGGQlmArgfKdo/lD5VY0f12rsSG5r2UnV9M6M5Ndp0CeVlhEZQIPJkKZ/vqtrJmC4O7WDPzgav/KwPp4y+s3BEglNzxJoQw5wV6mBY= Received: from PH0PR07CA0005.namprd07.prod.outlook.com (2603:10b6:510:5::10) by PH8PR12MB8605.namprd12.prod.outlook.com (2603:10b6:510:1cc::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:08:32 +0000 Received: from SN1PEPF0002BA4D.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::f2) by PH0PR07CA0005.outlook.office365.com (2603:10b6:510:5::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.38 via Frontend Transport; Fri, 29 Mar 2024 01:08:32 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4D.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:08:32 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:08:01 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 08/17] x86/resctrl: Initialize assignable counters bitmap Date: Thu, 28 Mar 2024 20:06:41 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4D:EE_|PH8PR12MB8605:EE_ X-MS-Office365-Filtering-Correlation-Id: 3dce4207-a587-45b7-477c-08dc4f8cc0b8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: wwaVqX/l/uzzFmfIqp6KHS/QNtzEfKTyuhhBnmjsbFB4usKWke3PA3wQ/04DwHCr6jIrbo3hduDsjypf0km7BFkQ4h7rzF2TlV6cZBPADNqbHuWeYpTKGh1yyWs/JfpGNHvCvsmggxgNgKZKFSK6jHxguybJiVG8q1Mfx3VhbRz6OZ9sTA2t55pU+GJsXzcBDJYWgEx/jV3mbU2p8bsOXDAK69Fcdi2qxj6Z1q9X542g5mrm9aMarnZIMUArzMilGR+V7bZAzWP0l1vmBFXANtjdQ14sMUzwbzF63RZXvIJS+8byY1qFxTWQIpp2m/mwebnZcCTEpgRG3Eadze7xUTxZHmhyoEkzNJlE7diZ7yJ4Ab1WhtQVZR5o7HAXWWbke8ohGDaXyB8Jgnd00Avwz/KjMWqDkCCLZ1nkZZ9t7avAOA3jW3+WD4pdytEcGq1IemTHFYykDm+i+s7UQynBZ/HUnYy6k91PsWpbHvgpSVwy0VTvZHgwHC3PnesizKfG9ag6WDQ7QROnGwd7d59JHl+8U0yMsJqDT2fjrdpENtPpa3yOObX6BA/JVVORKY8rDl01CmSkiYO6wMT5cjB2kM4RvSSv/Rub2axgpraMwDTinV0igbzyMqv633gfWn261nvyOuvZvBAMTxN2t2Sma6b8YEFfSH72BIPkUFTaqDi75sGkicx9WnJFzdFgeU1XlSSGMBIxMokRuqz3k2wtqs2uGu3GNTJL1EKOsPX+Ox5EjkaFMLlV7cPHACkVHvt8 X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(7416005)(1800799015)(82310400014)(376005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:08:32.6460 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 3dce4207-a587-45b7-477c-08dc4f8cc0b8 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH8PR12MB8605 Content-Type: text/plain; charset="utf-8" AMD Hardware provides a set of counters when the ABMC feature is supported. These counters are used for assigning events to the resctrl group. Introduce the bitmap assign_cntrs_free_map to allocate and free the counters. Signed-off-by: Babu Moger --- v3: Changed the bitmap name to assign_cntrs_free_map. Removed abmc from the name. v2: Changed the bitmap name to assignable_counter_free_map from abmc_counter_free_map. --- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index f49073c86884..2c7583e7b541 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -186,6 +186,22 @@ bool closid_allocated(unsigned int closid) return !test_bit(closid, &closid_free_map); } =20 +static u64 assign_cntrs_free_map; +static u32 assign_cntrs_free_map_len; + +static void assign_cntrs_init(void) +{ + struct rdt_resource *r =3D &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; + + if (r->mbm_assign_cntrs > 64) { + r->mbm_assign_cntrs =3D 64; + WARN(1, "Cannot support more than 64 Assignable counters\n"); + } + + assign_cntrs_free_map =3D BIT_MASK(r->mbm_assign_cntrs) - 1; + assign_cntrs_free_map_len =3D r->mbm_assign_cntrs; +} + /** * rdtgroup_mode_by_closid - Return mode of resource group with closid * @closid: closid if the resource group @@ -2459,6 +2475,9 @@ static int resctrl_abmc_setup(enum resctrl_res_level = l, bool enable) struct rdt_resource *r =3D &rdt_resources_all[l].r_resctrl; struct rdt_domain *d; =20 + /* Reset the counters bitmap */ + assign_cntrs_init(); + /* Update QOS_CFG MSR on all the CPUs in cpu_mask */ list_for_each_entry(d, &r->domains, list) { on_each_cpu_mask(&d->cpu_mask, resctrl_abmc_msrwrite, &enable, 1); --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2073.outbound.protection.outlook.com [40.107.223.73]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0002F182A1; Fri, 29 Mar 2024 01:08:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.223.73 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674523; cv=fail; b=oqd+INDKbdvGO+jN7yFD6a4NUsP2VTLuIupOcX9b4ZFuyoH/+tyIACrEXEHCluBebU+kDc85oMMtipkKo2vxpZwNAmaLpQfHB/fUJXSXrjsiSgL7xrtJOV14YMuMWZVyxYiPXqTdMGTbpAEtUSBHChjtarRjYloYBocLhAjvUqg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674523; c=relaxed/simple; bh=vtNjCwUQ+CKibs3qpKRGOeaWIXIMMiv2OK6L/0OzHD0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=R408Sq7oCpGIvIH9NkTjBryQ7TWFXx3feVxQWqEVyf4LuvnD+b5jMGd/ZbbukdddqLizjpAKABNWMNohr3Fkq1+0b6Ds3k8/NW90prvxWF2aSo5VjhPMJxX6KmTLu0+GbLFyELxPebUfuHAx+yFgUjM0sBH+FvDySyjWWr//W6o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=V9FioGmE; arc=fail smtp.client-ip=40.107.223.73 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="V9FioGmE" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lyvNqyXiVeyQSfHgPX472Wop36zfyjKvybADIPC4mI7p+LEM5GGTwyhkjXz1ZjoQC+LvPADwkoRFrR1tiFfKWLPG9hcrFD5sNAPJHF+tfj/5ENmyP+kdpDUE882jZtEKyR0lJJeQ5c88OphZzQ40fHh5l1ddK3YBXMj2urqeSGewL066RKhiIjJUI3s+uwQIBERQPJnz8HXMPiiCfIcuqc2nMP2DYQg9fEgxcmphhwa1UorlsBDT9cLIrjmit43ZB5gY+HWlRibA1ahJ5puMg2ljwBrhIB1nIpyw4E/V5J9+WJ9sVb6px7VuXH27xgK9TeZa7YzI8jz2GEvPdKoiGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/gtukF0LjERY6OcBlY64lGm6Au6dEWQWogg/RsMkLas=; b=EbzMX7eWpCtN0onRVUDlr+eygqvImtvu3qD3qfJt+ZsxDQfTd72gl8CS6tUFF8++7z56OHmURg6D4N79f02b15u+8Ym8g1iEw4t/O2GvkmPS/W4H0GU6Wt0FNRsGcv1dfESk2Tz4/+4kfgnI2UjG8SYnipTYFb2Z7u64kny4p+tlKaym5aoZhILNCBUBTxnkru//Gt3IBW5NoY8YhXG/UxYsPWS1X2kzXoupXH0qdYWSLssS2oXE3LLAlE9vdGfDn0BhX8wCzfUaqnkQWWjb+VYiH4n0MC9lXV8xGIbsBjcmlASmqDajr9Gln6Ka7OQ3/EgFEr6tATcTn9J7cdgIig== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/gtukF0LjERY6OcBlY64lGm6Au6dEWQWogg/RsMkLas=; b=V9FioGmEjBUo4rrviY4dbkRIKYgDdw8vdlOwncMIhgi/b96PHgltFdsmU1LsAFoUCGjfX3vioIuswTtIZFUaimQV0dAx3p37loPTg0EUw4MWytmVr32FgL1uh5oYNRpCszluMbWa4ht7DQlYDdp4b0D7mFKQFEI5vzFH0cR3ns8= Received: from PH0PR07CA0008.namprd07.prod.outlook.com (2603:10b6:510:5::13) by PH7PR12MB9125.namprd12.prod.outlook.com (2603:10b6:510:2f4::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.39; Fri, 29 Mar 2024 01:08:39 +0000 Received: from SN1PEPF0002BA4D.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::c4) by PH0PR07CA0008.outlook.office365.com (2603:10b6:510:5::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.38 via Frontend Transport; Fri, 29 Mar 2024 01:08:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4D.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:08:39 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:08:32 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 09/17] x86/resctrl: Introduce assign state for the mon group Date: Thu, 28 Mar 2024 20:06:42 -0500 Message-ID: <1a6bc747da259e8b3a85de339bc1d6bf94995c53.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4D:EE_|PH7PR12MB9125:EE_ X-MS-Office365-Filtering-Correlation-Id: 9866e5cd-a8bd-4260-a872-08dc4f8cc482 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: BTBpFpEOvOqViopWa+7wF3pS+lNPEAPUxMr6c8SB8SVvwMNmC4rwMjMED1BBPs/d156SeH/MlsAG9fPJi2GpiH1Z3zAYqzEt0wAHVG7gpGey7bQHBjMPwBKnd0tbNF9oQdRX3VwfYfFA1uPISa3iRb44GZckiKxNkjyvrh3xWBu76TsS3pfJ3olfgP8taKVTq0ImBYQ6pBEhUmc72/Qf4c2oVVxDPzPv498Q1UNGo9WNhvy4aSezimjm+4Vyn5hYsrN+8q7ydNfO0FzIbP3DslG2izt+7NqJcNcZ5MfwBPR+2gt8AF6oijAWXuXLvkw/b+F0kA/VlE5E0dpfGcgfYtOzS5G8TDV3PGM2PmLHgDOAEEN0BaaV5XEAzPEdOX9amxMxjcdvW8TQFuyJwSv2nSBJJWAPiRKydv6TF6Ogt1GmmbLNJuyREmzJoSkJiPu68WIP668R8j6a0Xdf7zjTfbdYgrw7b4XPeszWFvFkv5eH52ycl9redZ5RcYk3BCVzfoY6Xbki6Ge7ib2g929JlZvmWNWmwjwBehz/hvl/CmOn5uAKNY1xepZKPEP88iFV7JWqrfOUdjeYTDFYTBk/Fq87j1ZOZIEXaDT1Di1LB4qHcKTSKNx75QP4J/Za3CXqak08xzT2W1XXtRYn7zr8SlWiXlhdpOwkN6cwigiGqRFUqmaBLhdn7oFUv8qrE3pQemg6vcH3inPEq63bfcbqcegd/q0ldDWlGNmAYEvy6N2n1b7rJvNousH31EW/VXRx X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(1800799015)(376005)(82310400014)(36860700004)(7416005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:08:39.0055 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 9866e5cd-a8bd-4260-a872-08dc4f8cc482 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB9125 Content-Type: text/plain; charset="utf-8" The ABMC feature provides an option to the user to assign an RMID to the hardware counter and monitor the bandwidth for the longer duration. The assigned RMID will be active until user unassigns the RMID. Add a new field assign_state in mongroup data structure to represent the assignment state of the group. This will be when ABMC feature is enabled. Signed-off-by: Babu Moger --- v3: Changed the field name to mon_state. Also thie state is not visible to users directly as part of out global assign approach. v2: Added check to display "Unsupported" when user tries to access monitor state when ABMC is not enabled. --- arch/x86/kernel/cpu/resctrl/internal.h | 9 +++++++++ arch/x86/kernel/cpu/resctrl/rdtgroup.c | 8 ++++++++ 2 files changed, 17 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index 8238ee437369..b559b3a4555e 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -99,6 +99,13 @@ cpumask_any_housekeeping(const struct cpumask *mask, int= exclude_cpu) /* ABMC ENABLE */ #define ABMC_ENABLE BIT(0) =20 +/* + * monitor group's state when ABMC is supported + */ +#define ASSIGN_NONE 0 +#define ASSIGN_TOTAL BIT(0) +#define ASSIGN_LOCAL BIT(1) + struct rdt_fs_context { struct kernfs_fs_context kfc; bool enable_cdpl2; @@ -202,12 +209,14 @@ enum rdtgrp_mode { * @parent: parent rdtgrp * @crdtgrp_list: child rdtgroup node list * @rmid: rmid for this rdtgroup + * @mon_state: Assignment state of the group */ struct mongroup { struct kernfs_node *mon_data_kn; struct rdtgroup *parent; struct list_head crdtgrp_list; u32 rmid; + u32 mon_state; }; =20 /** diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 2c7583e7b541..54ae2e6bf612 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -2473,6 +2473,7 @@ static void resctrl_abmc_msrwrite(void *arg) static int resctrl_abmc_setup(enum resctrl_res_level l, bool enable) { struct rdt_resource *r =3D &rdt_resources_all[l].r_resctrl; + struct rdtgroup *prgrp, *crgrp; struct rdt_domain *d; =20 /* Reset the counters bitmap */ @@ -2484,6 +2485,13 @@ static int resctrl_abmc_setup(enum resctrl_res_level= l, bool enable) resctrl_arch_reset_rmid_all(r, d); } =20 + /* Reset assign state for all the monitor groups */ + list_for_each_entry(prgrp, &rdt_all_groups, rdtgroup_list) { + prgrp->mon.mon_state =3D ASSIGN_NONE; + list_for_each_entry(crgrp, &prgrp->mon.crdtgrp_list, mon.crdtgrp_list) + crgrp->mon.mon_state =3D ASSIGN_NONE; + } + return 0; } =20 --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (mail-mw2nam12on2077.outbound.protection.outlook.com [40.107.244.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 81BD51CFB6; Fri, 29 Mar 2024 01:08:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.244.77 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674526; cv=fail; b=VbEn1xYJaVa8Ja2ytGCAMuBfy4eBs78rvz4S+eXP4+vehhLWN9B6URsHzo4YXWaT5JXBHZYq3ZbTYtGGtmXaYkvitwFZ+sSe2kuLf6UHKhOzDwXfGGzn1uMHOsxdQ8a2ANUqSBthReoXMFu2FG+KynyWtCjQ6FQFxqM891zF3Bc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674526; c=relaxed/simple; bh=r/5rjSZuCzCAO8cxdWccWOAHDeEiJkg6jHhIs01gKEY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WAfMNG3qVCZTd6UF1Tm3W7wfHESWZdRBtO8k6hHWO+WzFqfRY6uT5b9Ue5JEr+Sx8mQtOrD/et1L1Fk3sRBfoAvICg+7u1a0kwiSAAnrCx+3MQ7vVH+mZzOfiVtghOMqxqPt9heXufUhRHvOrM2PshheVPuY8yaeTkOllhSXVxA= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=xqvIfUwL; arc=fail smtp.client-ip=40.107.244.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="xqvIfUwL" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jaRItgFQc0PqvqQubB0/Q5R0KyqhBf2Zsu01FNqxKHrDbIhJYdXrnQQymbf+QbsHwAZ6AI1cWQcsih6F+YWxaDFT36OgMd6PY9TkwEZH2YyLUoGcEnoYFUUDKUfrkKrAbLXXWRM+fRYzE8kYvOeJthY4/tLrvn5cD9xeFbxueCpmxXQyRtdJ29ChVpYZrri8CC4MxooYf2ZdHqDLPt1UBNKGPIS+y3MIJg2qumDCYR7ZmfwMao7zDhk2ikK1fFFH7p90+Hi7svcsYpRa/TD1l3zhMjI6xZ6KgzMfl5D6oU8l/wCwS5WNNhe1+refqOxmKz4iPra7V5MR/mDMpW9pXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HedFJVVqnbUCjKdSohmg8x0ZB+9/aVwwEqQjp1bQ9PU=; b=jnGmp8VC1XhoBKJXQXMi442Z3S5QnSzTYSa66yEGzPqBBOER2V5Pev1QPD6YdQ/BMsTxxkIX5hhg37w17ar7coNuYGt4+tvutbyJSzWS8BFKBHH668lSiWaaXNj6E5b4seOMj5ASXzxa6KxFSOxHZaumUII6x8ys7FAyOuVfmddFPP4cfqH4TMzJWjotNESLesjCn/+QwBfmCSw3Oo6Dq9KpaztzdJtkywJQ8Mv/h1dqwBIcAQ2t9Lao8pHKBOEgWcOl8qw1cfEfKwjWWU1UCqiTblh9EjFdMBOhuQtQiYL48GPuanyurXOhh6wsCo22WCL0tY2lZTYL2iwf+xdNbw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HedFJVVqnbUCjKdSohmg8x0ZB+9/aVwwEqQjp1bQ9PU=; b=xqvIfUwL/EVJy2OtVo204xCQxm8ecRamk2RsWD0eOHegysbfG3F6VowFi9PNDNirZ4AVGZntENWi6EfLYJUNoApyzB0sY198/u4gyBa8P4ERF3USWaIdYlzxdOMeKz3sXlM56m6xn1oEZ1O3tjZfOlNSBPgptqyczclWSfUrlnY= Received: from PH0PR07CA0017.namprd07.prod.outlook.com (2603:10b6:510:5::22) by SJ2PR12MB9191.namprd12.prod.outlook.com (2603:10b6:a03:55a::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.31; Fri, 29 Mar 2024 01:08:42 +0000 Received: from SN1PEPF0002BA4D.namprd03.prod.outlook.com (2603:10b6:510:5:cafe::9e) by PH0PR07CA0017.outlook.office365.com (2603:10b6:510:5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.13 via Frontend Transport; Fri, 29 Mar 2024 01:08:41 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4D.mail.protection.outlook.com (10.167.242.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:08:41 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:08:40 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 10/17] x86/resctrl: Add data structures for ABMC assignment Date: Thu, 28 Mar 2024 20:06:43 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4D:EE_|SJ2PR12MB9191:EE_ X-MS-Office365-Filtering-Correlation-Id: f4348a0c-586c-4c2f-20de-08dc4f8cc61f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QyR55vAxHk8bBiGHITkYJtbiZ3Z7cGNfIGTmYPshe2Fl21uS6MrXfWKAQVPRe7KHJPtw9QFOj7l/iGWF0tF8gr0N8RrP2Mt+Uvqvhi+0r+cjLYBvK8PxysEj6/ER3CIJ+CavDJRSK/NjfKQdnvK9UB3eDClfY1UyGgtXw0itvEqrowSwNGeP5651bK67kFdjO/M+XUqY0/OWWFO0UC98Kw+FkhXDSYCF5zGQqS2S1dzPJyTfobSWObAHm/FLUrtVAqD44FnIzeBSOINbx+ViZZR45sddfqRzs6gaHeEVJkM6LLawGY0rQWLDbLCBX4SwCbblF4+ALN5F/iuk27WBta4TNaEA+b1NjYUG1+qweWof/KRwfeVhAagBoFQLa2wYq+H4K6knuG1TXRfXKEcf+aXtkR3mSWZMhbdUnCNtgwMa7mVn0uRGJI5AwphismTSqsY3jbFSTELkGstffYdwOUUVb49ai+MrWP+Cp5y5DnK13QjGJr/ee82fyVkqVLeSgUGsrpjBH8A03onnbhrfqWpWhrYS8O6kspLl7WC01pFsg5I0iFFkik70ZwtPlqPsGYjMV6LvfPbma7duGxEkRlqRClwB3zP1r1oO/YR/TIu04RNYJofIveEwkoCRAsPwZl3nd5ZAC/NihdYDk6zxiSd/zMpo45GHdM5AKjhcDjPOJzntB7hubSvXwHFuoHSBO7fC+tBpOixrRZdrg7K5yg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(82310400014)(376005)(1800799015)(7416005)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:08:41.7087 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f4348a0c-586c-4c2f-20de-08dc4f8cc61f X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4D.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR12MB9191 ABMC (Bandwidth Monitoring Event Configuration) counters can be configured by writing to L3_QOS_ABMC_CFG MSR. When ABMC is enabled, the user can configure a counter by writing to L3_QOS_ABMC_CFG setting the CfgEn field while specifying the Bandwidth Source, Bandwidth Types, and Counter Identifier. Add the MSR definition and individual field definitions. MSR L3_QOS_ABMC_CFG (C000_03FDh) definitions. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Bits Mnemonic Description Access Type Reset Value =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D 63 CfgEn Configuration Enable R/W 0 62 CtrEn Counter Enable R/W 0 61:53 =E2=80=93 Reserved MBZ 0 52:48 CtrID Counter Identifier R/W 0 47 IsCOS BwSrc field is a COS R/W 0 (not an RMID) 46:44 =E2=80=93 Reserved MBZ 0 43:32 BwSrc Bandwidth Source R/W 0 (RMID or COS) 31:0 BwType Bandwidth types to R/W 0 track for this counter =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D The feature details are documentd in the APM listed below [1]. [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming Publication # 24593 Revision 3.41 section 19.3.3.3 Assignable Bandwidth Monitoring (ABMC). Signed-off-by: Babu Moger Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D206537 --- v3: No changes. v2: No changes. --- arch/x86/include/asm/msr-index.h | 1 + arch/x86/kernel/cpu/resctrl/internal.h | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/arch/x86/include/asm/msr-index.h b/arch/x86/include/asm/msr-in= dex.h index f16ee50b1a23..ab01abfab089 100644 --- a/arch/x86/include/asm/msr-index.h +++ b/arch/x86/include/asm/msr-index.h @@ -1166,6 +1166,7 @@ #define MSR_IA32_SMBA_BW_BASE 0xc0000280 #define MSR_IA32_EVT_CFG_BASE 0xc0000400 #define MSR_IA32_L3_QOS_EXT_CFG 0xc00003ff +#define MSR_IA32_L3_QOS_ABMC_CFG 0xc00003fd =20 /* MSR_IA32_VMX_MISC bits */ #define MSR_IA32_VMX_MISC_INTEL_PT (1ULL << 14) diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index b559b3a4555e..41b06d46ea74 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -106,6 +106,9 @@ cpumask_any_housekeeping(const struct cpumask *mask, in= t exclude_cpu) #define ASSIGN_TOTAL BIT(0) #define ASSIGN_LOCAL BIT(1) =20 +/* Maximum assignable counters per resctrl group */ +#define MAX_ASSIGN_CNTRS 2 + struct rdt_fs_context { struct kernfs_fs_context kfc; bool enable_cdpl2; @@ -210,6 +213,7 @@ enum rdtgrp_mode { * @crdtgrp_list: child rdtgroup node list * @rmid: rmid for this rdtgroup * @mon_state: Assignment state of the group + * @abmc_ctr_id: ABMC counterids assigned to this group */ struct mongroup { struct kernfs_node *mon_data_kn; @@ -217,6 +221,7 @@ struct mongroup { struct list_head crdtgrp_list; u32 rmid; u32 mon_state; + u32 abmc_ctr_id[MAX_ASSIGN_CNTRS]; }; =20 /** @@ -566,6 +571,24 @@ union cpuid_0x10_x_edx { unsigned int full; }; =20 +/* + * L3_QOS_ABMC_CFG MSR details. ABMC counters can be configured + * by writing to L3_QOS_ABMC_CFG. + */ +union l3_qos_abmc_cfg { + struct { + unsigned long bw_type :32, + bw_src :12, + rsvrd1 : 3, + is_cos : 1, + ctr_id : 5, + rsvrd : 9, + ctr_en : 1, + cfg_en : 1; + } split; + unsigned long full; +}; + void rdt_last_cmd_clear(void); void rdt_last_cmd_puts(const char *s); __printf(1, 2) --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (mail-mw2nam10on2077.outbound.protection.outlook.com [40.107.94.77]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CB01D11712; Fri, 29 Mar 2024 01:08:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.94.77 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674534; cv=fail; b=oPNqdikW3C+4Dgp6Kr5g8JBfv6PhGQX1QvVi8P6/0vqmK2WR9m8z3Oc8y4GAs4COt3RPvck3laXt+p7ePygDopQc2M8xul3FAT/1A9iigWGvIlQB4e0/ZugZgSLBHtWhPeV35kbQM/Sf1O1UpvAIEnAUiSBUwocli/wBvRxPaps= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674534; c=relaxed/simple; bh=ubP0nTDrPzrHJHEhpYf1hfdVM6r5YYhTeiSgdn5jAO4=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=mT5fkVNXwoLORQoCoJxpfOASB1h5Q73M/73vLAbbD/zMCrltVA9Q4xcHat8LZJcP/HT8J4J69WZR2TQ6814geqKkxM3KLX2QBNYEG5vO/e3vDzNVRZRWLyWvSQKCQGsjOpg9cezELbeIwnEvZyn3RcWx0YbY98YGDTk1MgWVRLE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=CEhoM5Mv; arc=fail smtp.client-ip=40.107.94.77 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="CEhoM5Mv" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eDR3NofOy0JSEJgx4/YuNcSHjOZ9u6HvlRRW1gCrE4PyC6w5GwPyspERyB4SvSwj5w3TZrWg1ZCJ1hk7+IN+sRzRUj3YqSPOdoGa34w3PuAGbdduUewHn0ULrbkdjSq9CVBd9HDudTB52vJKFpwvx1DrSWdt9Qkvil22mwu0CpF3ANWZnmK0S/ywkl8ZX19c+isJEzjIS4nJjAgSZIbwEezY4v6Od4GdK98FrjbV4+qdGDJZh8JmrPyILIDhe0IBlcvBwpAWC80APR97FMOmFAJkgBWRVvtsfWLQJMxm1598Kk/bCHTS4+/6fMi5lgsoNLdEuDs8yCHeg9VBUmuB7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=CMUE7WKNB25IcAVkCab36p61eA0n41xcYWqv09iYdjY=; b=XjnYOHQa2CoNXrY6VuBGU6RqrX0vIR8WR3aHFzqP+r9nDqkHlzKhyvQHo8p0qgQ/wLPJKapy/XVFzNGhw8b0I4zoTUbobOaNlmhPXJPXji8g5esnar8IGTcMTLwa87YOTQ0f+Hlgy06BaKB1XlhhFKxJPWQt47zdYHrY7HPmAY6Va57LAHjQ90zkNwQudT5K2tBn532jGBiXOPqya2rUocHDt7zLGTbbtGuCOd6M3vIxKk8EDUutYdGNqkr73KB0pLQIOVrZel0HGHJa53qAHJfWIVP1PMdwBoeQJF/ODL4cPBYZ54MBWJ98BuKWnpxSL1WLuatjkkogRFQwT7wUbg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=CMUE7WKNB25IcAVkCab36p61eA0n41xcYWqv09iYdjY=; b=CEhoM5MvMhtDNT1ybSayOarEqHy438ly9SEHDq61gdx5SsHEfhNZzAKOp6D9enKJ7Wp+Hq7y+Q0fchIjyyR+CEl7DxmXwM8Ifyy5aZN2sDGHCTUqG37+t7EUSJf45oT8WBQrGuCWwvb/1kfpham+e/lJstbImVkXeaKN1xuWuLU= Received: from SA1PR04CA0015.namprd04.prod.outlook.com (2603:10b6:806:2ce::11) by LV3PR12MB9355.namprd12.prod.outlook.com (2603:10b6:408:216::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:08:49 +0000 Received: from SN1PEPF0002BA4F.namprd03.prod.outlook.com (2603:10b6:806:2ce:cafe::b1) by SA1PR04CA0015.outlook.office365.com (2603:10b6:806:2ce::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.38 via Frontend Transport; Fri, 29 Mar 2024 01:08:49 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4F.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:08:49 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:08:47 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 11/17] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg Date: Thu, 28 Mar 2024 20:06:44 -0500 Message-ID: <46f83accddba3c25a428d1a30f6091913a4f7c73.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4F:EE_|LV3PR12MB9355:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e6efb6c-c78b-4228-9c33-08dc4f8ccaca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: soaBef+t1Ioneu7/PvNFmJsgTgLmemdyPHn3a6zreJkviSnj9ip+wXOzRoO3qx0YdqRETLIbw/C2y9Lbw6YCMJrhfDlQv4vUEmiunEUvajDp/XMEPtDj33V+tlbyBf9zu3xvaY84imIkkuEMUfhuaVMiCLB2ww9wGbRz/HUZ7b9ce8UjzC/jD+vUv9siwekmaU6k10Gb6r5nzhjE95IGcK5/qfUVIC5BikIZ3N5qfQujbIAFGKNPsdjv9TrwMjbpl9CPL8Uy+bg5MW2cXkX+EIOnAgYIDIks/pnI5VcIDmFM3RaGQBT0zt3ZsQEUa67P10HWCvamJmXS8NT+zsaZ542GKGum8BkJQTIIzi760xB1xpXN+JbjMXg8UPvg4xqPCIMoQiVY4MgJvXc0Qs9iqTfReZtsRALEDe/a1reTkrTWgjZYa/zv0coEv7kk5qzlRF4ZtrJ3bw3PvE265dha+diiOLCJwjfR4BUIMxmP83kH1q3KCTExByv9VnEf6/nno3v3YawLpDxmbfpuANCoB4PiOJmGdD6VDP0DhYPwHDYxeHZnRTSzl9vdJlqQHLrPAVD2Sq4mRXn8m9fqh9UwiRVBgH91Dm3Offq0QzMf5RyDs8dlk45wZmKXlYlC30x1paZsiAg3BIVO0VhOz3g5R0RlCdYb5OC9Zu2ZHJf98XrcrAVWnCN1mHG9D9F0heSwLVC0x+k58hcFfRaYwRyQUC5Pg52vlRBLf6VHA1vgviWmPmjbGvxI3F5ljG6NBjz4 X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(82310400014)(36860700004)(7416005)(376005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:08:49.5434 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 5e6efb6c-c78b-4228-9c33-08dc4f8ccaca X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4F.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR12MB9355 Content-Type: text/plain; charset="utf-8" If the BMEC (Bandwidth Monitoring Event Configuration) feature is supported, the bandwidth events can be configured to track specific events. The event configuration is domain specific. ABMC (Assignable Bandwidth Monitoring Counters) feature needs event configuration information to assign RMID to the hardware counter. Currently, this information is not available. Save the event configuration information in the rdt_hw_domain, so it can be used while for RMID assignment. Signed-off-by: Babu Moger --- v3: Minor changes related to rebase in mbm_config_write_domain. v2: No changes. --- arch/x86/kernel/cpu/resctrl/core.c | 2 ++ arch/x86/kernel/cpu/resctrl/internal.h | 3 +++ arch/x86/kernel/cpu/resctrl/monitor.c | 11 +++++++++++ arch/x86/kernel/cpu/resctrl/rdtgroup.c | 16 +++++++++++++++- 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resct= rl/core.c index 50e9ec5e547b..ed4f6d49d737 100644 --- a/arch/x86/kernel/cpu/resctrl/core.c +++ b/arch/x86/kernel/cpu/resctrl/core.c @@ -555,6 +555,8 @@ static void domain_add_cpu(int cpu, struct rdt_resource= *r) return; } =20 + arch_domain_mbm_evt_config(hw_dom); + list_add_tail_rcu(&d->list, add_pos); =20 err =3D resctrl_online_domain(r, d); diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index 41b06d46ea74..88453c86474b 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -385,6 +385,8 @@ struct rdt_hw_domain { u32 *ctrl_val; struct arch_mbm_state *arch_mbm_total; struct arch_mbm_state *arch_mbm_local; + u32 mbm_total_cfg; + u32 mbm_local_cfg; }; =20 static inline struct rdt_hw_domain *resctrl_to_arch_dom(struct rdt_domain = *r) @@ -648,6 +650,7 @@ void __check_limbo(struct rdt_domain *d, bool force_fre= e); void rdt_domain_reconfigure_cdp(struct rdt_resource *r); void __init resctrl_file_fflags_init(const char *config, unsigned long fflags); +void arch_domain_mbm_evt_config(struct rdt_hw_domain *hw_dom); void rdt_staged_configs_clear(void); bool closid_allocated(unsigned int closid); int resctrl_find_cleanest_closid(void); diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/re= sctrl/monitor.c index 56dc49021540..8677dbf6de43 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -1090,3 +1090,14 @@ void __init intel_rdt_mbm_apply_quirk(void) mbm_cf_rmidthreshold =3D mbm_cf_table[cf_index].rmidthreshold; mbm_cf =3D mbm_cf_table[cf_index].cf; } + +void arch_domain_mbm_evt_config(struct rdt_hw_domain *hw_dom) +{ + if (mbm_total_event.configurable) + hw_dom->mbm_total_cfg =3D MAX_EVT_CONFIG_BITS; + + if (mbm_local_event.configurable) + hw_dom->mbm_local_cfg =3D READS_TO_LOCAL_MEM | + NON_TEMP_WRITE_TO_LOCAL_MEM | + READS_TO_LOCAL_S_MEM; +} diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 54ae2e6bf612..7f54788a58de 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -1703,6 +1703,7 @@ static void mon_event_config_write(void *info) static void mbm_config_write_domain(struct rdt_resource *r, struct rdt_domain *d, u32 evtid, u32 val) { + struct rdt_hw_domain *hw_dom =3D resctrl_to_arch_dom(d); struct mon_config_info mon_info =3D {0}; =20 /* @@ -1712,7 +1713,7 @@ static void mbm_config_write_domain(struct rdt_resour= ce *r, mon_info.evtid =3D evtid; mondata_config_read(d, &mon_info); if (mon_info.mon_config =3D=3D val) - return; + goto out; =20 mon_info.mon_config =3D val; =20 @@ -1725,6 +1726,16 @@ static void mbm_config_write_domain(struct rdt_resou= rce *r, smp_call_function_any(&d->cpu_mask, mon_event_config_write, &mon_info, 1); =20 + /* + * Update event config value in the domain when user changes it. + */ + if (evtid =3D=3D QOS_L3_MBM_TOTAL_EVENT_ID) + hw_dom->mbm_total_cfg =3D val; + else if (evtid =3D=3D QOS_L3_MBM_LOCAL_EVENT_ID) + hw_dom->mbm_local_cfg =3D val; + else + goto out; + /* * When an Event Configuration is changed, the bandwidth counters * for all RMIDs and Events will be cleared by the hardware. The @@ -1735,6 +1746,9 @@ static void mbm_config_write_domain(struct rdt_resour= ce *r, * mbm_local and mbm_total counts for all the RMIDs. */ resctrl_arch_reset_rmid_all(r, d); + +out: + return; } =20 static int mon_config_write(struct rdt_resource *r, char *tok, u32 evtid) --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (mail-co1nam11on2080.outbound.protection.outlook.com [40.107.220.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C90A02C697; Fri, 29 Mar 2024 01:09:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.220.80 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674577; cv=fail; b=s5BrI8/tumhtqxKD+dnq2FnZ7GG0EI5M1aKQoOil1OYNoG4S3PorAHalvBL8V9NBzgIz4WfmIumauGoFFgv5K6S2sHkFv20mbXvpkBqGKmB4o+bXtHOe/fx/6T6288zce4IyDGBGQe25fd+QDtdcl1z1y126ZL0A701YOWRjf9A= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674577; c=relaxed/simple; bh=YO3fZ/XPsUoH2qqk/4hYWmQA9IO4UPm/SwjmXL0Z7MQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OzNvg3xhwNzrYjtmxwKjeZ9Enfj4EtoGElnFHt0eakN7qqaimgItJ4uDXRH8ZueMubo6GaPwud8dhBK23P4jaauaC1neU8ZfV4PznUpGWjjzdPEMaT5X+VKlpwdEueO4xzfnTVo4OrGYVY2hx+cvaILWGmcMOI3eP9kFSVxeekE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=GRvp7Huo; arc=fail smtp.client-ip=40.107.220.80 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="GRvp7Huo" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=KnKKV7vbUQct7QO0fsogi1yOh4Puu9MCTp9Svm/Xz/IZ1ki9ghWVRGtXrKJGZsJR2IpRV2+SIElOdCN3QS8GKV8GZoXdyQXJ6AnVounqrzNIvNkenfODeGn4UDYaT0G64reMljngvj3nMOCQqtY2NRzqg1wk4h/OQAWpPW3G5Eoy+2lAdeMzuH4Z+TPa7/Ikhi1RKQxsx41ZK+OGXLat7lQ1fFBQw4DmDe7/uKmB4dhTgXnxB7pM6sEldbetMc3ToqLmOx++yeXxEN8uu9fvpvlrNGv1RWTySvVCVDCMmIpEMvp0gKYAWtpiqeqfsuiabMHvHbgdUSHklcJT+DLgSA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2p7nJ1A8WSMuQezaXRs3deecbNNBczuoD6/RYU08Qtk=; b=Xr5vDL5sZAFfvcpL/EpOCfhlGSut32eyZblOElWuTPBqGUNw1mSHdv7K7xvboqHbrW/d7UpttnH+IJl4YL6rS7ZiAjSjUphC0Jvyf075H83J7aIt2KPfxYNMZCPXb5n92KA5AR1gojHZnR9dtmoJtnRFOPw+3hveEPgLptnXNy1AUx9t+KTkFXeGg76/szdBnfPqbjyiofnxz2XqTfJcvdjhshZ2Y9r46o81zLkKJ3P7nwetk9ogJxe0VUVlipiRJhH4vpUPbsigHExm5VvzUcx2SnUssIBIJi6ODoxzFlR+DykvVxQVbwJgdjzirL6YtbSbe5pehzhZixIEn/2yUw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=2p7nJ1A8WSMuQezaXRs3deecbNNBczuoD6/RYU08Qtk=; b=GRvp7HuolXt1LR8EUO0xvuBOdOOT2tXpX5GRq2Crd0txDAv0IU4ft7SqmzAqGNyvjjCqiP4x5NdVFZVljre7qfz+VrL8K5vLlxNacHiCIgMDPXko4ueiGMBDRrh/tvlcxbrmIpfZXgl9T6rN/e0WC1X/4TrlrJvO6lx9qp21v/w= Received: from PH7PR17CA0028.namprd17.prod.outlook.com (2603:10b6:510:323::8) by PH7PR12MB7209.namprd12.prod.outlook.com (2603:10b6:510:204::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:09:30 +0000 Received: from SN1PEPF0002BA50.namprd03.prod.outlook.com (2603:10b6:510:323:cafe::e3) by PH7PR17CA0028.outlook.office365.com (2603:10b6:510:323::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.40 via Frontend Transport; Fri, 29 Mar 2024 01:09:30 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA50.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:09:30 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:08:55 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 12/17] x86/resctrl: Add the functionality to assign the RMID Date: Thu, 28 Mar 2024 20:06:45 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA50:EE_|PH7PR12MB7209:EE_ X-MS-Office365-Filtering-Correlation-Id: e72e4850-109e-4774-b6f4-08dc4f8ce32a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NjaDkZnLyRNkfs2xF6j1b6LMPRPl+qrfMHeuIGx16ft8V0NarWqigWWLFdwcOTW8ZZtExSAbaT/9ptc7FirbxbjKmhprpYjsfd8KKhw9VSEqGkbchkLl05MOG3deGZ5VFuipj175cbWBrjr+PXHGJCsZ4ikIiMKCqR0w5nmXLfs9hVrcWx1C6lu+nMDsnfPm8QpUA05J9QDjjIJlnKfj5OqA8t1EswV3OOAN8sarFm5chkhs5C1/+ItkSGSd/VseWd2bxLcuk83EKfxI0BG6jAt+g5WgkAuTl3VsRxfPuqf4K/1tUAWqC+h0DyCZT3GlN+Zz8wgu3A+RXXRc1Fods1izG2sngdPvaA2Eq9wwSDCQSlOK/kYT5NDEsReXVxwFtOoSOqvdzTcKQ8D3U61Uqm6B3sWCz+x1unV2+kndk/b/MaJIM9CSWD5PMbxAX2QBtQcgq1y7/dIh+3qkFhFH14V7bg/Wavzs51qGE5WxLHKfqfXbKlUcrWgfAicbmlpVqY/iak1FZtmGvqavnvaeR2y1vmLw65yhcvf024RvN5krzI/1NO5qcOe2By1T48Efi92XA3cSALG/XXxV3+A76Y4dsSHIW02EEE1fKVfcgessxSfQjAP6JfESYAlhBl5nU3kUUHIs4SPtm5pY0vXwNLMmeoezxecrrI/X2+qiJqWK4VgPMXjd4WPmHvSSFtnXt7E2MvhTLwWi7uq/Df5IVQ== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(82310400014)(376005)(7416005)(1800799015)(36860700004);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:09:30.4385 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: e72e4850-109e-4774-b6f4-08dc4f8ce32a X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA50.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7209 Content-Type: text/plain; charset="utf-8" With the support of ABMC (Assignable Bandwidth Monitoring Counters) feature, the user has the option to assign or unassign the RMID to hardware counter and monitor the bandwidth for the longer duration. Provide the interface to assign the counter to the group. The ABMC feature implements a pair of MSRs, L3_QOS_ABMC_CFG (MSR C000_03FDh) and L3_QOS_ABMC_DSC (MSR C000_3FEh). Each logical processor implements a separate copy of these registers. Attempts to read or write these MSRs when ABMC is not enabled will result in a #GP(0) exception. Individual assignable bandwidth counters are configured by writing to L3_QOS_ABMC_CFG MSR and specifying the Counter ID, Bandwidth Source, and Bandwidth Types. Reading L3_QOS_ABMC_DSC returns the configuration of the counter specified by L3_QOS_ABMC_CFG [CtrID]. The feature details are documented in the APM listed below [1]. [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming Publication # 24593 Revision 3.41 section 19.3.3.3 Assignable Bandwidth Monitoring (ABMC). Signed-off-by: Babu Moger Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D206537 --- v3: Removed the static from the prototype of rdtgroup_assign_abmc. The function is not called directly from user anymore. These changes are related to global assignment interface. v2: Minor text changes in commit message. --- arch/x86/kernel/cpu/resctrl/internal.h | 1 + arch/x86/kernel/cpu/resctrl/rdtgroup.c | 86 ++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index 88453c86474b..9d84c80104f9 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -651,6 +651,7 @@ void rdt_domain_reconfigure_cdp(struct rdt_resource *r); void __init resctrl_file_fflags_init(const char *config, unsigned long fflags); void arch_domain_mbm_evt_config(struct rdt_hw_domain *hw_dom); +ssize_t rdtgroup_assign_abmc(struct rdtgroup *rdtgrp, u32 evtid, int mon_s= tate); void rdt_staged_configs_clear(void); bool closid_allocated(unsigned int closid); int resctrl_find_cleanest_closid(void); diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 7f54788a58de..cfbdaf8b5f83 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -202,6 +202,18 @@ static void assign_cntrs_init(void) assign_cntrs_free_map_len =3D r->mbm_assign_cntrs; } =20 +static int assign_cntrs_alloc(void) +{ + u32 counterid =3D ffs(assign_cntrs_free_map); + + if (counterid =3D=3D 0) + return -ENOSPC; + counterid--; + assign_cntrs_free_map &=3D ~(1 << counterid); + + return counterid; +} + /** * rdtgroup_mode_by_closid - Return mode of resource group with closid * @closid: closid if the resource group @@ -1848,6 +1860,80 @@ static ssize_t mbm_local_bytes_config_write(struct k= ernfs_open_file *of, return ret ?: nbytes; } =20 +static void rdtgroup_abmc_msrwrite(void *info) +{ + u64 *msrval =3D info; + + wrmsrl(MSR_IA32_L3_QOS_ABMC_CFG, *msrval); +} + +static void rdtgroup_abmc_domain(struct rdt_domain *d, struct rdtgroup *rd= tgrp, + u32 evtid, int index, bool assign) +{ + struct rdt_hw_domain *hw_dom =3D resctrl_to_arch_dom(d); + union l3_qos_abmc_cfg abmc_cfg =3D { 0 }; + struct arch_mbm_state *arch_mbm; + + abmc_cfg.split.cfg_en =3D 1; + abmc_cfg.split.ctr_en =3D assign ? 1 : 0; + abmc_cfg.split.ctr_id =3D rdtgrp->mon.abmc_ctr_id[index]; + abmc_cfg.split.bw_src =3D rdtgrp->mon.rmid; + + /* + * Read the event configuration from the domain and pass it as + * bw_type. + */ + if (evtid =3D=3D QOS_L3_MBM_TOTAL_EVENT_ID) { + abmc_cfg.split.bw_type =3D hw_dom->mbm_total_cfg; + arch_mbm =3D &hw_dom->arch_mbm_total[rdtgrp->mon.rmid]; + } else { + abmc_cfg.split.bw_type =3D hw_dom->mbm_local_cfg; + arch_mbm =3D &hw_dom->arch_mbm_local[rdtgrp->mon.rmid]; + } + + smp_call_function_any(&d->cpu_mask, rdtgroup_abmc_msrwrite, &abmc_cfg, 1); + + /* Reset the internal counters */ + if (arch_mbm) + memset(arch_mbm, 0, sizeof(struct arch_mbm_state)); +} + +ssize_t rdtgroup_assign_abmc(struct rdtgroup *rdtgrp, u32 evtid, int mon_s= tate) +{ + struct rdt_resource *r =3D &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; + int counterid =3D 0, index; + struct rdt_domain *d; + + if (rdtgrp->mon.mon_state & mon_state) { + rdt_last_cmd_puts("ABMC counter is assigned already\n"); + return 0; + } + + index =3D mon_event_config_index_get(evtid); + if (index =3D=3D INVALID_CONFIG_INDEX) { + pr_warn_once("Invalid event id %d\n", evtid); + return -EINVAL; + } + + /* + * Allocate a new counter and update domains + */ + counterid =3D assign_cntrs_alloc(); + if (counterid < 0) { + rdt_last_cmd_puts("Out of ABMC counters\n"); + return -ENOSPC; + } + + rdtgrp->mon.abmc_ctr_id[index] =3D counterid; + + list_for_each_entry(d, &r->domains, list) + rdtgroup_abmc_domain(d, rdtgrp, evtid, index, 1); + + rdtgrp->mon.mon_state |=3D mon_state; + + return 0; +} + /* rdtgroup information files for one cache resource. */ static struct rftype res_common_files[] =3D { { --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (mail-bn8nam11on2041.outbound.protection.outlook.com [40.107.236.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 250412C68A; Fri, 29 Mar 2024 01:09:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.236.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674577; cv=fail; b=YRx6JOVnv/dWYWvSSbeEsMSK6lZLBdtEG80cQvWmHFKa7kkuX2YrVx/2/xmsgkmmtSIWexhY7PMrWqJWAjcnkUkRzF9bbi/pibtG2ERi7I3cOTnsjybpIKN4QtCrZC4ygzaO9bXMjowB0XINIVChFP/JoFn05t0VK3HdAY0wCG4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674577; c=relaxed/simple; bh=y4QDXkHJhRGjM+YvzQ41rIavxV0mtpp94E4khHp+HI8=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=WqsDraa3j/4Hm5ljs+sawqB1X2DlII+jzqYf5eOzeGSlEYVBWTfg5I3R7OtdNEzucH447Xr1/NKnfaPrUxxwP6EK/IAhnn/l2JfNr23n3Et7+5e+WaW30ZYHmU3DzLOR5TR81EqxLkYjsNbPWRXx9NI9RTL3nU5xUkGUAz7n4b8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=kwMlBBUZ; arc=fail smtp.client-ip=40.107.236.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="kwMlBBUZ" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cIw0hnISBg2JCSI64CG/sIDXTD3F8IPShJRQYwiu3qvkR69WZSSgLhQj1E/HD1d7keiJ4cp9P1IEj2N1R/L+rH4gsRYEgROwIW/NPCu1527cpTGESLG4VfvTjgjwgZEiP79aHdXojTMnGo3roNUr0lCEP5agzMLWCcS7oCCbL1ds0iBrfVdGPERhtnAJweaFnYBmBD+lvlsh24t8P+KAyn2lD/qu7d3+vBY1i52nkFxiKoqH0uFfizfIul5Mh6CCUxVcqE/vq9h6XLK+QXQq9X6MSsVr3YDM0YNzD6FW72fMTPVS8vOveaQyGFFQYQBSXj3jjAtZv5RZHVsPVNjC8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7FXLEQAvAnFAHMdbLIiH1kYdncgz2SmEshExXXzbJAU=; b=X07L+Z0/w1BsM557GZ1ED6cEyR/c6qil6H1JNpTU2nPQ4CDXgLHdNqp0zPXZlubOTiDuk9UcuxxxmXA29U3W7KeeaP8RZgXI/VeupNz4SXJd3J5jeiid1WgHtJ4wwccwKzGZRlp2Kgl3gh574yLJti31Z1ITgs6eerVXHk3UswGlRQc3gyS/sBtaZm/lj7EIZwy5/p/L7Xr0c5oM1rOgdTJAf6B1cgG8JWg0E03vHb3um+nCqF66Wa+tpPGyME6w1OXCAXhWiUASM0MFVIcDx7qpvXgEh16uI/WcW2sxVPw11jneQ0DeTsSEuMN7pO00cNJN2b/umEi4SuqHD+DgMg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7FXLEQAvAnFAHMdbLIiH1kYdncgz2SmEshExXXzbJAU=; b=kwMlBBUZQHwcYA3uQKMHmjuhZukR9ouHtYx+Wyk9Sj8C5KiawIndxWkDep4MOftxhaAk4hTBBegN5HQaPwX6BKLIKSvvHApNMXe72ADYmGLaNjpgOAPjc0zsWbjSX3t9/aINf2lu1B8+g+oG23COxLG1k3c+ROY/klPZ39gsjb4= Received: from PH7PR17CA0048.namprd17.prod.outlook.com (2603:10b6:510:323::11) by SA3PR12MB8811.namprd12.prod.outlook.com (2603:10b6:806:312::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.40; Fri, 29 Mar 2024 01:09:33 +0000 Received: from SN1PEPF0002BA50.namprd03.prod.outlook.com (2603:10b6:510:323:cafe::ca) by PH7PR17CA0048.outlook.office365.com (2603:10b6:510:323::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.38 via Frontend Transport; Fri, 29 Mar 2024 01:09:33 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA50.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:09:33 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:09:30 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 13/17] x86/resctrl: Add the functionality to unassign the RMID Date: Thu, 28 Mar 2024 20:06:46 -0500 Message-ID: <6099db160a7dd72eb97c5e50bf347414d57263a1.1711674410.git.babu.moger@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA50:EE_|SA3PR12MB8811:EE_ X-MS-Office365-Filtering-Correlation-Id: b2ca1968-553c-4ee2-19f8-08dc4f8ce4d3 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: dnhne00c9R6h8pPq1eEzrT1dZdk9hy9f/X2TYYKkWmP5IBettujmGA75Gg8T7b5nl9TblxxlBYA4zksh+HZMiXUAG+QHqlV0WUWrOvXzYJZDdfBFoyArPTEfcO3p3PlXNl4CtjZ10DhfIqB+DiHvaYkk9H5+C7i2a3IfdBW/lPcty4NxcEkaRH1fyzfBxQEx/6akPAQotZsBqsW9GJ+uzzGF5xdRzphzbo3aa6rS3k5vACVNZ/iyVFJ9LNR5Iy4a4ZhqoYdor47Y0yzm7dTARYv/ulOWOMC6jLORLS0IFwyZ4rJYinuesK2kGC7gAhMEznM1KwImMfb5B5nDdeSxwk60DTWEjjSuRjIwKtK2E6G2SQjnPi097FSB5s7nuFTyJgFjJPjqDUPyyeEBF0Txp9CEUjCTWiKyeS8soRyL67fsoj5B5lfzoyJTADL3+MCamVCF3/qMmtwpXTNfKigaD4P1/ia+f0Ej4A4DjcaoP0w33sf7KN4w7O88a9+8JkUqVFZ08gAkc9A/cT2Aia97N6l0ss2pfYBNxFrQvDW60PnFddjk0yIyoAnfgmmUwJUVzrJrqTQTwPWcQIzu0BGuBsPzvyFFaxAKEpe7cHP6UrjwvzbzRQlAOf/aYCR/vqdTxR/Lj+HbiYCwP3fgFpjR0/yNVbTylT6VDLAyey3FuINbmX1gUL6FJQK2Cyd0A2w1 X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(82310400014)(376005)(7416005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:09:33.2198 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b2ca1968-553c-4ee2-19f8-08dc4f8ce4d3 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA50.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA3PR12MB8811 Content-Type: text/plain; charset="utf-8" With the support of ABMC (Assignable Bandwidth Monitoring Counters) feature, the user has the option to assign or unassign the RMID to hardware counter and monitor the bandwidth for the longer duration. Provide the functionality to unassign the counter to the group. The feature details are documented in the APM listed below [1]. [1] AMD64 Architecture Programmer's Manual Volume 2: System Programming Publication # 24593 Revision 3.41 section 19.3.3.3 Assignable Bandwidth Monitoring (ABMC). Signed-off-by: Babu Moger Link: https://bugzilla.kernel.org/show_bug.cgi?id=3D206537 --- v3: Removed the static from the prototype of rdtgroup_unassign_abmc. The function is not called directly from user anymore. These changes are related to global assignment interface. v2: No changes. --- arch/x86/kernel/cpu/resctrl/internal.h | 3 +++ arch/x86/kernel/cpu/resctrl/rdtgroup.c | 30 ++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/r= esctrl/internal.h index 9d84c80104f9..90f0bac3ef3a 100644 --- a/arch/x86/kernel/cpu/resctrl/internal.h +++ b/arch/x86/kernel/cpu/resctrl/internal.h @@ -652,6 +652,9 @@ void __init resctrl_file_fflags_init(const char *config, unsigned long fflags); void arch_domain_mbm_evt_config(struct rdt_hw_domain *hw_dom); ssize_t rdtgroup_assign_abmc(struct rdtgroup *rdtgrp, u32 evtid, int mon_s= tate); +ssize_t rdtgroup_unassign_abmc(struct rdtgroup *rdtgrp, u32 evtid, + int mon_state); +void assign_cntrs_free(int counterid); void rdt_staged_configs_clear(void); bool closid_allocated(unsigned int closid); int resctrl_find_cleanest_closid(void); diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index cfbdaf8b5f83..b430ffa554a9 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -214,6 +214,11 @@ static int assign_cntrs_alloc(void) return counterid; } =20 +void assign_cntrs_free(int counterid) +{ + assign_cntrs_free_map |=3D 1 << counterid; +} + /** * rdtgroup_mode_by_closid - Return mode of resource group with closid * @closid: closid if the resource group @@ -1934,6 +1939,31 @@ ssize_t rdtgroup_assign_abmc(struct rdtgroup *rdtgrp= , u32 evtid, int mon_state) return 0; } =20 +ssize_t rdtgroup_unassign_abmc(struct rdtgroup *rdtgrp, u32 evtid, + int mon_state) +{ + struct rdt_resource *r =3D &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; + struct rdt_domain *d; + int index; + + index =3D mon_event_config_index_get(evtid); + if (index =3D=3D INVALID_CONFIG_INDEX) { + pr_warn_once("Invalid event id %d\n", evtid); + return -EINVAL; + } + + if (rdtgrp->mon.mon_state & mon_state) { + list_for_each_entry(d, &r->domains, list) + rdtgroup_abmc_domain(d, rdtgrp, evtid, index, 0); + + assign_cntrs_free(rdtgrp->mon.abmc_ctr_id[index]); + } + + rdtgrp->mon.mon_state &=3D ~mon_state; + + return 0; +} + /* rdtgroup information files for one cache resource. */ static struct rftype res_common_files[] =3D { { --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (mail-bn8nam04on2057.outbound.protection.outlook.com [40.107.100.57]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8BF4836AF9; Fri, 29 Mar 2024 01:09:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.100.57 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674584; cv=fail; b=S5Dn2EXqphlxSdf6uZTP5z6aeydLpcaNT5b38e2dPcSINHFwAIuuoKLZhTSRf0ewwRSo2iq+hg3eBYxN3K1zrVLPXpQiaQVRzadL2ijeV16PNDiLX3ZV/vVyp1V0y4NNxj9NVtvk/Ncs1qY+4Y40ULoNR9NPvbbJkpQZmixFoio= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674584; c=relaxed/simple; bh=RPRh2DYBCWjDaXi50CKZj3toLzpcNRA7guCHIH9Af5U=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XuzWkHJ9szp0azMtsbw2QVM4GgcuwrKnbhWxhkb5BKTrE28Qau9b6AJMUj4ttKgID/9ykMvoqs5xB5SrIbs6iM0Jb5dLgl3CIxUoOZAdAC9yEm4xiKyOjavSNCcnZgrN+sS+GeUO0mHlcLlKCcjY8p3nPfRl7XTHtLNqrezFsqY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=XVbAGolf; arc=fail smtp.client-ip=40.107.100.57 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="XVbAGolf" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e5MkSHN5jNSJBWEVodC8lmHg7m+Kh0lgQLx0EY9OHUtK3kjr3DppcrigWOYruxgh9UJQ9M0MJbgCL82sbr108Hb1Fl8LPESYdC9frzbYBdxMzJJgIZmmt2wlbeg+rx1JU+KDgFu/28LDykekROM1y82+Ux8dpOiHLmUe9DFaawkt9hZCOk9m7FfY4woFdbNCQXfRNTSynNziIGluiIpUypXSGONPtYrlYTER8nuOmI12t4gs8X3a2DzLbpAyUHJyXdPdEhrsuK/YduPQMS/mwo1yspj3Wt/vtca+rgrfbZAs7h4eYiz74ZNWimzPxjuUiD4Grn6mvQ9xvTx4ocNSRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ErO//mPTA+Mz8Khf+hPgtdfm8T95ys82/ahAcF/kbKQ=; b=ObhFnHp2UTx8ZH8+Fhv2v2w2oFK4rbyzhItcroiVt3IpFe2KQgEqrrZk2fFcI/m9Y32Ikmn8pombSJ78BbGpvpC9/b3v+h7HN0hJK8awZI5VO6XoAuXpTFcUdnmbkIX1e7M/2y/FdZ5HNaeZXpNE10myrIjEe6A85k2IWjyUWo7dhfqkBshKxndtiNcfnlNh0Ms2eD3xsNnyetN9w+64Pbiup2RCYgE6silYStiLjA3A28mfYNJmwK2IRer/14Wp8XGznE84Q7/bV8P4/PHKU7AyM30CqiBsBoQMuiUfmAqrxfxnwG7YRxyJhaGnI5Yppk3Nqqcmw3edQX3g601A0A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ErO//mPTA+Mz8Khf+hPgtdfm8T95ys82/ahAcF/kbKQ=; b=XVbAGolfhlBLRAksaDWP0cs4SVcWTUbv8YS89USEV8sLzE+zXoBeHWfUu8bvGzisbpzy4+/RMJiyJGZsD/khIOQYlqY77eNSwpgX6eJ1iQ/L/V6LGfdTR3NxpMPtCilNNA9YI/z6xAo5UBn3c9BpFFa9D8v0ByoI3X7PxFJrp+0= Received: from SA1PR04CA0024.namprd04.prod.outlook.com (2603:10b6:806:2ce::28) by PH7PR12MB7796.namprd12.prod.outlook.com (2603:10b6:510:275::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33; Fri, 29 Mar 2024 01:09:39 +0000 Received: from SN1PEPF0002BA4F.namprd03.prod.outlook.com (2603:10b6:806:2ce:cafe::c9) by SA1PR04CA0024.outlook.office365.com (2603:10b6:806:2ce::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33 via Frontend Transport; Fri, 29 Mar 2024 01:09:39 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4F.mail.protection.outlook.com (10.167.242.72) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:09:39 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:09:37 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 14/17] x86/resctrl: Enable ABMC by default on resctrl mount Date: Thu, 28 Mar 2024 20:06:47 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4F:EE_|PH7PR12MB7796:EE_ X-MS-Office365-Filtering-Correlation-Id: 153c0264-0f73-47c1-a8ef-08dc4f8ce895 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qEDX4qIYVa5BVR7fAjFZ1EMgsR4Mj1nDSXu7Hbpe5z+QvPpi/SV//ydrHGOQ9KXxn+47TaRkcixtuG2Qocw8ikkpLK+qd4mVBHHhJykKSCH3U5lATGnfGiRq2r9Uhu77hFrq4UUtE6JpjGsogDbJvJJoBreEHyP9EkuSy4Wp6xjSrZAfXP74cqx5FiurDOfDV00um0Kit0Qyqkumf54No3Oyov66UyQ6Sf/N7H6d71CPta720Du6DtcjliwsGZXYewk4DRxGqs6i2MVNGd0fAcXYtFbn5xzOawYwVXoxKbPbgRqwyr1b9Wut34QypcphWe1XS9GyUdB7VJTWaKkpV39loBLFRyNqatqS0ip/DI1dUPw0acP1CeHeJX9ERJ26zXj1TF8qFnsHZ0/aeocHVob67W5aCHl5iLyDMCASqkTz0dCqBbYrSqi8ELq3ia9zMaG5rVc2T2FIsTlegWXw5N1X/fCtTjgmkGXoiqxCozM3s4l/xE/ziLFBgS1RHvv4L4cvGQXO/SeBw7Sv4h+60t4KVevbFIVkiU6jXHaJo9bceCah8O9NtDzI/2jRSwSMYUf58t8zYs7fY8+qdmQKZpB6bwE2GvQ1z7NxKk4/Riq1ilMNNJ3u3O7VtHA6gzAu6KzqXT82dkgePcfIp14nII4KK4AHpCIOsiDSPyNXDlsGF3n4u2ibAe0lQy7NGLSwr/WHlwqy3bBTXI8sGx8lYRBbH2Xm8hFHRWuCnKHvFf4376ROf7cDvvwkrOiV3IXJ X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(7416005)(82310400014)(36860700004)(376005)(1800799015);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:09:39.5124 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 153c0264-0f73-47c1-a8ef-08dc4f8ce895 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4F.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR12MB7796 Content-Type: text/plain; charset="utf-8" Enable ABMC by default if assignment feature is available. Also assign the monitor counters for CTRL_MON and MON groups as they are created. If for any reason the assignment fails, report the warnings and continue. It is not required to fail the group creation for assignment failures. Users will have the option to modify the assignments later. Signed-off-by: Babu Moger --- v3: This is a new patch. Patch addresses the upstream comment to enable ABMC feature by default if the feature is available. --- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 76 ++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index b430ffa554a9..2e58024e95e2 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -2750,6 +2750,7 @@ static void rdt_disable_ctx(void) { resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L3, false); resctrl_arch_set_cdp_enabled(RDT_RESOURCE_L2, false); + resctrl_arch_set_abmc_enabled(RDT_RESOURCE_L3, false); set_mba_sc(false); =20 resctrl_debug =3D false; @@ -2780,6 +2781,8 @@ static int rdt_enable_ctx(struct rdt_fs_context *ctx) if (ctx->enable_debug) resctrl_debug =3D true; =20 + resctrl_arch_set_abmc_enabled(RDT_RESOURCE_L3, true); + return 0; =20 out_cdpl3: @@ -2876,6 +2879,48 @@ static void schemata_list_destroy(void) } } =20 +static int resctrl_mbm_assign(struct rdtgroup *rdtgrp) +{ + struct rdt_resource *r =3D &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; + struct rdt_hw_resource *hw_res =3D resctrl_to_arch_res(r); + int ret =3D 0; + + if (!hw_res->abmc_enabled) + return 0; + + if (is_mbm_total_enabled()) + ret =3D rdtgroup_assign_abmc(rdtgrp, QOS_L3_MBM_TOTAL_EVENT_ID, + ASSIGN_TOTAL); + + if (!ret && is_mbm_local_enabled()) + ret =3D rdtgroup_assign_abmc(rdtgrp, QOS_L3_MBM_LOCAL_EVENT_ID, + ASSIGN_LOCAL); + + return ret; +} + +static int resctrl_mbm_unassign(struct rdtgroup *rdtgrp) +{ + struct rdt_resource *r =3D &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; + struct rdt_hw_resource *hw_res =3D resctrl_to_arch_res(r); + int ret =3D 0; + + if (!hw_res->abmc_enabled) + return 0; + + if (is_mbm_total_enabled()) + ret =3D rdtgroup_unassign_abmc(rdtgrp, + QOS_L3_MBM_TOTAL_EVENT_ID, + ASSIGN_TOTAL); + + if (!ret && is_mbm_local_enabled()) + ret =3D rdtgroup_unassign_abmc(rdtgrp, + QOS_L3_MBM_LOCAL_EVENT_ID, + ASSIGN_LOCAL); + + return ret; +} + static int rdt_get_tree(struct fs_context *fc) { struct rdt_fs_context *ctx =3D rdt_fc2context(fc); @@ -2935,6 +2980,14 @@ static int rdt_get_tree(struct fs_context *fc) if (ret < 0) goto out_mongrp; rdtgroup_default.mon.mon_data_kn =3D kn_mondata; + + /* + * Assign the monitor counters if it is available. If it fails, + * report the warnings and continue. It is not nessaccery to + * fail here. + */ + if (resctrl_mbm_assign(&rdtgroup_default) < 0) + rdt_last_cmd_puts("Monitor assignment failed\n"); } =20 ret =3D rdt_pseudo_lock_init(); @@ -3216,6 +3269,8 @@ static void rdt_kill_sb(struct super_block *sb) cpus_read_lock(); mutex_lock(&rdtgroup_mutex); =20 + resctrl_mbm_unassign(&rdtgroup_default); + rdt_disable_ctx(); =20 /*Put everything back to default values. */ @@ -3754,6 +3809,14 @@ static int rdtgroup_mkdir_mon(struct kernfs_node *pa= rent_kn, goto out_unlock; } =20 + /* + * Assign the monitor counters if it is available. If it fails, + * report the warnings and continue. It is not nessaccery to + * fail here. + */ + if (resctrl_mbm_assign(rdtgrp) < 0) + rdt_last_cmd_puts("Monitor assignment failed\n"); + kernfs_activate(rdtgrp->kn); =20 /* @@ -3798,6 +3861,14 @@ static int rdtgroup_mkdir_ctrl_mon(struct kernfs_nod= e *parent_kn, if (ret) goto out_closid_free; =20 + /* + * Assign the monitor counters if it is available. If it fails, + * report the warnings and continue. It is not nessaccery to + * fail here. + */ + if (resctrl_mbm_assign(rdtgrp) < 0) + rdt_last_cmd_puts("Monitor assignment failed\n"); + kernfs_activate(rdtgrp->kn); =20 ret =3D rdtgroup_init_alloc(rdtgrp); @@ -3893,6 +3964,9 @@ static int rdtgroup_rmdir_mon(struct rdtgroup *rdtgrp= , cpumask_var_t tmpmask) update_closid_rmid(tmpmask, NULL); =20 rdtgrp->flags =3D RDT_DELETED; + + resctrl_mbm_unassign(rdtgrp); + free_rmid(rdtgrp->closid, rdtgrp->mon.rmid); =20 /* @@ -3939,6 +4013,8 @@ static int rdtgroup_rmdir_ctrl(struct rdtgroup *rdtgr= p, cpumask_var_t tmpmask) cpumask_or(tmpmask, tmpmask, &rdtgrp->cpu_mask); update_closid_rmid(tmpmask, NULL); =20 + resctrl_mbm_unassign(rdtgrp); + free_rmid(rdtgrp->closid, rdtgrp->mon.rmid); closid_free(rdtgrp->closid); =20 --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2065.outbound.protection.outlook.com [40.107.96.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9DB838F82; Fri, 29 Mar 2024 01:09:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.96.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674591; cv=fail; b=NyRjo9xHmAVIKaOWUcKZG5hPInaIkeOCGVXEU3Hl0D9i5BXQGdyOa4gxzN07vsBYMySxVqSJdVEbipF37/HCOn2Vfs/FA9Z1oAtlyCD2aReqC8akEcDdNGYAENOuszSrn1qGrcHmfEcglYcCIefPX3tO8kYuhDDB+kxAmFRHXvo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674591; c=relaxed/simple; bh=g4Ulnn8jF08JjMi6Lz+HZqUApXlSuWxkwYUOvUbu07k=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=R1mMJBGt395O1lrsm8aR0Qs5VSCS7fpxG/5IjX+YSramVvQEOWfZ9rheJ6hFR25/0c0XxlEF9GSlAHNNDYPYV1ItZC92SfMsH7ExlJ8Faa+oFYCcdccb18oNxN5E5hHCybqc4Jj4ImzA2Nzx/xyCl0G9Ws0l1Ix29wWLPOxdGS0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=dh43/HP/; arc=fail smtp.client-ip=40.107.96.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="dh43/HP/" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R4DbTsB0Nt/iM335dmFTdRJ3Y6wWgiPd81H05xycidSkk0hyEVcom9G1IEdVDsrPCFQCrFKyAwf95fGQ3qFAcHtOM2v2XtkGoA6BeuoxwxXlqR7aY03CMrl0KNkzV1aIoKdsMDV/sBBCul6rIy1cz/gXGy5A1MtTHMxc2WMKCmMmOytAcjZNKSB7tXVDLQ7Jichhj6pnQP22TOw0puoOKjcKU27v3vw9XwUGhGYAUTGKl2iJWoLl5HqVSzeD2zE15oyjATF7oTHGWEVV+93oP8P1rvJqwcp7swfj6kLdlSTgGBtReeTUjuO4E8ppcSjcc2mPuwotxiHEEfxbn/d/dg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=VAaNQ5s4VIYc2WpMXEKOfa4NAJy+MC6nPf4guP+lWbg=; b=kqpSYvDlv9N/JNEniQ6XRwmJcMlU4MuXlhXR4uiTZA9nPBd0r9v8i3SnlgS7suxRgA21PugWEtqQXk6yxikqdf3y5oMlo8PgdCh4rwuEDplcbpUd0Z3QIDv5coER6CBJtEcbr80bba3Iy0tsQbnME8XxFEyA9CQVL/7oM0fNqjcNO4dw6ZO9HF78TyP7UXBDdTGWiClbE/DpLGVMRJYCjxibgga00LcDgrMA3a0YYHdnMed+VM6Rid1+3SIroE+wPKjqV06ClhtymfXKICBN3U7JhIZoyPw7iUwbHwrZOxvmjFmTzMBWQwWfMVw5cqzwiW1bO1gNO/hW37oz4GlFyw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=VAaNQ5s4VIYc2WpMXEKOfa4NAJy+MC6nPf4guP+lWbg=; b=dh43/HP/KZzhswuNHAOChsRGprFV32g95Ine+TW3jJ9YWtMzrumSQ51T1v7vVvMC8YkxPrpe6Ke+4d/PW+w37pguuFHaFcGCAm15bKJy2mQqqg1HwMCZMWTBhfe/fhQJ25E8XNpw9ZZeS+zXLNZwQ1Ai7ashC6do3EIqC39j5OY= Received: from PH0PR07CA0097.namprd07.prod.outlook.com (2603:10b6:510:4::12) by SN7PR12MB7978.namprd12.prod.outlook.com (2603:10b6:806:34b::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.31; Fri, 29 Mar 2024 01:09:47 +0000 Received: from SN1PEPF0002BA4C.namprd03.prod.outlook.com (2603:10b6:510:4:cafe::fb) by PH0PR07CA0097.outlook.office365.com (2603:10b6:510:4::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.13 via Frontend Transport; Fri, 29 Mar 2024 01:09:47 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4C.mail.protection.outlook.com (10.167.242.69) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:09:47 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:09:45 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 15/17] x86/resctrl: Introduce the interface switch between ABMC and legacy_mbm Date: Thu, 28 Mar 2024 20:06:48 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4C:EE_|SN7PR12MB7978:EE_ X-MS-Office365-Filtering-Correlation-Id: a1578d03-72d8-4b7d-7ace-08dc4f8ced25 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: FtHMWjssk5hExAfjpF8tB19Q0hl703bV35tSu3ak4DM86QGWSd2CUZnKzaUcq8TienyvYJNiS43G3qIfjvWRvlzCqSfWM1DfoiiR3KjoNnFkx/QsZugXrDoLVM2egzTfYoudykhUopytc7Nvvze0ZwziSEKpHaWN3Hp/9A+OPlZHIALUXV7EcMyFUgcInNTxY5WoG0nZEN8WinnQmDxFkUUk8Uve5tAdNAbeX8jjoKqOr5O17ZI8m8gCPXFwMwx21R/l17nGolwJzDunnjYm93itzgPaejOvyP9TAEVWB+0/p9uZUnjEo1CgAE+8j2jHWZH/nKEtB6KncfmtLmDl9l/3AwzrzyiaoQX65y3ryq/qYUG+Tf8bsP2QVe5NTg6E2sAEZHul73DLJjXr5fs4Gv2GqWh+f7tdno9BvlWbI/Ak2P4sRlQ1szDg1cSOZgpKA5NzzPIx0RHw3YZsj8GqfSDpEbJEi7CMAH9CF0Y3n2ifa0cyGeYURn3Vuz+e/X061Mn5XRhSS/nnlIzZH+x6N/nOghdxDmEUqjFsfW9EE9dqcy71oe1gMxQk88NkLIqq3I76w0XbY9G0BrQxRhhjbv8FQW+PtjFucGFyo7Xg0q0ZfqI6urNVmtvmDVFrE82F1wgx3NyNh0eTmCx3aY14sw1bW+JsSmlG7Oz31W7MMx54cE53SncuJZpQEbzPzOOikGIxYTn2JQtXWn7Oz7Hxrh+vAWbC4H8i7L3h1rRJGQ6WbCF73HCSkiQUZ0k41/DP X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(1800799015)(82310400014)(376005)(7416005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:09:47.1815 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a1578d03-72d8-4b7d-7ace-08dc4f8ced25 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4C.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR12MB7978 Content-Type: text/plain; charset="utf-8" Introduce rdtgroup_mbm_assign_write to switch between ABMC and legacy_mbm. By default ABMC is enabled on resctrl mount if the feature is available. However, user will have the option to go back to legacy_mbm if required. Signed-off-by: Babu Moger --- v3: New patch to address the review comments from upstream. --- Documentation/arch/x86/resctrl.rst | 14 ++++++++- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 39 +++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/re= sctrl.rst index e06ffddb64f6..3e441b828765 100644 --- a/Documentation/arch/x86/resctrl.rst +++ b/Documentation/arch/x86/resctrl.rst @@ -260,7 +260,19 @@ with the following files: "mbm_assign": Available when assignable monitoring features are supported. Reports the list of assignable features supported and the enclosed bracke= ts - indicate the feature is enabled. + indicate the feature is enabled. Users will have the option to switch + between the monitoring features. + Examples: + + * To enable ABMC feature: + :: + + # echo "abmc" > /sys/fs/resctrl/info/L3_MON/mbm_assign + + * To enable the legacy monitoring feature: + :: + + # echo "legacy_mbm" > /sys/fs/resctrl/info/L3_MON/mbm_assign =20 "mbm_assign_cntrs": The number of assignable counters available when the assignable monitoring diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 2e58024e95e2..a6e0ef2631ae 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -896,6 +896,42 @@ static int rdtgroup_mbm_assign_show(struct kernfs_open= _file *of, return 0; } =20 +/* + * rdtgroup_mode_write - Modify the resource group's mode + */ +static ssize_t rdtgroup_mbm_assign_write(struct kernfs_open_file *of, + char *buf, size_t nbytes, loff_t off) +{ + struct rdt_resource *r =3D of->kn->parent->priv; + int ret; + + if (!r->mbm_assign_capable) + return -EINVAL; + + /* Valid input requires a trailing newline */ + if (nbytes =3D=3D 0 || buf[nbytes - 1] !=3D '\n') + return -EINVAL; + + buf[nbytes - 1] =3D '\0'; + + cpus_read_lock(); + mutex_lock(&rdtgroup_mutex); + + rdt_last_cmd_clear(); + + if (!strcmp(buf, "legacy_mbm")) + ret =3D resctrl_arch_set_abmc_enabled(RDT_RESOURCE_L3, false); + else if (!strcmp(buf, "abmc")) + ret =3D resctrl_arch_set_abmc_enabled(RDT_RESOURCE_L3, true); + else + ret =3D -EINVAL; + + mutex_unlock(&rdtgroup_mutex); + cpus_read_unlock(); + + return ret ?: nbytes; +} + static int rdtgroup_mbm_assign_cntrs_show(struct kernfs_open_file *of, struct seq_file *s, void *v) { @@ -2078,9 +2114,10 @@ static struct rftype res_common_files[] =3D { }, { .name =3D "mbm_assign", - .mode =3D 0444, + .mode =3D 0644, .kf_ops =3D &rdtgroup_kf_single_ops, .seq_show =3D rdtgroup_mbm_assign_show, + .write =3D rdtgroup_mbm_assign_write, }, { .name =3D "mbm_assign_cntrs", --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2078.outbound.protection.outlook.com [40.107.212.78]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 001EC14295; Fri, 29 Mar 2024 01:10:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.212.78 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674652; cv=fail; b=RlT3j+hclP1Cy9hK8fgK8lpUe3GAV/Hoq0ip3TYzYMNzChXKNFrvnkoxqbn8GyeiVuiWI0WfzcHEmGWbLwyTaLpnTrDDd6cN67+mRArw0kkyWHAAwRj3/gZI1D3O3D21tb/V4tDbVRh9yUk9WivqECtbbclkIG99+tj5+EXoCdk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674652; c=relaxed/simple; bh=j/L/8Fd2ZDtatE8Tf9X0+9t98XB31LL/TEEV817eMnk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ECWLY0a+AwLkeHdi+hotA4Wl22ywu3niqVlkuNMnAS+biAhV7o/54JFN0wSjEB8T1AdjZaUDPpDrXSG0abeBRTGQqavBmBeHAfdNCc7QNSzXxCeVIYCB/E5x1pm6JypfdRKWr8Xt+5xaQNLGj7N/z6uVQbRhe09gg8tX3tHiH7w= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=eRLnAt2m; arc=fail smtp.client-ip=40.107.212.78 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="eRLnAt2m" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VjOwqWtS2CQVfv8XwKds121pkEtmX9z22aJTItsKW5PAe0itN6Dnq2NnegdTpJrIO1EHWleaJYHMhClfftNwSM8TbV/2dbMjAlhvipus1Cbgg6flFzSL2mkaqCvC6qBBmzoEmUoyzvfpfAV+hqIBnXmaBD8gJ4NHsuAZNupZALMADkl/oMR2Fc3ThORg20FoSHq99u4n4V+h2caYL/zlhAf74VUnWgSPa/D5xaP9gHeytKDewkWAcbe5C/1340yiEGMzWO7kIbHIp4krESMuj8ZETHPmtkLONTMc3pkMAPMlMcM0ej0anFgajc5gO+3BDvcUHot1Vb1++OuA0jbPWg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vRMZ12XDUFWCwF6B9BdCEs/RhTenTJMLE1euyylpN40=; b=RGLDTJJE4BRRbhU+6KGqT6iGrLEuwWB/lqKxvqlZXDLgX++g53N7JIdMhl2pgrhH9yIAogPN16l4WxE8lFgjxNzpciHn3+VvNezh2hgt6RO0oPke90aTGLAPX0FCRzDu+1JZRFVAT1uLoPeXfrXOBsgSrZ6u19wf2akCUFBu6ts81fKLkqE1lDJqtMLOovAl8bNsXzNuc7R0wYmVpgJF6SwcrC12dWlhCEpkvZpknReXsS9JcQwGyPzhwbe02fwovrqrp4L0vvhN1tjj5Q6vRlvg9OPDACqIbeQOoApHpIJLE5/L4bk/TKXMbzPr4s3QBt6GkKr4eILQ8LMxmOXLaw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vRMZ12XDUFWCwF6B9BdCEs/RhTenTJMLE1euyylpN40=; b=eRLnAt2m89DK9XyM5+r7m6bSw9SUyhFLS0s1XAPRL+OvvYlq9iE97SV5TjTPiKrVoq65Y8zQq8VbqVpGQiYQReaxVpWuRMvBjQbSdqUEayy6Eo1kzljtExIES7SCX8yZuxwghsXQN39YmCSvNLF7Qc8wOziaFhfLJG1wxIh4ehs= Received: from PH7PR17CA0036.namprd17.prod.outlook.com (2603:10b6:510:323::20) by CY8PR12MB7729.namprd12.prod.outlook.com (2603:10b6:930:84::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.31; Fri, 29 Mar 2024 01:10:48 +0000 Received: from SN1PEPF0002BA50.namprd03.prod.outlook.com (2603:10b6:510:323:cafe::50) by PH7PR17CA0036.outlook.office365.com (2603:10b6:510:323::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.33 via Frontend Transport; Fri, 29 Mar 2024 01:10:48 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA50.mail.protection.outlook.com (10.167.242.73) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:10:47 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:09:53 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 16/17] x86/resctrl: Introduce interface to list assignment states of all the groups Date: Thu, 28 Mar 2024 20:06:49 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA50:EE_|CY8PR12MB7729:EE_ X-MS-Office365-Filtering-Correlation-Id: 718afdde-e307-4419-8f80-08dc4f8d1157 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Qf/DZXHlPxpYovOOIl3gsjrC7g/DQUEi+T4grzZzBCf8AaZ1Ap0banCJ1NzVkh0Z9gekKU9Ydqz+Qb7tLnSfgffROqYhO3iyTbpxWlwIwFubPKzy6wMyeOkzlU9V7mxNo+md4TLsHVB7jUSiI3I6SYAXdNHQ2729FxpyJndbk1v37aAX0sx+I7NHF6yzN4+97ieK67yEs1AwoWKw6F8qgGyAu1zujvUzoSEpqL8xkfo4F8R4LsEirHzQyKWalXZpoqb3j0qMoaKIKfVZ/gUbH5+pnbqDEeQj2qh651giUUOkxjEE/iho/d8p/Ajvvfgh6Wz0Ae1OAo8iOvaNlEBAMJVsAMeSAAVik0IPCl/i9JkJ//IsBhLwTy80MfpuCv3ttbJEq3IDCE4ADQErNlx4/fNSpuR6SDfnl7CeecTd+OFnts8epbdzPnvcGoKH/W36tF09JSyCpMxqzYw+7jw+V47220Ej3YPWGnHps37hmI8pHpWLZgrKn/3wz8OJnpSgOnWi4Vp0GVB5iNSl62/E4XFloT1/9frNc7kZExb+6t4UosMDJhWL87B+ezSohcsKw3NPfQ1301ysnclzluBWG+Ac0LOC4aF3j43aK0XVlzhUguEMU8EYCxs1ks9CLCuFtdYuIe0muoFRBizKXgdksnSu8C4O4OX3LBwJTDcO+m1lotc/CeD6fzppvfycWwhP2hcDD24pD35/V2UtDVkiuA== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(82310400014)(36860700004)(376005)(1800799015)(7416005);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:10:47.8920 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 718afdde-e307-4419-8f80-08dc4f8d1157 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA50.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR12MB7729 Content-Type: text/plain; charset="utf-8" Introduce rdtgroup_mbm_assign_control_show list assignment states of all the resctrl groups. List follows the following format: - Default CTRL_MON group: "//=3D" - Non-default CTRL_MON group: "//=3D" - Child MON group of default CTRL_MON group: "//=3D" - Child MON group of non-default CTRL_MON group: "//=3D" Signed-off-by: Babu Moger --- v3: New patch. Addresses the feedback to provide the global assignment interface. https://lore.kernel.org/lkml/c73f444b-83a1-4e9a-95d3-54c5165ee782@intel= .com/ --- Documentation/arch/x86/resctrl.rst | 51 ++++++++++++++++ arch/x86/kernel/cpu/resctrl/monitor.c | 1 + arch/x86/kernel/cpu/resctrl/rdtgroup.c | 85 ++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/re= sctrl.rst index 3e441b828765..2d96565501ab 100644 --- a/Documentation/arch/x86/resctrl.rst +++ b/Documentation/arch/x86/resctrl.rst @@ -278,6 +278,57 @@ with the following files: The number of assignable counters available when the assignable monitoring feature is supported. =20 +"mbm_assign_control": + Available when assignable monitoring features are supported. + Reports the resctrl group and assignment status of each group. + + List follows the following format: + + * Default CTRL_MON group: + "//=3D" + + * Non-default CTRL_MON group: + "//=3D" + + * Child MON group of default CTRL_MON group: + "//=3D" + + * Child MON group of non-default CTRL_MON group: + "//=3D" + + Assignment flags can be one of the following: + :: + + t MBM total event is assigned + l MBM local event is assigned + tl Both total and local MBM events are assigned + _ None of the MBM events are assigned + + Examples: + :: + + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control + //0=3Dtl;1=3Dtl; + /child_default_mon_grp/0=3Dt;1=3Dt; + non_default_ctrl_mon_grp//0=3Dl;1=3Dl; + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=3D_;1=3D_; + + //0=3Dtl;1=3Dtl; + Both the events on the default group are assigned. + + /child_default_mon_grp/0=3Dt;1=3Dt; + Only total event on this mon group is assigned. This is a child + monitor group of the default control mon group. + + non_default_ctrl_mon_grp//0=3Dl;1=3Dl; + Only local event on this control mon group is assigned. This is a + non default control mon group. + + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=3D_;1=3D_; + None of events are assigned on this mon group. This is a child + monitor group of the non default control mon group. + + "max_threshold_occupancy": Read/write file provides the largest value (in bytes) at which a previously used LLC_occupancy diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/re= sctrl/monitor.c index 8677dbf6de43..8a2e2afc85e8 100644 --- a/arch/x86/kernel/cpu/resctrl/monitor.c +++ b/arch/x86/kernel/cpu/resctrl/monitor.c @@ -1062,6 +1062,7 @@ int __init rdt_get_mon_l3_config(struct rdt_resource = *r) r->mbm_assign_capable =3D ABMC_ASSIGN; resctrl_file_fflags_init("mbm_assign", RFTYPE_MON_INFO); resctrl_file_fflags_init("mbm_assign_cntrs", RFTYPE_MON_INFO); + resctrl_file_fflags_init("mbm_assign_control", RFTYPE_MON_INFO); } } =20 diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index a6e0ef2631ae..9fd37b6c3b24 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -932,6 +932,85 @@ static ssize_t rdtgroup_mbm_assign_write(struct kernfs= _open_file *of, return ret ?: nbytes; } =20 +static char *mon_state_to_str(int mon_state, char *str) +{ + char *tmp =3D str; + + switch (mon_state) { + case ASSIGN_NONE: + *tmp++ =3D '_'; + break; + case (ASSIGN_TOTAL | ASSIGN_LOCAL): + *tmp++ =3D 't'; + *tmp++ =3D 'l'; + break; + case ASSIGN_TOTAL: + *tmp++ =3D 't'; + break; + case ASSIGN_LOCAL: + *tmp++ =3D 'l'; + break; + default: + break; + } + + *tmp =3D '\0'; + return str; +} + +static int rdtgroup_mbm_assign_control_show(struct kernfs_open_file *of, + struct seq_file *s, void *v) +{ + struct rdt_resource *r =3D of->kn->parent->priv; + struct rdt_hw_resource *hw_res =3D resctrl_to_arch_res(r); + struct rdt_domain *dom; + struct rdtgroup *rdtg; + int grp_default =3D 0; + char str[10]; + + if (!hw_res->abmc_enabled) { + rdt_last_cmd_puts("ABMC feature is not enabled\n"); + return -EINVAL; + } + + mutex_lock(&rdtgroup_mutex); + + list_for_each_entry(rdtg, &rdt_all_groups, rdtgroup_list) { + struct rdtgroup *crg; + + if (rdtg =3D=3D &rdtgroup_default) { + grp_default =3D 1; + seq_puts(s, "//"); + } else { + grp_default =3D 0; + seq_printf(s, "%s//", rdtg->kn->name); + } + + list_for_each_entry(dom, &r->domains, list) + seq_printf(s, "%d=3D%s;", dom->id, + mon_state_to_str(rdtg->mon.mon_state, str)); + seq_putc(s, '\n'); + + list_for_each_entry(crg, &rdtg->mon.crdtgrp_list, + mon.crdtgrp_list) { + if (grp_default) + seq_printf(s, "/%s/", crg->kn->name); + else + seq_printf(s, "%s/%s/", rdtg->kn->name, + crg->kn->name); + + list_for_each_entry(dom, &r->domains, list) + seq_printf(s, "%d=3D%s;", dom->id, + mon_state_to_str(crg->mon.mon_state, str)); + seq_putc(s, '\n'); + } + } + + mutex_unlock(&rdtgroup_mutex); + + return 0; +} + static int rdtgroup_mbm_assign_cntrs_show(struct kernfs_open_file *of, struct seq_file *s, void *v) { @@ -2119,6 +2198,12 @@ static struct rftype res_common_files[] =3D { .seq_show =3D rdtgroup_mbm_assign_show, .write =3D rdtgroup_mbm_assign_write, }, + { + .name =3D "mbm_assign_control", + .mode =3D 0444, + .kf_ops =3D &rdtgroup_kf_single_ops, + .seq_show =3D rdtgroup_mbm_assign_control_show, + }, { .name =3D "mbm_assign_cntrs", .mode =3D 0444, --=20 2.34.1 From nobody Wed Feb 11 22:24:34 2026 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2085.outbound.protection.outlook.com [40.107.93.85]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 064DD1DFEA; Fri, 29 Mar 2024 01:10:55 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.93.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674658; cv=fail; b=uS/eVyFkTJ2escWU7ZbNElZ91BFqBu8+cBvsNMaXrbFLrWHeSVDFYvpjSTfoeZxnnW9RfTgFREq/x54ynkwcHPkuAUL9dhn0Tmztk1djaAlh9xmZwG5U/RIii5ba7a5oy2umtNF68zT8CyrxRVK9K7FBbPcH2Bi2r3FGHOwIKv0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1711674658; c=relaxed/simple; bh=FGWfsiiy7V1WKzRzqo8vZad/aoLHvbhS9Xl/OUhDhC0=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=rwdNiSLSMQjr4vuP1igeNizoJaEGldnWaJvET2BQ7jUkGF0aJUUx0We1cMcoWNFhhCdlv0G6fm4pu0rwh4VRHbwbzyx9yOov4BzldzOOj1eb9taiAUG4v3Zn4NteINNlBoZhgE5FPZfa9dI4Q2XgffErRCEpS/M1pvFJlOHqa84= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=YRr0Li9m; arc=fail smtp.client-ip=40.107.93.85 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="YRr0Li9m" ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JN48StyNMFMxZzzknLHzB6JPFpvRI74MRbklLezFXjced6KPNXPuIIjBsVpaQThkVeWGeZ67cYzUR7THglLebGH4uTMpQQ6p3ZGEyGi7autKba9NWLe4BHeB6wic/u9zhI8Ulkwf9laMpY7gXocVI9f15DYhWt/yn8V27BrJ8BL/AGNHLq+C+aooJtGe/c9AfvCLeg60YTJU6+ua6k7KbYhfjnM0b8tWnJZY25M65JTPSnWG9p1bWFyaXnG12TYvD/ILl1b8Klv8fbhq+cPfHYyo+Ls7SHz0y+IuPx6bdcvYA6Fu9WG5Lzqa4meC9j/m0prOUUzV8yBVG9TuYePK7w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JrfYPitn0CCm09cuqxXJQ/9fT+ii8ETw5F8/sXsPKQY=; b=cfLxvrM8MgIKbt/xeTDg5hnseh3k9YcjbOrhSK1D9mKWYu1AwI6252SmacXFbzAxs3fe6/lgrSwl8NF9p9KEvsWpaDUrd5E5EIGtEZbRHq2PNfcX6Ep3pYqtuDEHUWPT1RhOPneEKbhyKp/CFaAq3CIslWt0sf0DurM+kfxH+1CkfY0DSofdOXlIIDwd3meg6MR2mdYKl8AbJ3k5zEu4UcMv78Ds+AMbyiattp4HOGLAxVWIwsCyv1rclELmtSTZV7KUt8dVD9Supx4dxusFY+Fp+FysRmcWw47CdW2GcSBbnHEfsDuk2KamLiy1ba5zxeym7Zo5rWDasJc6uWTGsQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=lwn.net smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JrfYPitn0CCm09cuqxXJQ/9fT+ii8ETw5F8/sXsPKQY=; b=YRr0Li9myTgWuzewLkzPmyn4CjJWHFgAxtH+JlG3j6FbR2A5STYS/lgg5+cTtJCVFOHQM18BS2w15of6uRYg7lEvxf7b/dJ3yeaQJsxuXTkJhzScvKtz9LKHqWXKBNLR/KbKuVyRoSc6dd73pUo2ootkZd65okliYiZNHnBJ6fY= Received: from SA1PR05CA0015.namprd05.prod.outlook.com (2603:10b6:806:2d2::24) by MW4PR12MB6875.namprd12.prod.outlook.com (2603:10b6:303:209::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.32; Fri, 29 Mar 2024 01:10:52 +0000 Received: from SN1PEPF0002BA4E.namprd03.prod.outlook.com (2603:10b6:806:2d2:cafe::c1) by SA1PR05CA0015.outlook.office365.com (2603:10b6:806:2d2::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.37 via Frontend Transport; Fri, 29 Mar 2024 01:10:52 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SN1PEPF0002BA4E.mail.protection.outlook.com (10.167.242.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7409.10 via Frontend Transport; Fri, 29 Mar 2024 01:10:52 +0000 Received: from bmoger-ubuntu.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 28 Mar 2024 20:10:50 -0500 From: Babu Moger To: , , , , , , CC: , , , , , , , , , , , , , , , , , , , , , , , , , , , , Subject: [RFC PATCH v3 17/17] x86/resctrl: Introduce interface to modify assignment states of the groups Date: Thu, 28 Mar 2024 20:06:50 -0500 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB04.amd.com (10.181.40.145) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SN1PEPF0002BA4E:EE_|MW4PR12MB6875:EE_ X-MS-Office365-Filtering-Correlation-Id: bce07112-2d7b-407b-c0ae-08dc4f8d1411 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u4ka+AY2SdjrfUn4SMH/VPLQMFfrbCMf8FIf8nQLyaalgvYsQP11l43A/qk6Tth8nCTbZaHYrQyKKw4SUuidK46MO8NmltTHSx0aJy7Gt6fTT1S8DiUfj6uBuX0N1Eg4AlfYUXTTm0IRpPmdLRbUmbBdN9uipfigVeyN3oMH1h1bgVc5TO1Te5M2L5JqlrnvS4wUXzD+/dPsaW2e/pe7ScGLfSYNjhgAaWwCD093NsgKsgm1S8ZQHdncBChIhVog4DNUNKiGuYWNh8Dz9zcKOQvjqNDanscUm2S+g3X6jZXCn+BYl9Z/1aldcRO4lbtWtz8G+VdFWcQAyvVHz3qMjL+2oz2p+HsnnYzT2QsNGhYGzc2eWHG0ctfPCYhynFzGYxzuTf2TOy8qtuokmxbDBb5uNDJdOmUjQYlKWSj+f9VJAfVvj7bxSgQVHoChP3fu3drNelOZsqCPkR69MiRkZAxPqwY7Qh1DTWaoWEHrM2nTFkPH2XXtYLcQE4v4blkn9RMgoT62f8HkTpzzRlb6NcWIidLmY7HLZA78z+rR1EZi75QDBPhg18HRZOktmaYrkqhc1QXgwZhnLSugSWbhk8NMHMLwmuqgO01C2RVj2B+0AKCUpINTnPTqkWTL+Wx3QJn8xMe694K+JhIDNfHk4QB7Nx2XRFEaJ6bZtsBHVpibPP44BUjKruPAVN1zN1krkY9y8hmnY99CDPbHE9ZfKg== X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230031)(36860700004)(7416005)(376005)(1800799015)(82310400014);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Mar 2024 01:10:52.4677 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bce07112-2d7b-407b-c0ae-08dc4f8d1411 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SN1PEPF0002BA4E.namprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR12MB6875 Content-Type: text/plain; charset="utf-8" Introduce rdtgroup_mbm_assign_control_write to assign mbm events. Assignment state can be updated by writing to this interface. Assignment states are applied on all the domains. Assignment on one domain applied on all the domains. User can pass one valid domain and assignment will be updated on all the available domains. Format is similar to the list format with addition of op-code for the assignment operation. * Default CTRL_MON group: "//" * Non-default CTRL_MON group: "//" * Child MON group of default CTRL_MON group: "//" * Child MON group of non-default CTRL_MON group: "//" Op-code can be one of the following: =3D Update the assignment to match the flags + Assign a new state - Unassign a new state _ Unassign all the states Signed-off-by: Babu Moger --- v3: New patch. Addresses the feedback to provide the global assignment interface. https://lore.kernel.org/lkml/c73f444b-83a1-4e9a-95d3-54c5165ee782@intel= .com/ --- Documentation/arch/x86/resctrl.rst | 71 ++++++++ arch/x86/kernel/cpu/resctrl/rdtgroup.c | 236 ++++++++++++++++++++++++- 2 files changed, 306 insertions(+), 1 deletion(-) diff --git a/Documentation/arch/x86/resctrl.rst b/Documentation/arch/x86/re= sctrl.rst index 2d96565501ab..64ec70637c66 100644 --- a/Documentation/arch/x86/resctrl.rst +++ b/Documentation/arch/x86/resctrl.rst @@ -328,6 +328,77 @@ with the following files: None of events are assigned on this mon group. This is a child monitor group of the non default control mon group. =20 + Assignment state can be updated by writing to this interface. + + NOTE: Assignment on one domain applied on all the domains. User can + pass one valid domain and assignment will be updated on all the + available domains. + + Format is similar to the list format with addition of op-code for the + assignment operation. + + * Default CTRL_MON group: + "//" + + * Non-default CTRL_MON group: + "//" + + * Child MON group of default CTRL_MON group: + "//" + + * Child MON group of non-default CTRL_MON group: + "//" + + Op-code can be one of the following: + :: + + =3D Update the assignment to match the flags + + Assign a new state + - Unassign a new state + _ Unassign all the states + + Examples: + :: + + Initial group status: + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control + //0=3Dtl;1=3Dtl; + /child_default_mon_grp/0=3Dtl;1=3Dtl; + non_default_ctrl_mon_grp//0=3Dtl;1=3Dtl; + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=3Dtl;1=3Dtl; + + To update the default group to assign only total event. + # echo "//0=3Dt" > /sys/fs/resctrl/info/L3_MON/mbm_assign_control + + Assignment status after the update: + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control + //0=3Dt;1=3Dt; + /child_default_mon_grp/0=3Dtl;1=3Dtl; + non_default_ctrl_mon_grp//0=3Dtl;1=3Dtl; + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=3Dtl;1=3Dtl; + + To update the MON group child_default_mon_grp to remove local event: + # echo "/child_default_mon_grp/0-l" > /sys/fs/resctrl/info/L3_MON/mbm_a= ssign_control + + Assignment status after the update: + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control + //0=3Dt;1=3Dt; + /child_default_mon_grp/0=3Dt;1=3Dt; + non_default_ctrl_mon_grp//0=3Dtl;1=3Dtl; + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=3Dtl;1=3Dtl; + + To update the MON group non_default_ctrl_mon_grp/child_non_default_mon_= grp to + remove both local and total events: + # echo "non_default_ctrl_mon_grp/child_non_default_mon_grp/0_" > + /sys/fs/resctrl/info/L3_MON/mbm_assign_control + + Assignment status after the update: + # cat /sys/fs/resctrl/info/L3_MON/mbm_assign_control + //0=3Dt;1=3Dt; + /child_default_mon_grp/0=3Dt;1=3Dt; + non_default_ctrl_mon_grp//0=3Dtl;1=3Dtl; + non_default_ctrl_mon_grp/child_non_default_mon_grp/0=3D_;1=3D_; + =20 "max_threshold_occupancy": Read/write file provides the largest value (in diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/r= esctrl/rdtgroup.c index 9fd37b6c3b24..7f8b1386287a 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -958,6 +958,30 @@ static char *mon_state_to_str(int mon_state, char *str) return str; } =20 +static int str_to_mon_state(char *flag) +{ + int i, mon_state =3D 0; + + for (i =3D 0; i < strlen(flag); i++) { + switch (*(flag + i)) { + case 't': + mon_state |=3D ASSIGN_TOTAL; + break; + case 'l': + mon_state |=3D ASSIGN_LOCAL; + break; + case '_': + mon_state =3D ASSIGN_NONE; + break; + default: + mon_state =3D ASSIGN_NONE; + break; + } + } + + return mon_state; +} + static int rdtgroup_mbm_assign_control_show(struct kernfs_open_file *of, struct seq_file *s, void *v) { @@ -1011,6 +1035,215 @@ static int rdtgroup_mbm_assign_control_show(struct = kernfs_open_file *of, return 0; } =20 +static struct rdtgroup *resctrl_get_rdtgroup(enum rdt_group_type rtype, ch= ar *p_grp, char *c_grp) +{ + struct rdtgroup *rdtg, *crg; + + if (rtype =3D=3D RDTCTRL_GROUP && *p_grp =3D=3D '\0') { + return &rdtgroup_default; + } else if (rtype =3D=3D RDTCTRL_GROUP) { + list_for_each_entry(rdtg, &rdt_all_groups, rdtgroup_list) + if (!strcmp(p_grp, rdtg->kn->name)) + return rdtg; + } else if (rtype =3D=3D RDTMON_GROUP) { + list_for_each_entry(rdtg, &rdt_all_groups, rdtgroup_list) { + if (!strcmp(p_grp, rdtg->kn->name)) { + list_for_each_entry(crg, &rdtg->mon.crdtgrp_list, + mon.crdtgrp_list) { + if (!strcmp(c_grp, crg->kn->name)) + return crg; + } + } + } + } + + return NULL; +} + +static int resctrl_process_flags(enum rdt_group_type rtype, char *p_grp, c= har *c_grp, char *tok) +{ + struct rdt_resource *r =3D &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; + int op, mon_state, assign_state, unassign_state; + char *dom_str, *id_str, *op_str; + struct rdtgroup *rdt_grp; + struct rdt_domain *d; + unsigned long dom_id; + int ret, found =3D 0; + + rdt_grp =3D resctrl_get_rdtgroup(rtype, p_grp, c_grp); + + if (!rdt_grp) { + rdt_last_cmd_puts("Not a valid resctrl group\n"); + return -EINVAL; + } + +next: + if (!tok || tok[0] =3D=3D '\0') + return 0; + + /* Start processing the strings for each domain */ + dom_str =3D strim(strsep(&tok, ";")); + + op_str =3D strpbrk(dom_str, "=3D+-_"); + + if (op_str) { + op =3D *op_str; + } else { + rdt_last_cmd_puts("Missing operation =3D, +, -, _ character\n"); + return -EINVAL; + } + + id_str =3D strsep(&dom_str, "=3D+-_"); + + if (!id_str || kstrtoul(id_str, 10, &dom_id)) { + rdt_last_cmd_puts("Missing domain id\n"); + return -EINVAL; + } + + /* Verify if the dom_id is valid */ + list_for_each_entry(d, &r->domains, list) { + if (d->id =3D=3D dom_id) { + found =3D 1; + break; + } + } + if (!found) { + rdt_last_cmd_printf("Invalid domain id %ld\n", dom_id); + return -EINVAL; + } + + if (op !=3D '_') + mon_state =3D str_to_mon_state(dom_str); + + assign_state =3D 0; + unassign_state =3D 0; + + switch (op) { + case '+': + assign_state =3D mon_state; + break; + case '-': + unassign_state =3D mon_state; + break; + case '=3D': + assign_state =3D mon_state; + unassign_state =3D (ASSIGN_TOTAL | ASSIGN_LOCAL) & ~assign_state; + break; + case '_': + unassign_state =3D ASSIGN_TOTAL | ASSIGN_LOCAL; + break; + default: + break; + } + + if (assign_state & ASSIGN_TOTAL) + ret =3D rdtgroup_assign_abmc(rdt_grp, QOS_L3_MBM_TOTAL_EVENT_ID, + ASSIGN_TOTAL); + if (ret) + goto out_fail; + + if (assign_state & ASSIGN_LOCAL) + ret =3D rdtgroup_assign_abmc(rdt_grp, QOS_L3_MBM_LOCAL_EVENT_ID, + ASSIGN_LOCAL); + + if (ret) + goto out_fail; + + if (unassign_state & ASSIGN_TOTAL) + ret =3D rdtgroup_unassign_abmc(rdt_grp, QOS_L3_MBM_TOTAL_EVENT_ID, + ASSIGN_TOTAL); + if (ret) + goto out_fail; + + if (unassign_state & ASSIGN_LOCAL) + ret =3D rdtgroup_unassign_abmc(rdt_grp, QOS_L3_MBM_LOCAL_EVENT_ID, + ASSIGN_LOCAL); + if (ret) + goto out_fail; + + goto next; + +out_fail: + + return -EINVAL; +} + +static ssize_t rdtgroup_mbm_assign_control_write(struct kernfs_open_file *= of, + char *buf, size_t nbytes, loff_t off) +{ + struct rdt_resource *r =3D of->kn->parent->priv; + char *token, *cmon_grp, *mon_grp; + struct rdt_hw_resource *hw_res; + int ret; + + hw_res =3D resctrl_to_arch_res(r); + if (!hw_res->abmc_enabled) + return -EINVAL; + + /* Valid input requires a trailing newline */ + if (nbytes =3D=3D 0 || buf[nbytes - 1] !=3D '\n') + return -EINVAL; + + buf[nbytes - 1] =3D '\0'; + rdt_last_cmd_clear(); + + cpus_read_lock(); + mutex_lock(&rdtgroup_mutex); + + while ((token =3D strsep(&buf, "\n")) !=3D NULL) { + if (strstr(token, "//")) { + /* + * The control mon group processing: + * default CTRL_MON group: "//" + * non-default CTRL_MON group: "//flags" + * The CTRL_MON group will be empty string if it is a + * default group. + */ + cmon_grp =3D strsep(&token, "//"); + + /* + * strsep returns empty string for contiguous delimiters. + * Make sure check for two consicutive delimiters and + * advance the token. + */ + mon_grp =3D strsep(&token, "//"); + if (*mon_grp !=3D '\0') { + rdt_last_cmd_printf("Invalid CTRL_MON group format %s\n", token); + ret =3D -EINVAL; + break; + } + + ret =3D resctrl_process_flags(RDTCTRL_GROUP, cmon_grp, mon_grp, token); + if (ret) + break; + } else if (strstr(token, "/")) { + /* + * Mon group processing: + * MON_GROUP inside default CTRL_MON group: "//" + * MON_GROUP within CTRL_MON group: "//" + */ + cmon_grp =3D strsep(&token, "/"); + + /* Extract the MON_GROUP. It cannot be empty string */ + mon_grp =3D strsep(&token, "/"); + if (*mon_grp =3D=3D '\0') { + rdt_last_cmd_printf("Invalid MON_GROUP format %s\n", token); + ret =3D -EINVAL; + break; + } + + ret =3D resctrl_process_flags(RDTMON_GROUP, cmon_grp, mon_grp, token); + if (ret) + break; + } + } + + mutex_unlock(&rdtgroup_mutex); + cpus_read_unlock(); + + return ret ?: nbytes; +} + static int rdtgroup_mbm_assign_cntrs_show(struct kernfs_open_file *of, struct seq_file *s, void *v) { @@ -2200,9 +2433,10 @@ static struct rftype res_common_files[] =3D { }, { .name =3D "mbm_assign_control", - .mode =3D 0444, + .mode =3D 0644, .kf_ops =3D &rdtgroup_kf_single_ops, .seq_show =3D rdtgroup_mbm_assign_control_show, + .write =3D rdtgroup_mbm_assign_control_write, }, { .name =3D "mbm_assign_cntrs", --=20 2.34.1