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 4EB824D8DBE for ; Fri, 5 Jun 2026 11:30:00 +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=1780659003; cv=fail; b=Sjd+2r7WbFQ2FjhGbncb21vJs8KsEsj9kUP4KVG9XpjCec5Mwa+jrKAekQzd00Ch/hn/4wbnoAOFuOs0tYXOISimlAi1zldsA9NUNsxWb4wy+vTKiDbzpO6CbJVztfz64z/ZhMMd7+hoPJMIbmPQlIve74MzTBUH7pob8Av3JAo= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780659003; c=relaxed/simple; bh=FaG7behpVmnse8kSBUxQz/eelLRt2noPeEUFKcGTt7k=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=E5vbF8HbbC4a8hodz+OFY6bqOa2c8wlUfVwxNjCAL9IbwRHdh+RLnrkA2x0RSfhQM7sGM3kuf/3APkizwaNss8ZkMHtNg8uGg4b9dzNJJNtvKPUl2hUA54UXpo8ywLs9uCuo/AIfDoATVSmoIYpPFijVR1/SOnIXUBki1rk4low= 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=aRReW1U6; 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="aRReW1U6" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1780659000; x=1812195000; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=FaG7behpVmnse8kSBUxQz/eelLRt2noPeEUFKcGTt7k=; b=aRReW1U6sg98b/6XTgP8hcWk2OLIKRt8og3K6wtLARBsdnGbpQoUiFtf dyIiC+sbmruw1VJuw9UunZaVTdsyParC02YxzxcLDJGGW+Vd5+TjGsejc MNSB0gTebssLdz/uuhMukwgnWlMhD4WCpL0g/PLWQLuCryxVIjif189k1 gy7Uer4xJrpnd0OgHJh1yoxBXP4O08GYqL6tT+fuI3u6Ttcs0mHm72RUl 87CxQ+36v7KO+wyyS0s/2RAKTnANjnC4xEXaqN3VjM7OGsSMSrLEsvBQY 1tLnom2gHyjfE89AKD4Z3e9UboYRqtq94ymyGunLovCgJGRyPrTN+QyKG w==; X-CSE-ConnectionGUID: 24oQvUv7RwCxrX+D8FDs8w== X-CSE-MsgGUID: 0HCLlpGQQSuBgUFwrnNbBA== X-IronPort-AV: E=McAfee;i="6800,10657,11807"; a="81472742" X-IronPort-AV: E=Sophos;i="6.24,188,1774335600"; d="scan'208";a="81472742" Received: from fmviesa008.fm.intel.com ([10.60.135.148]) by orvoesa111.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jun 2026 04:30:00 -0700 X-CSE-ConnectionGUID: 8N15YWcwQ7ag/1JGv7lPHA== X-CSE-MsgGUID: y8ZsOsqBRFKpR6lf+U5qDw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,188,1774335600"; d="scan'208";a="242343962" Received: from orsmsx902.amr.corp.intel.com ([10.22.229.24]) by fmviesa008.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Jun 2026 04:29:59 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 5 Jun 2026 04:29:58 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) 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.37 via Frontend Transport; Fri, 5 Jun 2026 04:29:58 -0700 Received: from BYAPR05CU005.outbound.protection.outlook.com (52.101.85.8) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Fri, 5 Jun 2026 04:29:58 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=mAml4g/dztBipyY5tcY3L0PW57hqLwvCXfBc1HMod2IFXULpDwKcRYbvLgzshMJTxQumWClcx+ZpA8v/MJNkEiKe3eaOn/DqLKCDsQN7rhUOIyWfUfwJ0NvFjnJpC1nQER1zw9MPU/auMejFsLDdUFYSEPdzhgFWEIP7cGzvCoFsPxf8HCoTsGa59SAL1nHf0R+O9lTAOfIuj/XKLlOnglVrLKgVtG/6CpE00Qatb5mzJnZqDeswVCNsVftJfUpzqPq5Jp0aiGoQ9TzyafW6FPHoQFxWncdhSXDLDqXTCvTQ3NayjC9hJJdwN9rs3GhAlwYT7ir9xDTUTYPCGY9lrw== 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=8s+xi2440Xtf3RpA9XMBN8k/NidtEwA4FCqF3VH32pA=; b=DyMjJdoUeaSOOambR1jsjXNIl31rRkmWG1BmHJbGVKfz3V4NVEvvvskxR7VdvqY8gESSs5vYZVcTxkFH9fyawCYw1iw630GheTK9RlVXcwZS/qeY+GxRIwJoR6ag7dPiU6ZL1U/YKJFP9yiKey2f69F4cNeC5eCM7oq2wYssgyQr0vNdEZvS8u0d3iOmpT8as3WHxFGpRk5FaMkojf02F77hwkM+K9UlLdnKCMN6vrGZWRa6SD+03J0qU7mqUI4BVN8jr5YRniEdMOr3HW5sw9egGU408ruzHljgLgvS35FeNLM3Hi0oQaTxEPtv88VF1nLlxjRr5PPfqlkJXZJrvA== 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 DM4PR11MB6020.namprd11.prod.outlook.com (2603:10b6:8:61::19) by DM6PR11MB4609.namprd11.prod.outlook.com (2603:10b6:5:28f::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.92.9; Fri, 5 Jun 2026 11:29:56 +0000 Received: from DM4PR11MB6020.namprd11.prod.outlook.com ([fe80::3058:1480:e4ac:5765]) by DM4PR11MB6020.namprd11.prod.outlook.com ([fe80::3058:1480:e4ac:5765%4]) with mapi id 15.21.0092.007; Fri, 5 Jun 2026 11:29:56 +0000 Message-ID: <7abca96c-f630-42e2-9f6f-2f9a3abb7c4f@intel.com> Date: Fri, 5 Jun 2026 19:29:44 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 1/6] x86/resctrl: Parse ACPI ERDT table and map RMDD domains by L3 cache ID To: Thomas Gleixner CC: , , , , , , , , , , , , References: <1ee53d0e75ec45e29fc8a72ee8f61f4ba7825a18.1780587063.git.yu.c.chen@intel.com> <871pem5jnh.ffs@fw13> Content-Language: en-US From: "Chen, Yu C" In-Reply-To: <871pem5jnh.ffs@fw13> Content-Type: text/plain; charset="UTF-8"; format=flowed Content-Transfer-Encoding: 7bit X-ClientProxiedBy: SI1PR02CA0047.apcprd02.prod.outlook.com (2603:1096:4:1f5::15) To PH7PR11MB6005.namprd11.prod.outlook.com (2603:10b6:510:1e0::19) 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: DM4PR11MB6020:EE_|DM6PR11MB4609:EE_ X-MS-Office365-Filtering-Correlation-Id: ea0dd9e4-0d88-42c6-fb1e-08dec2f5c42e 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|1800799024|376014|7416014|366016|3023799007|4143699003|5023799004|11063799006|56012099006|18002099003|22082099003|6133799003; X-Microsoft-Antispam-Message-Info: 6dcchi/zdPu3A8MDjz5qc651Q/aPdGgZuHFBmeSGxygAXKBRLPL4GFwNXh27tpdS3gSHym4nCGrBwKtP97pQyu4mMmPupRiq37Jvf3xRwdSGhC/VeIo/vyYjfqu1NIEHQG4UI6Ho9td3sW42lmXxVTgiLtnvg9fBAJUIsSf8Lyo6qU5PKaF1zEu2/wIDB3hInEPXjYAqJY4MSXuBlzGfN7ruhP0i9wtlcoHjNdP56/mO4/WiNOEyte1Gcbm78FHomR5+2+H7LQfJd/su4ja2iYi8HpXUl1WYbmTuKU5vK5df5OgF0k/eoDY2U5bBFNOKmlIofMf6OBuKu+zIF2GJGNPhnuUl61EtEnoBgeu0Dk24yrmPDzZT836bsaV37JAjuth3ZCfVVslaUEXwFfd/gQrOBVo12U6nr6GKheGlJ/YhdBKCMepnCtXOZRABqy9+ObkRaMbkQ7gCG7vV4Dq2jBUrOJbnW/+Juk/4mPrncra07Qwr98TD1ff5EUFzp8gWysJCIvEMS0fB/6rLi5xkuSKMTTVfap1gMRG5PdrlgLYB4Mh6l5fIsl+vdZZKm9jk0nFbVdKK9Ap9MfEyxkS6hrHy7CGsgTLrEuYp/wiDT85nXFyPRE7grFu+dvzZFWdkc0jSBnkn64lbc02pqW4Ux03Qrjux3z1bfORwcTbTXT0p6o6ZUPk+gdYBdm/YwowSXQzwdZOhccshdEECYLTAhA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR11MB6020.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(3023799007)(4143699003)(5023799004)(11063799006)(56012099006)(18002099003)(22082099003)(6133799003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?ZjR2OFZiMGtCU1kvS0pTTzM0MC9MeVZ6YlFLWTVOekhNM1Y2OHYxMEF0Vjdk?= =?utf-8?B?TXVLK0w0Um1hYWxIRnhIaHAyL2lta09QQjlmQSthZW5YTUM1c1U5UStpUVNi?= =?utf-8?B?NFdlcmtSdlJRZlI1S09xMjh0VDJ6cmg4QjdTbDdTQjRKTVQ0TkltU3k4Zno0?= =?utf-8?B?THcxbEZqTFcvUElaWWgvZHE1bG1QbHR3ZjBDNzlNRnRLL2x5bHVST2psOUM1?= =?utf-8?B?MVdKMFh0S1pFQmFjTmVKRWRrU1pZaTNlTmlLVmNyT2FhcTNGOUJHWHYrK0Ux?= =?utf-8?B?NFhvcGNEL0l5ZXVPeFQxc05LM2xVSG85OEtiMWZFUTltQUZVTE5SS1p4a2ZP?= =?utf-8?B?NFVlOGFtcVQ0Ymh6ZWRWaHZEL1I0YWhnazJadkdkZWM1K3hIRkJhTGFTeDdU?= =?utf-8?B?R1B5d3U0WGxqRzhWbmpHMGZzNktORUtQU1o4WDR2M29FY3R0bnBDbTUyQ253?= =?utf-8?B?THRvUlB0OTRhL09JMHhNRU5hZW52U0tna2FISHhiallkY1F0THROR0dLQU1J?= =?utf-8?B?NitCczBVekk4eGN0RUVCUjlrMSs1VVFOQ3dFU0NGOTAxZHRaK1NvUU15YTJJ?= =?utf-8?B?VWxLNkFZQUs4M1lJZnpXelBVWUdKMHI2M0RlcWVjT1h4a3pkSGxpNkJTSGRI?= =?utf-8?B?c2UxMElIYlpDV0VsVHk2K0JJclVnaWJxcXVzbnRXWTdaU1QvYllHNkRxK2pu?= =?utf-8?B?cTRsMGg0UnA1b2hSRTk1VVNiTEw2YTdDdjNjbnVnSUJWTHN2SGNwVnRRTFFj?= =?utf-8?B?OXc0ZzVrc3Y3UVl5RFV4M1JBTlk1dm45R1FRQXlLZ3haSXF3bGJtOG83NWQ2?= =?utf-8?B?SDlYeTRaOWNieHhranovY2JOTjNRVnhBVW5VUThHZEZ3bTd3eUxFczNmS3R0?= =?utf-8?B?UVlCMWJ1RkVNN1BtczJYcGNNVktETWRyZmFENzdNTVRwV3V4aG9KazhHbTRR?= =?utf-8?B?aEp6aG1JcE9hTkZ1VnhId1AzUHg1aFJ2ZVJJMnRVQjNHUGtzVXZNS29Hb0JX?= =?utf-8?B?QXROT3B0Y1RKcG81ZE9ORnNRTGk4MVE1Uk5jVlNwQWNZSktCZmJGbjc3Nm9E?= =?utf-8?B?STJiTit3b3Q1VDUvc3ZPZWw2TUYrdGR5Y2ZjeWVGTXoxcEJuem9mVTFKWnB6?= =?utf-8?B?OVRTdE12aWlRODkrKzI5RFpJeXg4ME0vK1Nyd0wrUXBBVjdPQ1BjZGpGQ1li?= =?utf-8?B?bmora0l6b2V3S3Z4ZjVlZ1QvVWhUVDZ4Z3NwaWQ2dEE3VzE5N2RoYUVIRVRv?= =?utf-8?B?QVhVdlBEMDNsMkVLamYxKzVwNDJ0elVoTzZyeXVZbFRtYWp4aXg1akRocm1Y?= =?utf-8?B?L1BzWjVxVUdab2RoOXJRMDJiWjZkTFNxQW5yRzNHcERrVTJTdVZIdXJ5S0Jz?= =?utf-8?B?OXR0Mk5YWThqL0NjZ2hFRUk2cW5hQ3RrbVpwMFRMMHVTNjFZVVRJSDRKSTgv?= =?utf-8?B?WWsrRVhnL3ZEZi91YUFjTnNEWktsTnAxV0ZLQ3BkNldZRUIzemcyaHVwM2pi?= =?utf-8?B?Wnp3MHY1LytvVDN3N0JidTYxT014VE54eHM2WDJreGZYVlU3M0ovaEhwcDgv?= =?utf-8?B?NVZRWEF4ZGJ1T3lFeEU2dVg0Nmd1Z1FuM3dvaGpLWm1hZ3IzWjBTRnpHWndj?= =?utf-8?B?RUw3Q1JOUExicXVURkZLTjJIeGhpZzdRdEswOUxzL1FhYWN2a3B0cDZSR2hT?= =?utf-8?B?bkhMMWRueE5DVHpCSmdRZHBiTnRpai9uZFFEVGhqUGtETzQvakRPL0Z3d25H?= =?utf-8?B?c2lrSVpibVEzZTFwZFFvWHlqb05iTDlrMllDYjBFNVk1SDRBNHR5NmpSaWQr?= =?utf-8?B?VnZRckQ5VGd0a3M0ZTBOSW4rbGJDSkNxZHY3bHVrT3RhYmVpSFR3RTRpb1R4?= =?utf-8?B?WEE4ZkltLzBKVmpFSVZlWHBTZW5vMGcrY3FWZU5OVWZNeWhaZU5iMUJTUEtH?= =?utf-8?B?cUlad1VVbDBmaWx1b0MxY2tEMmxvbzcrMGoxcGxTbzRHdk96d2h1V3d3Yy9S?= =?utf-8?B?cmFKc3RiTHY1Z3ZBWkRKRnFtdXdxWVR5d1NXcENjTE5lZ3ZTUjRheGI5MjN1?= =?utf-8?B?SzJPVXArSndFbDJxT09rOEhNUW00blpsZHR2eXZQQkpQWDBOdWhMSnd3TnVq?= =?utf-8?B?Y1N1MHhpREFtYUFDWklzS3gvcGswT1ZWZWtjamVhZFJBRWhwNytQdGVuSE81?= =?utf-8?B?SC9lWHJjT3VoV3owd3ZlMmNrSkhhMlpDaW9qbVhleXYrRnptZ0FtZVJoVGpE?= =?utf-8?B?akY5MEI4aEtBN0gyWVY1d3ltRndCSWVYcXJtNjhZRmZVK0xwR2R0djhoS1J5?= =?utf-8?B?MkNvRlFKd2ozRWhKYWdpUzkyeEpBZWMzeXRwZXZMV1l6MlBERE5EQT09?= X-Exchange-RoutingPolicyChecked: SpP4KwhVn2NP+K0ypyQJhliR3CF86W3F8bFCTmN9y+6iLRjUu/LP7eZ5lRxJjOSQG4Xf52hsIZdBpGR4ROlJSzidZFVj1drUujvpDhs4Z1KxBY8Pt3b138HX2jkcrZ58XKNCthkzZufYTziwUMI4ZjQe0ZQiC875N9strE/EtwX8rGaqAUedhq4ukgn15/apj5cA93v1R/7JanDmg461ferGcN1zG5A38FTbvo3eYYtNzY7O5HV4LBPv5TcJdbrPv/ZvqSIyc47jU/DY3BZJ8t2N4BfdZkT6MtVca8GdBGdqr8PkXpAwhRlhbPagF8hU6fN8X21xCvp4IbaXU2l8kQ== X-MS-Exchange-CrossTenant-Network-Message-Id: ea0dd9e4-0d88-42c6-fb1e-08dec2f5c42e X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB6005.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Jun 2026 11:29:56.0006 (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: ZEX8j58V7+O3yOELHkAvyu7iZh9l8w20xya8A8J2On/9EZXVuYfHut2xBFj7YyvVo+Ox32nTLlN//HfjLAglzA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB4609 X-OriginatorOrg: intel.com Hi Thomas, Thanks for the thorough review. On 6/5/2026 12:56 AM, Thomas Gleixner wrote: > On Fri, Jun 05 2026 at 00:08, Chen Yu wrote: >> @@ -1130,20 +1131,24 @@ static int __init resctrl_arch_late_init(void) >> >> check_quirks(); >> >> - if (!get_rdt_resources()) >> - return -ENODEV; >> + if (!get_rdt_resources()) { >> + ret = -ENODEV; >> + goto out; > > You can spare all that goto mess by renaming this function to > __resctrl_arch_late_init() and have a new > > static int __init resctrl_arch_late_init(void) > { > int ret = __resctrl_arch_late_init(); > > if (ret) > erdt_exit(); > return ret; > } > > No? > OK, renamed the original to __resctrl_arch_late_init() and added the wrapper. >> +struct erdt_domain_info { >> + struct acpi_erdt_cmrc *cmrc; >> + /* MMIO address */ >> + void __iomem *base[ERDT_MMIO_MAX]; >> +}; > > https://docs.kernel.org/process/maintainer-tip.html#struct-declarations-and-initializers > > and the rest of that document. > OK, reformatted to use tabular member alignment. >> + >> +/* true if ERDT table is present and valid */ >> +static bool erdt_available; >> + >> +/* Global variable to hold ERDT ACPI table information for later processing */ >> +static DEFINE_XARRAY(erdt_domain_xa); /* Indexed by L3 cache ID */ > > No tail comments please > OK. >> +#define ERDT_VALID_VERSION 1 >> + >> +static u32 valid_subtbl_mask; >> + >> +/* >> + * erdt_enabled - Check if the ERDT table is present and enabled >> + */ >> +bool erdt_enabled(void) >> +{ >> + return erdt_available; > > This naming convention is confusing at best. First you declare > >> +/* true if ERDT table is present and valid */ >> +static bool erdt_available; > > Which says nothing about enabled and then you claim that reading the > available variable tells you whether it is enabled. Can you please make > your mind up and make this consistent and comprehensible? > OK, renamed the static variable to 'erdt_enabled_flag' so it matches the accessor erdt_enabled(). >> +/* >> + * lookup_logical_cpu_by_x2apicid - Map x2APIC ID to logical CPU number >> + */ >> +static __init int lookup_logical_cpu_by_x2apicid(u32 x2apicid) >> +{ >> + int cpu; >> + >> + for_each_possible_cpu(cpu) { >> + if (cpu_physical_id(cpu) == x2apicid) >> + return cpu; >> + } >> + >> + return -1; > > No. The topology code has topo_lookup_cpuid(). Please expose that > instead of hacking up your own version of it. > OK, dropped lookup_logical_cpu_by_x2apicid() and make topo_lookup_cpuid() non-static and use this helper instead. >> +/* > > Not a valid kernel doc comment. Those start with /** > OK, fixed. >> + >> +static void __iomem *erdt_ioremap_checked(phys_addr_t base, u32 size, >> + const char *desc) >> +{ >> + void __iomem *addr = ioremap(base, size << 12); >> + >> + if (!addr) >> + pr_err("ERDT: Failed to map %s at phys addr %#llx (size: %u pages)\n", >> + desc, (unsigned long long)base, size); > > Lacks brackets. See bracket rules. > OK, added brackets since the pr_err() spans multiple lines. >> + return addr; >> +} >> + > >> +static __init bool cacd_init(struct erdt_domain_info *d, >> + struct acpi_subtbl_hdr_16 *subtbl, >> + int *l3_cache_id) > > You have 100 characters. Please use them. > OK, the functions that fit within 100 columns are now on a single line(and subsequent patches). >> +{ >> + *l3_cache_id = get_l3_cache_id_from_cacd((struct acpi_erdt_cacd *)subtbl); >> + >> + return *l3_cache_id != -1; >> +} >> + >> +static __init bool parse_rmdd_entry(struct acpi_subtbl_hdr_16 *rmdd_hdr) >> +{ >> + struct acpi_erdt_rmdd *rmdd; >> + struct erdt_domain_info *domain_info; >> + struct acpi_subtbl_hdr_16 *subtbl; >> + int l3_cache_id = -1; >> + u32 subtbl_mask = 0; >> + void *rmdd_end; > > See variable declaration doc chapter > OK, reordered in reverse fir-tree. >> + >> + if (rmdd_hdr->length < sizeof(*rmdd)) { >> + pr_info(FW_BUG "Invalid RMDD length %u\n", rmdd_hdr->length); >> + return false; >> + } >> + >> + rmdd = (struct acpi_erdt_rmdd *)rmdd_hdr; >> + >> + /* Quietly ignore non-CPU-based L3 domains */ >> + if (!(rmdd->flags & 0x1)) > > 0x1 is really a useful and intuitive constant. Use a proper define for it. > Added a named constant and use it in the check. >> + return true; >> + >> + domain_info = kzalloc(sizeof(*domain_info), GFP_KERNEL); >> + if (!domain_info) >> + return false; >> + >> + domain_info->base[ERDT_MMIO_RMDD_CREG] = erdt_ioremap_checked(rmdd->creg_base, rmdd->creg_size, >> + "RMDD ctrl base"); >> + if (!domain_info->base[ERDT_MMIO_RMDD_CREG]) >> + goto cleanup; >> + >> + rmdd_end = (void *)rmdd + rmdd->header.length; >> + >> + /* Iterate through all sub-structures inside this RMDD block */ >> + for (subtbl = (void *)rmdd + sizeof(*rmdd); >> + (void *)subtbl + sizeof(*subtbl) <= rmdd_end; >> + subtbl = (void *)subtbl + subtbl->length) { >> + if (subtbl->length < sizeof(*subtbl) || >> + (void *)subtbl + subtbl->length > rmdd_end) { > > This unreadable type cast orgy makes my eyes bleed. > > for (subtbl = rmdd_subtbl(rmdd); subtbl_valid(rmdd, subtbl); subtbl = next_subtbl(subtbl)) > > or something comprehensible like that. > OK, will do. > Also this gem is made up nonsense: > >> + if (subtbl->length < sizeof(*subtbl) || >> + (void *)subtbl + subtbl->length > rmdd_end) { > > Because of the loop condition above it is equivalent to: > > if (subtbl->length != sizeof(*subtbl)) > fail(); > sizeof(*subtbl) is the 8-byte header. CACD's length is variable (8 + Enumeration-IDs array), so a valid CACD always has length > sizeof(*subtbl). Using subtbl->length!= sizeof(*subtbl) might reject the valid entry. Moved the validation into subtbl_valid(). thanks, Chenyu