From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.19]) (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 595571FD4 for ; Fri, 10 Jul 2026 23:46:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.19 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783727199; cv=fail; b=Pcjz6YXvxkQkUO9C4Ei/YBrX9CfdRqzzxiWbRxVDy0QOgSGtwaa4AAVkJQa/IDf6Y3UmLt/yBUsuyPwWt9jkE9NGFi1l7WO/ekOGdPF1v8gj3Lkn2NvCG+5AdHf3jCnh/CCnn9mjHG2zeC+apmex0yrH2D8iwY2dVBhsttDQrjk= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783727199; c=relaxed/simple; bh=CmiEFgqAxY21LkU8PzPMl5BAB3YUpKCI54Cgm0+tSmM=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=hsXS49rkD0xPYbPnMfNFk/oQofEo0hC79sQGFNVOgdblRDRFq3w7Gi49mz5r5mk8Ydpdngq5ePEU4pycBaoeOSPaZTOQBHwMfeD2K0GqgtJztufbHiHLV7sS3SycrhhFfAHqPZo2GTsYZDMgWTte627n+xYnnFAiHe6rE/IOUjc= 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=QzFAh4OU; arc=fail smtp.client-ip=198.175.65.19 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="QzFAh4OU" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1783727197; x=1815263197; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=CmiEFgqAxY21LkU8PzPMl5BAB3YUpKCI54Cgm0+tSmM=; b=QzFAh4OU4pUFXxLT9g6S+Yzl+UyqBT89abf2zM+/P+7OX14HlnquIMLN M2FCcYaY/XInwdOAqDptpSnVrBP88nm4KQcn3Jzzpy2iqGFNSf13KKtEn E3HOp7g0onK7xukzO1WdeITc/tpx/u0EjVumIlqbZp2GtrNdAHOvMFNIs 43i6JOQz8iDlGLYyHZZv5NzgQVaGtoDP1ex+VUrcVSKFxTG3EMJo1/eNH 2CgHe80iMfJfMWuA44S6zgyGeKnxhiuv9oqejRM3WzD5qxRxrCthOofkv Vbn9Bwq1YlexWjDUEGlrcwsFS/o9SrassQjwa7gqiafn9aAnhYEKs3azc w==; X-CSE-ConnectionGUID: ciDcO4wlQzul5B5ORAor4Q== X-CSE-MsgGUID: pP9t8lznSoSN31z2SaLsLw== X-IronPort-AV: E=McAfee;i="6800,10657,11841"; a="84398820" X-IronPort-AV: E=Sophos;i="6.25,154,1779174000"; d="scan'208";a="84398820" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2026 16:46:37 -0700 X-CSE-ConnectionGUID: Xfsb3iqmSKC/usvYWc8/gA== X-CSE-MsgGUID: VYBsIjAsQcGmJkqwbogU3w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,154,1779174000"; d="scan'208";a="258598615" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa003.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2026 16:46:37 -0700 Received: from ORSMSX903.amr.corp.intel.com (10.22.229.25) 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.43; Fri, 10 Jul 2026 16:46:36 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) 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.43 via Frontend Transport; Fri, 10 Jul 2026 16:46:36 -0700 Received: from BN8PR05CU002.outbound.protection.outlook.com (52.101.57.5) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.43; Fri, 10 Jul 2026 16:46:35 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=wZLhXmHgZ37HJp8+cShU0g9/DfE4s6OrxlnJd0x7OmtqUNLN9AIq165/uDBC5qWsIuaiLPP7yucs12T3mkD+7lcVGyxGCfXwQgMAPGBIFAGO9ZNpyWa+ITvcjxBol3s/JwDSq5XSAHCJK8EpTUynE2+4dLMBrAxdP7R3tiaDZra4ASlXnllTjGKY9oG0UOeYWkYecS1XcUl00d6gV5Fw46hgsCc0udM24xhynNzU/9Y7n7mh3BzI5+RsL6HXcgF/T8lQ9XkV0aMFHF/p49aIJ9HGnPefnExbZ3FC1n8EgRQkgiouj6XJwmiEgHaj8mBTW3FIuu/kDOCEYYZIWvRu/w== 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=V/9PfUdz2JaHuZGo+aL5VBUP5BX1+RbpcL3iURfHyLg=; b=UcM7Per1hkSCB73SVc+a8o0Pkt2OHKyzZl7sR8iWrpwswU0Hv73xRYjBOE7hEhAhyyBcd+FfLqj/KG5AT1HQ8lqwpc2iciA9Jo+up4YznclG2zCR7qy6PePC8rCvVT6xxeMwN8Rvmr7a2LneKdhFYgb4JotXBO9ryDhV0GbAGDbZEXB7ZKhtBBf0TGIdbpyrS+R0RZ2i/e97+VkzrEz4DIRgQfsmqKLEWOrLtg1JILg69VF6gZJwo/MJd57uos1PbRs1sYSBqDI0GGbo0fYosnsiBPwr/cyz0b5i6d6VHFXY03EohQdroczwYl/Q3cOfB9NKzrC/DecKnu77ODGsAw== 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 SJ2PR11MB8370.namprd11.prod.outlook.com (2603:10b6:a03:540::20) by CH2PR11MB8833.namprd11.prod.outlook.com (2603:10b6:610:282::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.8; Fri, 10 Jul 2026 23:46:29 +0000 Received: from SJ2PR11MB8370.namprd11.prod.outlook.com ([fe80::b6cf:ce77:3cdf:7cc]) by SJ2PR11MB8370.namprd11.prod.outlook.com ([fe80::b6cf:ce77:3cdf:7cc%5]) with mapi id 15.21.0181.014; Fri, 10 Jul 2026 23:46:26 +0000 Message-ID: <87255829-a70d-4b64-9fd7-9771677d1933@intel.com> Date: Fri, 10 Jul 2026 16:46:24 -0700 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 05/10] x86/resctrl: Parse ACPI CMRC table To: Chen Yu , CC: , , , , , , , , , , , Hongyu Ning References: From: Reinette Chatre Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MW4PR03CA0012.namprd03.prod.outlook.com (2603:10b6:303:8f::17) To SJ2PR11MB8370.namprd11.prod.outlook.com (2603:10b6:a03:540::20) 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: SJ2PR11MB8370:EE_|CH2PR11MB8833:EE_ X-MS-Office365-Filtering-Correlation-Id: 897ba92d-9801-48b2-4431-08dededd750f X-LD-Processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|23010399003|18002099003|22082099003|11063799006|56012099006|4143699003; X-Microsoft-Antispam-Message-Info: Dbzq/BA14wdtnhXU5nYftC6/i+AhgLczeB9h9ZKqdsTmg9Mq8jNjj2l8Tprv+prOUY74vJjfweBgeI2FhPKC2fF69ljoF0CazvYhBq70i1lwZ/Zo5CeFBRYoeGa8s7moOv31XQkh8czvlhVqJaE+op1H0Hkx09mhqq8VX3WMKgRT3jBaxJIYnAhvWlWj6zI6LL3WoUC5TZEfl4plGCz68SdNiwUUls/2w0qJIZIWrie1KRZacZKdO7zSCooTnzMuxMENQW8zkWG6PdNb3OvdpPX0laAg1qYF5ys45dK+CQH0Ovpa2Od+vInVLTJEVqddC0vPc+s7qIj1PzsGf4+uPfoSzoYonGgaD3tTDVtgf9uHcZuBxZl7sUkGH7QXCKYEmh2BXSfItIn1iiA3R6ObtbXUcIPeOzsvYmLsWlkxy6TCxFnhruepw4ejemw1EnGnICOIUE9A/qJs/q4/Zs8dqLSoNXj8kXMc+3IL3fLUSNdiubdhGPBjGCBscWqx4xaVStTtGpHLQukdoKLhB6ZFpxHpxzQLz8zufQscWxDA4Sn+hn+P62JNdUPOdCAwZp4aZI//cyajLLV/eDtLdQhMwhGIsZ5OoQFmmhMbAqVNpwyOu3GJSOq3fks26b6faFY9Mt6JF/W9GB74ONq9WuDyYN4Q3KPyvg0GjPjHPjYK7mI= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SJ2PR11MB8370.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(23010399003)(18002099003)(22082099003)(11063799006)(56012099006)(4143699003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?SEdvb3F1dzhmWUx0MCtPa2xLSkR3QlVKeEV0RXNkbmUzT3RqSGlYVHFXd1Zp?= =?utf-8?B?RmxUNG1CQ0tBdlU2MUgzMGViZ1lMd0tETU1JaHVQcGRuakEvZm9Qc2lRSkc2?= =?utf-8?B?UE5VUkNiZ0l0VU95VTdqKzRpWjl5YzVrSzBwMjQ5ZlMrd0RaWWY4VU05SHpS?= =?utf-8?B?K2lhUC9veE1QRUltRHlmZElYNWVJNmpkNUgxOTJyd0xHMjMxeWVuelIyaFdv?= =?utf-8?B?MXd2TmsyMUY0d0dvbHdjbXExbWs3b0FZSXlTSTBCTHlGTHJKeXBzV2tud2R4?= =?utf-8?B?K0xRK2dNR1Y1QXVRQzYwTGZpVXE2VkxWeWZteGRWMUdDdkw3RUhtRjJrM2VH?= =?utf-8?B?SGVXMzlpRVRtRkdZbzFmV0ZhY1ZGN0VkbGZ3NVBmV3Y4VXBTc3N0MHFGVU92?= =?utf-8?B?amt0aFp4eUEza0V2cUJKUDdrTENRWGYxK1JqRGl2eTBRcllabkZwbXFCeTBQ?= =?utf-8?B?aUg3aFVBOTF2WThKLzVHdE9yY0FvTGdyc2ZBUHNhT0RXeDVtQjgvb3NHWDJ2?= =?utf-8?B?MEZwOFZMY05FUFc1Zmx6U0J6SFFiVGVUTG81dUxjbmJaV2M5YVpHeWxjTUl2?= =?utf-8?B?TGwwOEd5R1o3dWFPbWVSMHh3SDJoVkFPLytRWmJ2N2YwN0VUdWRIUzh4TnB3?= =?utf-8?B?MW14cHVMSkcyNDJrYllqMVBuTkQ1V2k4RWVCTENLUGExNmRVNkRFbE1rQzBV?= =?utf-8?B?UklGYmlHcXdaZHpyallNMVRIQ3g5RU42amVWWDFXTmdlaEFXZ3RhV3Vvc3Bq?= =?utf-8?B?ajY3SEdSY1FzZi9UeHRuRG1idnFiaXA3SjBqQ0ViTmp4dHBRZEJwdC9HMW0v?= =?utf-8?B?bHozWDJ5V0daSDA5RkJEVjkwOExWaWFwNTBXNEdBc1N2OUVvY1RBbEY3b0RL?= =?utf-8?B?K29WdFQyQkx6M0cvNkEwaEU1TmU1TUVRTk4wSXBWOW5lUVBlUXowdFVKUFMv?= =?utf-8?B?MUxkalRZcGlnbUQrZ3plcURtYytwRkZsZ1pUVm84MVpuWWRib0lYdjhjbytk?= =?utf-8?B?MU8ySDJYbXBGT0l0VmpxazBFenVWWVNjeDZrakM3QW9hSU5yYzd1QkorN2My?= =?utf-8?B?YnNnZU1wMHBwVkJJNzFDa2kvVkpvTnQzV2N4YXVyZE5Db2gyY0thZXYyY1R6?= =?utf-8?B?VmZ4bnZnTFRTWnBLZSs3YUZKUkpldEh0ZVRmSFFncUFSeHBUdDJTNUtWdmJC?= =?utf-8?B?SDhnMVlDNTcrM3BTOXZuQzFnTS9uaEJ4Zk5YTUduU3lBWlJiWG11V3NKVmJH?= =?utf-8?B?cDRZTnRvcTdwUjgzZkFQTkhwM0RFR29PSTFmTmp3elZJdHlMalZxUFhjTzJs?= =?utf-8?B?cGdabWc0OWl0ejhjcjZRc2NCVFpYVzVQMGx2VkNMMW9oc1JYNkptSXVNTmJi?= =?utf-8?B?Zld3MlJFVXF5RkcrNWRSMk5YdWM5U1I2OEdaZGxJRmJxczhSMGwzUHk3Q0pI?= =?utf-8?B?MGdOYktFMDlTMG5LNjNiRzNlUHpQcmRNQW5qU3lKcE95dXFJUDFVY2w0Z1Fv?= =?utf-8?B?a1F1MUNCS1p2YjdUU2ZDcndodG43U3FHVDdUM2lBeEZFcVR1MVBlSDJGRkVQ?= =?utf-8?B?NjYxeWJGeUVCVmlRcElHUTZVYmVmYi8velpEZ1dRcEtoK1hWd3p4Uy9Edzcr?= =?utf-8?B?elhCclVTaGdlUXRzS3NndG9YanZEbWtFZ1ZaRHR0YTBia0wxUEljdlY0L3d6?= =?utf-8?B?ZXY0eExVZkFOaHVsUFdnY29ualZ3dXVhZGNqc045NTZ6L1k4anY2SG9GZzZT?= =?utf-8?B?dXgwTGJJWUsvOCtHZVpBaGRsanIwMk1LZjkrMk1yRC95SU5oalU5VlRhUEVl?= =?utf-8?B?UFdENkF4LzJiWVpwazJQeWNrRkVTRko0MUIwVXo5WkxwemNXZUx1NzRuODY0?= =?utf-8?B?eElhdWRpcFQwTzhmTXc5NWlJdVNwTU9ZN3haR1lwZ2hmRWJrTnFXZFpZSjBP?= =?utf-8?B?SklINk1ib0JYTGMyRzRBY3drcHZMSStrdDIrTWpmVnhXTjlyYi9hRTNvMjFU?= =?utf-8?B?YnNYUDE5Mm43YXdTcCtiZmEzYVdReWNNMzQyNUd5V0cvTDdYa2laT1JpMDF4?= =?utf-8?B?Unh0V1JmdCtCQVNWT05lQm4xUFY0amcwQ1NEcWtmcFVuTzlGQXJYSGlyaUp2?= =?utf-8?B?NUJnTjJGNU0yWW16eTN2U29pZTlWbzdFbEVJcEU1RmF5ejMzbkkwanUwM3BG?= =?utf-8?B?V1JYcWliR0lnOGtsMVpPM3hHQjBWYUpDZUlhTm9YUFhSaVJFRzBRVnhLTXNj?= =?utf-8?B?Y2ZoZU5ON2ExZWE1eGc1MEkxR0dFZDNhdXQ3bktoKzJ5VzZ5dExYM2dxaGhh?= =?utf-8?B?TUNqTSs0U3JFQm5PQ05OMkRlOXJvN2t5ODZWdThFNzZBOTFQT216ZkE4VmQ4?= =?utf-8?Q?qKJfWhFzPFtxyEQo=3D?= X-Exchange-RoutingPolicyChecked: tKrzhbxSlEu9XTuheKq4lstBO8cdj/J5ZzbeEgUE7H0XkhmyO8FeVBxOIAS13jBvW7e0FuozUxfX8dF9W8P4zmMrxYVmF4Bfs1fPTaMT9weixR4FzhplTlkLv89AMpz9vnQTUiVY1wmz12GmUOvCgqbEvWZiDLNhFkprUBWYDC3ytsYdmimGqi9nsr5JInt89RxkI3/owyqw5mg7AI55up0d34r/I3KTIP7vA7j+pVmBssJo5pSqasG7gTUAZPGpKhZvNnaITUpHkNNiSxlUJt/Up0SvbT7Wqzd93leM1yBAO+xSAdW/sUEC1ajzXdLzdbtxNsDRLfIZ+evNRWrh6A== X-MS-Exchange-CrossTenant-Network-Message-Id: 897ba92d-9801-48b2-4431-08dededd750f X-MS-Exchange-CrossTenant-AuthSource: SJ2PR11MB8370.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Jul 2026 23:46:26.7391 (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: kjSnk90f49ubkiLr3K+Jtbd6LE+z8B1ejgkyrzo/3vj95wPfOIyOpMSUUpFVfQEEsokvtOffVWI+bRVzCw57B43OkMVfjwz1sHov578ubX0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR11MB8833 X-OriginatorOrg: intel.com Hi Chenyu, On 7/1/26 6:46 AM, 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. Please use the entire line length available (please check all changelogs). Some context for this request: https://lore.kernel.org/lkml/20250916105447.GCaMlB976WLxHHeNMD@fat_crate.local/ > > Parse each CMRC sub-table, ioremap its register window, and save > the CMRC pointer in the corresponding ERDT domain entry so that > later monitoring code can read the counters via MMIO. Is the "save the CMRC pointer ..." referring to how resctrl makes a copy of the CMRC table? If so, that is very different from "saving a pointer". > > Suggested-by: Tony Luck > Reviewed-by: Thomas Gleixner > Tested-by: Hongyu Ning > Signed-off-by: Chen Yu > --- > v4->v5: > No change. > --- > arch/x86/kernel/cpu/resctrl/erdt.c | 44 ++++++++++++++++++++++++++ > arch/x86/kernel/cpu/resctrl/internal.h | 1 + > 2 files changed, 45 insertions(+) > > diff --git a/arch/x86/kernel/cpu/resctrl/erdt.c b/arch/x86/kernel/cpu/resctrl/erdt.c > index 6c1df7e43eab..a5754d64fcc1 100644 > --- a/arch/x86/kernel/cpu/resctrl/erdt.c > +++ b/arch/x86/kernel/cpu/resctrl/erdt.c > @@ -26,6 +26,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. */ > @@ -79,6 +80,7 @@ static void cleanup_one_domain(struct erdt_domain_info *d) > { > erdt_iounmap_domain(d); > free_cpumask_var(d->cpu_mask); > + kfree(d->cmrc); > kfree(d); > } > > @@ -112,6 +114,41 @@ 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 (subtbl->length < sizeof(*cmrc)) { I think it will be helpful if the ERDT parsing code uses consistent patterns. Here, for example, now that a pointer of accurate type is available via cmrc, can cmrc be referenced instead to be consistent with cacd_init()? > + pr_warn(FW_BUG "Truncated CMRC subtable\n"); > + return -EIO; > + } > + > + if (cmrc->index_fn != CMRC_SUPPORTED_INDEX_FN) { > + pr_info("Unsupported CMRC index function %d\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, subtbl->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; > + } > + > + return 0; > +} > + > static inline struct acpi_subtbl_hdr_16 *rmdd_subtbl(struct acpi_erdt_rmdd *rmdd) > { > return (void *)rmdd + sizeof(*rmdd); > @@ -178,6 +215,13 @@ static __init bool parse_rmdd_entry(struct acpi_subtbl_hdr_16 *rmdd_hdr) > goto cleanup; > > subtbl_mask |= BIT(ACPI_ERDT_TYPE_CACD); > + break; > + case ACPI_ERDT_TYPE_CMRC: > + /* TBD: Only 1 CMRR per domain is allowed? */ Who are you asking this question to? > + if (!(subtbl_mask & BIT(ACPI_ERDT_TYPE_CMRC)) && > + !cmrc_init(subtbl, domain_info)) > + subtbl_mask |= BIT(ACPI_ERDT_TYPE_CMRC); > + > break; > default: > break; > diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h > index 7d9100b7648f..3dab05c38003 100644 > --- a/arch/x86/kernel/cpu/resctrl/internal.h > +++ b/arch/x86/kernel/cpu/resctrl/internal.h > @@ -36,6 +36,7 @@ enum erdt_mmio_type { > > struct erdt_domain_info { > void __iomem *base[ERDT_MMIO_NUM_TYPES]; > + struct acpi_erdt_cmrc *cmrc; > cpumask_var_t cpu_mask; > int max_rmid; > struct list_head list; Reinette