From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.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 ED69940960F for ; Fri, 10 Jul 2026 23:55:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=198.175.65.12 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783727746; cv=fail; b=Xdr7/BmPCQOZPs9YpYP/IdBkWUoJ+kSRPee6GukSfXNOjFtuCmv44fZs7ekP5+kKjQejEGcMMgiGKIPLH/FX1Tz0DAe8TiSpkrxDPj4oOOohRiYfX5+z20lbfPCb2kywDBJgKkbSaC2GmQpz2ZiKh61EV5NllH18TsnWD11tE7Q= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783727746; c=relaxed/simple; bh=RUv0oWojzSr5iNlPF5BZ0KOpzuJo3YTsau5vd3B3TMI=; h=Message-ID:Date:Subject:To:CC:References:From:In-Reply-To: Content-Type:MIME-Version; b=VXsi8ldEfKsxTRv1oSuinfIsqm+aroK4JLQrgZtmZAIWi/mWXcDCY82po9/xEBwx0mb2uPEbdDsMh0cUMVJKMHJsy+zN0QBLVSo6DgY112dAbP+nrczeJznEiD7BXSM99Myzs8nzCG1Lo/KUS/ot1060/xvdvLi5YsX+sgme4fo= 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=QUgOY4G+; arc=fail smtp.client-ip=198.175.65.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="QUgOY4G+" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1783727745; x=1815263745; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=RUv0oWojzSr5iNlPF5BZ0KOpzuJo3YTsau5vd3B3TMI=; b=QUgOY4G+FTdKTD8MYlV5OcfZn7AW4G8HD7N2/otJBIoeTfI7/qUaHd7Q gJg+BA2pu9sLi3NYJmo1A8qrNT8zma93zIGkYIo0rgUDwKG4xc0VMvEwc ZqD80e1K7Ri9qzzKI2cLcN11Gbj4WqbsslzQm3eaRBCcUMkIKRksyg66i 2aZ5O2hOkbpgvpaajdR5tGlWokQV6MhIUAyFVnpZSYZ/dP6isniOy5RCi I443svBhCGzI5e1719aLsovv3s1C+Z0f1OFJ6GA2d8XauIuvY5SHwPfvJ IHktecsRkBed7GsoRY5F6hkPTPfeZJQXJsKjrvaIOKbnUleIvMak7AjQI Q==; X-CSE-ConnectionGUID: PA66LwB/RAePnIUh3EYWwQ== X-CSE-MsgGUID: 5Nr2M/dCQfuLs7SUeepQhA== X-IronPort-AV: E=McAfee;i="6800,10657,11841"; a="95943513" X-IronPort-AV: E=Sophos;i="6.25,154,1779174000"; d="scan'208";a="95943513" Received: from orviesa003.jf.intel.com ([10.64.159.143]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2026 16:55:44 -0700 X-CSE-ConnectionGUID: NwYBkxXZTbOfyrWSui+Law== X-CSE-MsgGUID: o3spMwfUTHqwjS3JW7NjeQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.25,154,1779174000"; d="scan'208";a="258599925" Received: from fmsmsx901.amr.corp.intel.com ([10.18.126.90]) by orviesa003.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jul 2026 16:55:43 -0700 Received: from FMSMSX902.amr.corp.intel.com (10.18.126.91) by fmsmsx901.amr.corp.intel.com (10.18.126.90) 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:55:43 -0700 Received: from fmsedg903.ED.cps.intel.com (10.1.192.145) by FMSMSX902.amr.corp.intel.com (10.18.126.91) 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:55:43 -0700 Received: from PH7PR06CU001.outbound.protection.outlook.com (52.101.201.37) by edgegateway.intel.com (192.55.55.83) 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:55:42 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VKhrjvXTgCpa36+IMpjKXlUXES7500uTsXIT+5tf7Y6OQfh0sd2J8P0J0iTk52zOfdP39CD3K2srX4dK2t1xScUBEQxQkN8eVihfW4hP66MvpldDudAEOKFqTLrGOu8PKAgDKNbU6TI7hCSjUbV7C8FBnEJUpFCPMDbT6EAAvKxhiH8kIKDEWorw1iTh2C/JD/Qzma3vRxNCIbjAYhux0ikgf7hrAHsjGlRt2SUIOapy2NV48pJc7bYlv6zQViI/qoz6ST8lyg6oEOx0LrNbnkuGLCYY9opltL6I122F8oWqIH55am7YU9x93Iwc3APxCTj47TQkcpfQrH8ZAUYDOw== 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=vQZ07JTnXaZ99Pv/bBM4uU2scGJOptmGAct50L8i8js=; b=pvuOOL3Gl+09+VtVyu1uuy//IVQerGeeeMcCbD6d3hsNbgAJaIX9adyExuVrCYtBV/fERqRPxM09JfDCuKq8an8FGROaoNVPXbv5R0jqf1cnBnkdthdl7trgtod4FLK0+RCSdL+fDPPJ4BwZKf1Iuh3WiWsm5dj3f9r1wR3CQYvUNj4d6EhOm6YgRiRaREexcfR0Zj/nBd9BNbAtACphYeLOulO+Vbp8CniAnY2O06weLDnNUqwgsXKo2LQxxZFRS9XO+Ap0AKvysFudtoFOPmIRCgpVugHPRsVGgmXjF2ONBLI8lYXeIq9FC8RDyTLDiOZImom3VBA1DC0UB6B31g== 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 SJ0PR11MB4864.namprd11.prod.outlook.com (2603:10b6:a03:2d4::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.181.18; Fri, 10 Jul 2026 23:55:34 +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:55:33 +0000 Message-ID: Date: Fri, 10 Jul 2026 16:55:31 -0700 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5 10/10] x86/resctrl: Enable read L3 occupancy via MMIO To: Chen Yu , CC: , , , , , , , , , , References: From: Reinette Chatre Content-Language: en-US In-Reply-To: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: MW4PR03CA0163.namprd03.prod.outlook.com (2603:10b6:303:8d::18) 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_|SJ0PR11MB4864:EE_ X-MS-Office365-Filtering-Correlation-Id: 86449752-1780-4626-43b1-08dededebb2c 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|23010399003|376014|7416014|1800799024|18002099003|22082099003|11063799006|4143699003|56012099006; X-Microsoft-Antispam-Message-Info: XT/G+i9x0o+YQ2WW6+iQ4Ks0cbuCkOXWO7yFnCjYUV+AfZSJsBUA/wkBhfL3lHf4dJ5AubJqvUwFIoNg/D4MGqEJwAFXDZ6Y5UyG/DtKxzeYjFIp45+OXtyvbdWv+VfSau3nWd9IV5Ne4zfg2nLR4gyWroJAoyTh0Fgtci2nXheTq8GE4vQd0LfuTbJu6S5Fk+RHL6tiF4mGbgGmAjDiehsg+aByUqugrSK3suKq+lMHDHyBwyJaQHFHe29kzHv9TJ3w7kl3X3pDbcMMww9sC5BeRL8l9XbC4VXadFC6UWWh8+SKW1hs6QJxPLAnz3IQRS9pOa7fLF1RyYdzA96pLxkdJ/XXexwVR8MnPBKNs3TFjMqWkq3aTXfBf943+mSvtaQEqjwMgXLnT4F/lo/M1eDLpXxKhnyxTDU5DYH95RxqGxf+vafr/NsxCHkVqr7dupApngL4ZdZhbLzVUaOvdSRXpJid3PhYbwrUVGJsBd6wIrypIFhXTAjeU7Th6aHwzW7PKCgNOp+c1nyhOP462IETHwI7TimwqEFs1jYBZmKL7xVG6RxdxdNkYhDqzNjAzfs79iLwGaj+3ijVlGzGJ4FSj3D+qVmAmMrGS4a23u9CqFGXCbpJQfaN92cxY9uHKJE3v66O51UUEdCWAye4KnNP2Mtlka2WsUjL/fEgaEM= 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)(23010399003)(376014)(7416014)(1800799024)(18002099003)(22082099003)(11063799006)(4143699003)(56012099006);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?MTBvV1ZLVjhVOXB4YUY3RnpBbjVMSXRuNVlaRmtuWDNEazhiZmJqeHV1MjlN?= =?utf-8?B?c05TNmZmUW9BSXlzaitWNnZyeDBqcGt6d2FIZGxSQkMzNW1pWFIrMEozOGtF?= =?utf-8?B?djhxbzhCcjdSRW1GeEMwS0ZBZWtzdVV5bm9TVGhsQlFhUnRhcHdmR2g3N2ZJ?= =?utf-8?B?U0tRbW1LN295Y2JyTnQ2SHBvSG1yOXdEV01jQnZCNzZ2c2tRZHo1SXgwZCtG?= =?utf-8?B?bzN4ekhEMnlsdXFKYWJ4ditQV08vRFFQSnBtcG41Q0srUTBuTHJ4bTJ6SGVZ?= =?utf-8?B?U2M3bjNEaFJNbWdGZFN0R3FuN2tDS3VpRlVHM2tPb3FENDVPU3ljd2FndjBD?= =?utf-8?B?NDFrUlNhV0QyS3FIMXBCRDlqODZOVmI4THZKbUQrZjFSZ0VHVk5IM3crUDZO?= =?utf-8?B?ZmxxcXlhQUtTaTNGMlp0bWJMazhKNjd5YlZwVFI0RjJnL0tGYTcwdEFQaWFT?= =?utf-8?B?ZUFqajVKZHAzejJSTTNjQWl0NVE5djlueWlBVmhzTTU3TURQd2VudXZvS1di?= =?utf-8?B?b2tseWZKWjd2c25OVWVsdzB0cTIyb3o2eVFzZmRQaCs1enFuS1FBakFrNzF2?= =?utf-8?B?WkZuSkRjeCt5K1RkdDYvRDhnUmtzTkx4NlJzMklzOG80NFJPWVQrVEovZEp4?= =?utf-8?B?dnZoYzNQUUlvN1FqTkR4YVFzd0ZXdEhQZm9DQk02dVFqRHZLK2pwMm9CL1Jr?= =?utf-8?B?QitCaFBObEZJVjF2enBSeCs2KzFaMW5FRHowQTlycnZLS3Z5aHYrRHE3bDFS?= =?utf-8?B?UkhjSTVDejU4L1J2OVRoTDk0RzhDZlRqZTFBZlR4aWw3bFJnWEIzYk5YNGNW?= =?utf-8?B?TTY2c3ZGc1A3Z3ZsTTNoQm1tUUY3TGh0YWRNVHVJcjhLQ1NVQkQ5aER6U2No?= =?utf-8?B?Z2N2SFVHVjRrV003cENmQk5SSktYcTNjWG9wd3o2YXZ6dGtoYis3V2k1ZlYr?= =?utf-8?B?S3lmT3NUUUJqQU1qWkpSZkdQSnErREZTZFA3RkthdzFXMGJkK25JOGM0V2FR?= =?utf-8?B?LzFmT21qdG1WMUlBYndnQlF2MUw0dGhpMjVwbEY4dy91V1NneC9lQUo5bG43?= =?utf-8?B?SkZxd1UyVnJSK2NRODlYdENXSFI3SURYcEwzUEV0bTIzRW4vUUsyNFpKaE1n?= =?utf-8?B?OThsb2tUQVVkOXFnOTQyOWovaHU4NlBsakxVQjBXaUJ6MU1kRW1CT3RJUGM1?= =?utf-8?B?Y0VwOUpDWVV6OEpGU21rVmh3dXd3V1E5ZkFqN3dvczJvN2RCU1ZYajNIczdL?= =?utf-8?B?bmhNQk0rRHNzMWlaVW9yLy9ESGpUSlhKcjhzME5rb2Rub09tVXVsVXlDZkxj?= =?utf-8?B?SUJWdHFqOVNVOGdZdjJGN1RiRlk4eXNwVXJFOXFzTTl3OFhGa1l5VWJ0S1lr?= =?utf-8?B?NU9VSVZJUTV3UWZ4TTJQdEZpL1h2Wmxpd2ZKTXJFaGtRV2xETVlPZUVNSU1U?= =?utf-8?B?em1rb043Z3FnbXZLOGluSEZPYmdVSW1pNmtsK2FxQ1FveGpidnZteklIcXNu?= =?utf-8?B?TDBiVm9RQzVqSzRDKzhVaHJWU2JaZ3ZJdWNnMHpndllwaVRtWjk1YVYvWmpC?= =?utf-8?B?ZGxiRXpPNklFWXNJRnAzMjFoRnRQOGNOYkFwNDc0dFpkaDJvNUxtM2RrNHRH?= =?utf-8?B?Q1RmdlY5bXNvS0ZQUjRQNllUenVFTHovSjh1V3NaeDdsLzFSZ29MWGVFaU9O?= =?utf-8?B?MG1LYzE1SlUyL1RIS1dTQUZsdWw1Uy9pWTNMVldQUlJRZk1zRHlJNzl6anA1?= =?utf-8?B?L3lXd2ljVkpZK1Z3b1ZSV053WTZuY3ZjUlVjc3J4ZW81T244alZYa25ORS84?= =?utf-8?B?NUdxUmQvTUtxL0ZHN3dpMnlaSWpWNXFvM2hpcU9yLzBxaUxIMkpPU3EzUWZV?= =?utf-8?B?OXJuWER2amFNNVBwNENqaDhRU2svcjlEais0L05qV2RKd05wSnJjbldhclBF?= =?utf-8?B?THVWRkw4TXVZVXV6bHZCM25nL29HTTJoNTA1NVpsbEU3aXRQbkxIMDhOWWVS?= =?utf-8?B?N2FtOWJtYUY2aHpNZWtHS1JjUEZyUmE3NDlWUDBCakp1VHA0QXdISnZFa20y?= =?utf-8?B?bUFjNVdWb2FUK3ZaSlg0Ri9xNkVacExpMU5uOHNkRmd1bklkazNNWXBwdGNE?= =?utf-8?B?Q0h2cm9MTnFSc240V0d3QVFzY04yc1hNeVkxeEUraER3dU92RU83RUJsSlhG?= =?utf-8?B?dk9FRjk5UWRYQUZlQjVha05IeG5EYjZsc3B6SDZoMHpJTTZZVzQ1RmNpcmhh?= =?utf-8?B?QUtmWnR4OWlibXphOW9Ud3Z6N1prakxYK2tWT0p5U2VQT09RS3F6VXFONlFa?= =?utf-8?B?czZPZGx6TitlM25ZYWhuU1Rwd0ZIZldQZVcyZ2N3cWM1b1k5Yy9XQlE0bURF?= =?utf-8?Q?QoyGxJROb3mXLuQM=3D?= X-Exchange-RoutingPolicyChecked: WNWuxDDh9lciGUmj4SbwuJEIGp5QPDDg8PClRBhenQdcSeoRb0yWBLIQ+nRpy06Qy0a8Uh1fLp8gub1I6N+BZXu/A4zikEvphFzZSpEMTB/GfVatJC3Ps2ZAVnIlgxF6BNdNvZ3XFV1DQFi12sVArkGioiBk8NDKtZQEx55Rtws2kKTrUjErnhREi+8rN4zmmFAg4KDLFn1IzCqWmv6QYIRQLLDuTknCmFfrex3rK52EIoL8oSRNzcBANfHsFds2TVN20Gf3vRMx2tU8ZINVfUCxmO4a1LLAzdNH68dFVMSINgNyP9JmXyDZK/LKUdDQlbzgAZFgBdeQfoB6KWjW5w== X-MS-Exchange-CrossTenant-Network-Message-Id: 86449752-1780-4626-43b1-08dededebb2c 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:55:33.9146 (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: 9SwI4RUT1Eh77rJjiXZPzA8O/xuXXnFdW3kxEbQNW0hLGIKEuW2jau0+pn1sR69JdgO8qZruKGtsbghB8aBzwOc1JplwPDptGArYxDFUe7g= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB4864 X-OriginatorOrg: intel.com Hi Chenyu, On 7/1/26 6:47 AM, Chen Yu wrote: > Implement the erdt_mon_read(). > > Use the CMRC (Cache Monitoring Registers for CPU Agents Description) > ACPI sub-table to read LLC occupancy counters for each RMID via MMIO > when ERDT is enabled. This CMRC information is stored in the > rdt_hw_l3_mon_domain, which could be accessed directly. > > Suggested-by: Reinette Chatre > Signed-off-by: Chen Yu > --- > v4->v5: > Split into a smaller patch; no functional code changes in the low level > implementation, but read from the CMRC information stored per domain . > --- > arch/x86/kernel/cpu/resctrl/erdt.c | 63 ++++++++++++++++++++++++++++++ > 1 file changed, 63 insertions(+) > > diff --git a/arch/x86/kernel/cpu/resctrl/erdt.c b/arch/x86/kernel/cpu/resctrl/erdt.c > index 1114ad4e3b42..f897c7e247bb 100644 > --- a/arch/x86/kernel/cpu/resctrl/erdt.c > +++ b/arch/x86/kernel/cpu/resctrl/erdt.c > @@ -36,6 +36,9 @@ static u32 valid_subtbl_mask; > > bool erdt_support_features(int flag) > { > + if (flag == X86_FEATURE_CQM_OCCUP_LLC) > + return valid_subtbl_mask & BIT(ACPI_ERDT_TYPE_CMRC); > + > return false; > } > > @@ -57,8 +60,68 @@ int erdt_get_max_rmid(int cpu) > return -1; > } > > +static void __iomem *cmrc_index_function_1(struct erdt_domain_info *d, > + struct acpi_erdt_cmrc *cmrc, int rmid) > +{ > + u16 clump_size, stride_size; > + void __iomem *vaddr; > + > + clump_size = cmrc->clump_size; > + stride_size = cmrc->clump_stride; > + > + /* > + * MMIO_ADDRESS_for_RMID# = CMRC Base + > + * (RMID / ClumpSize) * Stride + > + * (RMID % ClumpSize) * 8 > + */ > + vaddr = d->base[ERDT_MMIO_CMRC_BASE] + > + (rmid / clump_size) * stride_size + > + (rmid % clump_size) * 8; > + > + return vaddr; > +} > + > +static int erdt_read_l3_occupancy(struct erdt_domain_info *d, int rmid, u64 *val) > +{ > + struct acpi_erdt_cmrc *cmrc; > + void __iomem *vaddr; > + u64 l3_cmt_count; > + u32 offset; > + > + cmrc = d->cmrc; > + if (!cmrc) > + return -EIO; > + > + offset = (rmid / cmrc->clump_size) * cmrc->clump_stride + > + (rmid % cmrc->clump_size) * 8; This is the same function open coded in cmrc_index_function_1() - can it just be coded once and then re-used? > + /* Overflow of cmt_reg_size * SZ_4K already validated in erdt_ioremap(). */ > + if (offset + sizeof(u64) > (u32)cmrc->cmt_reg_size * SZ_4K) > + return -EINVAL; > + > + vaddr = cmrc_index_function_1(d, cmrc, rmid); > + > + l3_cmt_count = readq(vaddr); > + if (l3_cmt_count & UNAVAILABLE_COUNTER) > + return -EINVAL; > + > + *val = l3_cmt_count * cmrc->up_scale; > + > + return 0; > +} > + Reinette