From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) (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 32EC93FADF6 for ; Tue, 4 Aug 2026 17:19:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=192.198.163.12 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785863977; cv=fail; b=QMA5dKMtN8aE6NuvftSg05VOzX3MFRcB5NJeBBOQLV/1GXDlkDVNuydjhN94wdxYhD27k+GX7GQfChUNIjwliIXn581eKKTRN+j5JLR0rlcs0l+EP9h+LD6BoHW7u5ASuES+SfT52jALFWuUtGHb7Axr7vW0VQgwD+mHDkrvlyE= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785863977; c=relaxed/simple; bh=C6MiwQmn6exmvZeeWNzvu6uKkTE8SHnznKylSrzlw5E=; h=Date:From:To:CC:Subject:Message-ID:References:Content-Type: Content-Disposition:In-Reply-To:MIME-Version; b=BZICucPxDoVS56C2ztKvAzthkJu+mKVVD9sUEVU75c3WVR1KzRADK/Kd/27B587AzX/l3xR0GU6EI/RIfFOtI3NOurtUnnGXc0VOKjKalb0D1dik/3NnWvJ2zEy+osZrfciRyebtOmaIpw8cbsqWe0O3sgFW165xbgLG5/wLfgU= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com; spf=pass smtp.mailfrom=intel.com; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b=DG+jnubH; arc=fail smtp.client-ip=192.198.163.12 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=intel.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="DG+jnubH" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1785863974; x=1817399974; h=date:from:to:cc:subject:message-id:references: in-reply-to:mime-version; bh=C6MiwQmn6exmvZeeWNzvu6uKkTE8SHnznKylSrzlw5E=; b=DG+jnubHRUQ8xtmcNFVwB0dcN7Pj6D4I1zO5zh0VKCAriAztm9RSl/oh K89FewuIgMH/CfMj7KfipTnnqLjU974hvmhsLmV/Ru6T5cOe1f99tOf1h 6BhV3q7O3itICg4j6wep+bpnDXgqMzhiq8RLC05r1GxmiZhv4YAv5qrPu AKUKMiDDw1H+smZajA5umeAzBHyTSlZqjBBmnkXmrubFc0vb2HJ6EGBd6 Xnbl1HjpIz9LeRSjGeJf6c7fb9yc+7k+Yr6QH1SP5140lnUVa5E9Gb1h3 a7CT761ztKOltp+gRCdyjN0p582dbwnOhYX9P34lzsTeI4S13ZNJe7uAY g==; X-CSE-ConnectionGUID: vcB/4MNJT76ltr42vyzbvw== X-CSE-MsgGUID: c4AL1ckKR5OwwG2d8KslLw== X-IronPort-AV: E=McAfee;i="6800,10657,11865"; a="90233286" X-IronPort-AV: E=Sophos;i="6.25,204,1779174000"; d="scan'208";a="90233286" Received: from fmviesa004.fm.intel.com ([10.60.135.144]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Aug 2026 10:19:32 -0700 X-CSE-ConnectionGUID: 9+/oe2AMRiihIWJ7teqUCQ== X-CSE-MsgGUID: 3kAiJ4RkT62kiwccyxzmDQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,204,1779174000"; d="scan'208";a="263561270" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by fmviesa004.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Aug 2026 10:19:31 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 4 Aug 2026 10:19:31 -0700 Received: from ORSEDG901.ED.cps.intel.com (10.7.248.11) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45 via Frontend Transport; Tue, 4 Aug 2026 10:19:31 -0700 Received: from DM5PR21CU001.outbound.protection.outlook.com (52.101.62.0) by edgegateway.intel.com (134.134.137.111) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.45; Tue, 4 Aug 2026 10:19:31 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xiIKVhDwrva5EQESwngrkAUAr5gpVVE83XpK72Jc96aUjwc8+wmXOML1lialLlKNgyY1mJ/YL6Ed9FO7geaXYXjVevNnDyhXqtyUkNEgtPpgmUF1tQj0dgyj0hG6jRyuCPQTyHdnmR2hVN3elXNOtyy49QDcAg53EPUyLJLDCFm+s8C5jSvVyT1WUs5OeEV+/BRazMoFsPbfSUtXN1d/PfsVv5Zt6xPcc6jc5hJBrkdgs+qhrxjSCJ1w7oueozqCwXGF/EmGgDbWrp9ql1m2hUv6AFSBO6ZDtGHRoglL7JR4t44qfwTIr9o1XbEkJ3dI5W2/jvmLCU6MoRmEaNFwDg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=H/2kUADe+4lTRRrJHsJYIUbhNMXRBQGeHGODOLIVUAs=; b=bmWaCq+3qkXBTOIoAQA7WGzR+2iIgGJ6zhWyiLdq13AzEM8AaoB2MAmFFXTfEPLcO8cHoFKXV2tvWIK/r2P30oTBvVdiP9dFyj/AIsHJiRenHdUexFWv+uHvb4J3LDLA0CvmKRqjnat/arrXQCWH8kYGtOGAP3RSnSG+nABlE7dL18XHiHv00S+d4funUDkGgk8keubz1EkA5sEQnGdk9nIC5JbicoN//icer0+uxvLho7bMF6pqtICviz1bsNp1q/ckWpS7xpBbfNkTviqb5GZBA+Vrr4YjT8teT76erpb/Y7ioTpp8faSceakVuBTghoWhqS/gA3PQSiHIElV7GQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from SJ1PR11MB6083.namprd11.prod.outlook.com (2603:10b6:a03:48a::9) by PH7PR11MB6449.namprd11.prod.outlook.com (2603:10b6:510:1f7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.270.17; Tue, 4 Aug 2026 17:19:28 +0000 Received: from SJ1PR11MB6083.namprd11.prod.outlook.com ([fe80::3454:2577:75f2:60a6]) by SJ1PR11MB6083.namprd11.prod.outlook.com ([fe80::3454:2577:75f2:60a6%4]) with mapi id 15.21.0270.017; Tue, 4 Aug 2026 17:19:28 +0000 Date: Tue, 4 Aug 2026 10:19:26 -0700 From: "Luck, Tony" To: Chen Yu CC: Reinette Chatre , Ben Horgan , James Morse , Dave Martin , Babu Moger , Fenghua Yu , Borislav Petkov , Thomas Gleixner , Dave Hansen , Peter Newman , , , Subject: Re: [RFC PATCH 05/31] x86/resctrl: Parse ACPI CMRC table Message-ID: References: <0189d930c672498480557c5c16efe42940a06b5e.1785680802.git.yu.c.chen@intel.com> Content-Type: text/plain; charset="us-ascii" Content-Disposition: inline In-Reply-To: <0189d930c672498480557c5c16efe42940a06b5e.1785680802.git.yu.c.chen@intel.com> X-ClientProxiedBy: BY3PR05CA0026.namprd05.prod.outlook.com (2603:10b6:a03:254::31) To SJ1PR11MB6083.namprd11.prod.outlook.com (2603:10b6:a03:48a::9) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ1PR11MB6083:EE_|PH7PR11MB6449:EE_ X-MS-Office365-Filtering-Correlation-Id: f367fc15-09d2-4d79-66a9-08def24c8a12 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|1800799024|23010399003|7416014|376014|22082099003|18002099003|4143699003|11063799006|5023799004|10067099003|56012099006; X-Microsoft-Antispam-Message-Info: ektlPRGd9Rcgitg/ioHBAuUnUxNnV3qmdM66VpdDwuDMKHED6peI9rkGfiDwi4ltHMwGBQUpdnfpbK8CrispgALsX98NL10vWYuoLu+c15oo5oQzJo3E9EFEzd0cN5zCjnEsm7zMslD7uyUtZrJKRTp1P7AyT23q94brYGhHSmRta76W3EYuETlaYAu6UYtEitEG9RxwgYQICGAxYf9e31LVYnoT87CV6Sr3SD6xkOstVdP+ruQAWSMj+FJy86PEd9zehMW0XdZqm13Gko3sq7wk144ozRxVFZpYXaS3+hQ9E7KMjel+Sebe0wH5nGSXUJ4R7KRavsZq9rkWYyZa3MtBKWC0XNiyXyvimDRJWM/qGTtUgkLAnOoymsgpYkxFEAqA0fpsm8VQElg5oezYRo7+ApmnjAwD1uX2BfHgdLkKANd1x0NBVZ/xGT1pbKxGo/cmjSXd5sPFcRCANzF7ycaligHOB3f3DEd0L6tdxvjSuecafw++sDafwnsyCgotz4e8YQGgqv41xtJ8DJ7oDmC2CFhLbdnYjribOudHNBq7EWWTPTAeZ/4PUof7H3RhAfL6sUXgy66ChZ5z4WuW8CT4ajY+Ne8xBt2sgYQv8eBv0JNycjggx/sHNHYsSjUpAsBeERwxpMw44h1p61PSO723lrWhf0vDRTqCy6cmnAI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ1PR11MB6083.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(1800799024)(23010399003)(7416014)(376014)(22082099003)(18002099003)(4143699003)(11063799006)(5023799004)(10067099003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?VvPICo/n9LXp+MeHzXyG3zomRsM0ek3tpz1NwQLobpjsPZSctAeYctUSUbgT?= =?us-ascii?Q?JYH2qrYIMVVO5k1iI+Ya2+jyj/CxfvfASmJZlAX715GVnuW9cSKu/0tDH05x?= =?us-ascii?Q?bVhV7xUTNoJ6uAiuoLdzVzhFl7oSq1vssZXZ35XAiTCNEjUEGvbP0SyJvXrU?= =?us-ascii?Q?vzV5HVSGjOEDZfjgg4W0EbTuK59ju/ZF5fF0MFYjSJyCOszDcQd3JbbUHlmD?= =?us-ascii?Q?4dD+BniMUYaw+0gA8uwGG5oIxXE4BFrx0rYzfxykoEIyrVO9C9eeqbLKgSaI?= =?us-ascii?Q?PJ3Yy1hyUqJG7k25VcsB2A7YIeagA/BtPa0DJ9BZHaiL023t8umd/lF28ThN?= =?us-ascii?Q?zarMbs+TAIgE97G6TajjNcF4KnDoqsRA56tosDar+X0SUhmEc+EX7YCLajV4?= =?us-ascii?Q?Y7JFtbbe/78YfZ65Im1mrovHpfBwKJGrxj05Tz27yMVDpgnCTcKGjydFn7w7?= =?us-ascii?Q?sd6fRF/Iqcc+L/ZXqIG6FrO9vgPy96cLnBB630NKr9GvYojU46rX3WGzFOh8?= =?us-ascii?Q?yTpMevLl+jDvdTF8urYk8C679v8IT6MMlVrs3ggPB7I91i8dV7gIYAxzLvKv?= =?us-ascii?Q?+83bv0BKZAheCwV5nzC3xiIwznq33YYFywVf46qyeqKbsxnMvo96iNLUxand?= =?us-ascii?Q?JcrjE9aVJae7TWhiay/pbS4JOL1YoZdGPsmYRnIdnLG9ovXH0sj1mYgWqWi8?= =?us-ascii?Q?3z1RaPV6+9wgqFRDo2G4XpCgapNeILiF0+I1gLMlv3yhQkpRJCSSE+KsVVpf?= =?us-ascii?Q?9r4bWKlrEUn0hfSZ9wMMbBXqaZwtE+YAjgYYeVcvbcWFu5oL4NlQBYVj92nl?= =?us-ascii?Q?+1ry9VpqZ3zj+vjlH9Lvs9lIluuaCete7q9+1fMYb+YXl3Bhki2KPZ6HY+0X?= =?us-ascii?Q?Iw35wlXRk1DsTa/rlBMwNiUSytVhdjVOdaZNXRZXorfl75XvAkewOmSt1z10?= =?us-ascii?Q?td60KFtRNIfhOFQGM5GeWC5R5ZQIIgHFpUTJtBAO2zXUrsqG0dkcADjJL8ps?= =?us-ascii?Q?UX5Im7T0fjSFZkPHjiixtsjxoRC8bsNNbJFBCzRNRjx1+y+sed/uCs+rifBE?= =?us-ascii?Q?3fBx29RsNJVsgwczjultvg8YhVizKvP8eAJrGl3fv0FeiG2gMe2hSHA6rHpc?= =?us-ascii?Q?O2rIll2TnLU/YIemOt2M3WQzJlfP0Nm2fe5qrbMw1TR+TP3OQy+Xk8me2sQO?= =?us-ascii?Q?2QCcrz+oTNBQxrS8YwTklfpl+p4+7PGoUY7ZK1H9mjbJkzStvBvERC3W7Uak?= =?us-ascii?Q?+6/M3obzUzuePUdUknFvPPONlX6k39E4FQfN13fFHciNtt90/giNCLl9zZut?= =?us-ascii?Q?9B3IfVxdqPsciKLZ2bzYjmYjJaSfei1BVB41DIelABl0no9WVAnWGNLdMBRi?= =?us-ascii?Q?Ae/CBAB+yXNbC9jSGl1zvLUsfcORaGKahyAEAm0BVs7SoJ3S3cO2yxq70tDm?= =?us-ascii?Q?RSEzeDon/bcT7Q27c3W8sYdsTDOxqKrtZnPzVrQAp0lupiPZHfkPHl+F2v5l?= =?us-ascii?Q?coUpCs8PZoIV2R7Dl/R9EXP+hG4mo2AqpsuRqpx71Zh9jQb6eOvuCb4H1CjN?= =?us-ascii?Q?Ujr5PD4/QpYmVluOThZq8QXAYv42NalOWWufBfr/mvPIUOB1fYuoiJgIBGRd?= =?us-ascii?Q?dcO4+FyQAlk32ssrS0SJgZtuAdXs7xabjgcztfeTN3dYsR2SEL2wJM98jl7M?= =?us-ascii?Q?Yl7PHltEOBa8yHY2nPBhmekdgW6ZYIq2ROA7ak3jXUQesIJUbjm7nx1rqK25?= =?us-ascii?Q?oi6qNxWMgw=3D=3D?= X-Exchange-RoutingPolicyChecked: ojog0DQIVmErwu9rnJlP7rezE3WvugLHPlz78sOfCo5n17b80SKpSH84OXxz6uqUG3Z0fcvkmSRrd7G94z99kdwe+ltVTNDkf6W8QQL8k5hqOOGzahqQ3buRMxDnkgxBrdIKKKI8+gTMZpdpdPEVonGINPa/sBvxYq6H8HDEcJiAmZC+M807gRtu7c6zCRnEpJPbKp9MQ7j0PSti5lyJ3AXxLs6KG906zguVZCcJkhRkCwXCn1MdqraZZomgXAWC8pemQ+Ke1tTwJxNVJLVnQBw+9P6pjKid4ao1cXFR+u+N/LAT5xQE8pY/3qiQwFfwsiI9pkVf8cyFRAGV9GRZMQ== X-MS-Exchange-CrossTenant-Network-Message-Id: f367fc15-09d2-4d79-66a9-08def24c8a12 X-MS-Exchange-CrossTenant-AuthSource: SJ1PR11MB6083.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2026 17:19:28.3361 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: k1uNQL+A9a1mL/d013d7VgzKW2p+fVmR+P1wY3+vYuSofckFNBRQMZhZelHOhZ0bqb7abscr7A5WUmkz1iRiSg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB6449 X-OriginatorOrg: intel.com On Mon, Aug 03, 2026 at 12:03:48AM +0800, Chen Yu wrote: > The CMRC (Cache Monitoring Registers for CPU Agents Description) sub-table of > ERDT describes the MMIO registers used to read cache monitoring counters (e.g. > LLC occupancy) for an RMD. > > Parse each CMRC sub-table, ioremap its register window, and save a copy of the > CMRC table in the corresponding ERDT domain entry so that later monitoring code > can read the counters via MMIO. > > Suggested-by: Tony Luck > Tested-by: Hongyu Ning > Reviewed-by: Thomas Gleixner > Signed-off-by: Chen Yu See the "Ordering of commit tags" section in Documentation/process/maintainer-tip.rst > --- > arch/x86/include/asm/resctrl.h | 2 + > arch/x86/kernel/cpu/resctrl/erdt.c | 57 ++++++++++++++++++++++++++ > arch/x86/kernel/cpu/resctrl/internal.h | 6 ++- > 3 files changed, 64 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/resctrl.h b/arch/x86/include/asm/resctrl.h > index 575f8408a9e7..e60c2aea7ebd 100644 > --- a/arch/x86/include/asm/resctrl.h > +++ b/arch/x86/include/asm/resctrl.h > @@ -49,6 +49,8 @@ DECLARE_STATIC_KEY_FALSE(rdt_enable_key); > DECLARE_STATIC_KEY_FALSE(rdt_alloc_enable_key); > DECLARE_STATIC_KEY_FALSE(rdt_mon_enable_key); > > +int erdt_get_scale(void); > + > static inline bool resctrl_arch_alloc_capable(void) > { > return rdt_alloc_capable; > diff --git a/arch/x86/kernel/cpu/resctrl/erdt.c b/arch/x86/kernel/cpu/resctrl/erdt.c > index 6257869d0db2..422618991927 100644 > --- a/arch/x86/kernel/cpu/resctrl/erdt.c > +++ b/arch/x86/kernel/cpu/resctrl/erdt.c > @@ -23,6 +23,7 @@ static LIST_HEAD(domain_info_list); > static bool erdt_enabled; > > #define ERDT_VALID_VERSION 1 > +#define CMRC_SUPPORTED_INDEX_FN 1 > #define RMDD_FLAG_CPU_L3_DOMAIN BIT(0) > > /* Bitmask of valid sub-tables found in the first RMDD, used to ensure all RMDDs match. */ > @@ -33,11 +34,19 @@ static u16 first_rmdd_domain_id; > > static int erdt_max_rmid; > > +/* Scale to bytes for the monitoring counters when ERDT is enabled. */ > +static int erdt_scale; Single value for scale? See below. > + > int erdt_get_max_rmid(void) > { > return erdt_max_rmid; > } > > +int erdt_get_scale(void) > +{ > + return erdt_scale; > +} > + > static void __iomem *erdt_ioremap(phys_addr_t base, u32 num_pages, const char *desc) > { > void __iomem *addr; > @@ -67,6 +76,7 @@ static void erdt_iounmap_domain(struct erdt_domain_info *domain) > static void cleanup_one_domain(struct erdt_domain_info *d) > { > erdt_iounmap_domain(d); > + kfree(d->cmrc); > kfree(d); > } > > @@ -100,6 +110,43 @@ static __init int cacd_init(struct acpi_subtbl_hdr_16 *subtbl, > return 0; > } > > +static __init int cmrc_init(struct acpi_subtbl_hdr_16 *subtbl, > + struct erdt_domain_info *domain_info) > +{ > + struct acpi_erdt_cmrc *cmrc = (struct acpi_erdt_cmrc *)subtbl; > + > + if (cmrc->header.length < sizeof(*cmrc)) { > + pr_warn(FW_BUG "Truncated CMRC subtable\n"); > + return -EIO; > + } > + > + if (cmrc->index_fn != CMRC_SUPPORTED_INDEX_FN) { > + pr_info("Unsupported CMRC index function %u\n", cmrc->index_fn); > + return -EIO; > + } > + > + if (!cmrc->clump_size) { > + pr_warn(FW_BUG "CMRC clump_size is zero\n"); > + return -EIO; > + } > + > + domain_info->base[ERDT_MMIO_CMRC_BASE] = > + erdt_ioremap(cmrc->cmt_reg_base, cmrc->cmt_reg_size, "CMRC base"); > + if (!domain_info->base[ERDT_MMIO_CMRC_BASE]) > + return -EIO; > + > + domain_info->cmrc = kmemdup(cmrc, cmrc->header.length, GFP_KERNEL); > + if (!domain_info->cmrc) { > + iounmap(domain_info->base[ERDT_MMIO_CMRC_BASE]); > + domain_info->base[ERDT_MMIO_CMRC_BASE] = NULL; > + return -ENOMEM; > + } > + > + erdt_scale = max_t(int, erdt_scale, cmrc->up_scale); I'd expect that on a machine all CMRC tables would report the same up_scale factor. But RDT architecture allows them to be different. Two ways to handle this: 1) Check that they are all the same. Complain if they are different and don't enable cache occupancy events. 2) Save the value for each domain and use that value to upscale when reporting to user. Picking the max value doesn't feel like a good answer. > + > + return 0; > +} -Tony