From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9FBD6EEAA59 for ; Thu, 14 Sep 2023 17:30:13 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 0A2B06B02CF; Thu, 14 Sep 2023 13:30:13 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 052446B02D0; Thu, 14 Sep 2023 13:30:13 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E0D636B02D1; Thu, 14 Sep 2023 13:30:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id CFCB46B02CF for ; Thu, 14 Sep 2023 13:30:12 -0400 (EDT) Received: from smtpin27.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 7197380662 for ; Thu, 14 Sep 2023 17:30:12 +0000 (UTC) X-FDA: 81235891464.27.5053FA2 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.20]) by imf20.hostedemail.com (Postfix) with ESMTP id 654751C0012 for ; Thu, 14 Sep 2023 17:30:08 +0000 (UTC) Authentication-Results: imf20.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=AH4K8rwk; spf=pass (imf20.hostedemail.com: domain of dave.jiang@intel.com designates 134.134.136.20 as permitted sender) smtp.mailfrom=dave.jiang@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694712609; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=L1jz2pT9NG2BdqdRzlF9xMJNWvxXNFRloEB0rT5jUqk=; b=ueug7kvHGrS/UpJWSJtTJULPlOwIGvf04mIgWDjIiiz2xdZIjSmazFGYIqrCpFlkk54j7b Gr6Aq8Vp/cyRO9DgDJVvhAkE95Ap2p0ePKf5lD1tk3VINGTEPkZ/7fLDPueLy7YUzSIyk9 348PdR4yE4MFz9NQiiK8NtyEtY1/tkU= ARC-Authentication-Results: i=2; imf20.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=AH4K8rwk; spf=pass (imf20.hostedemail.com: domain of dave.jiang@intel.com designates 134.134.136.20 as permitted sender) smtp.mailfrom=dave.jiang@intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1694712609; a=rsa-sha256; cv=fail; b=4feplK24635bR6pTcpMvcmRiXsX4re8g05a82zqnsVk0sCF4EThiplBDfiQbKKaI7nc97/ Bbn3Q3L2Lh03C8EzLyrETkvBJ8M8kZrDAftP4jWqcDREV3THMXVMrBrqDwDEtxkdbl4En6 oP/yQt54fK1AYpVDd6ek+UW4TLuFXG4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1694712608; x=1726248608; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=MQuDSTYRc6Y90Y/PAV3+emteSzjJVjZNOJ8/9DuwrAs=; b=AH4K8rwkID8EpcmC93OIBlabVxdfnTf4+UuSESjQQdmxqQ5fqMgcUhTt GsGVJJF8A9ErIS4T9jUYJ25Oq2Q3awuULecv8w61PKc4+jWQmB1K4rC86 oRPc8fI8U9Ai4GBbXGsKlMYHFjOiGmJytsSgj++8LUxbZoc+Ste/FIqCf mGbhYq+uckVJ6Prq1hSusWzavxPkLjbmIYe8qvg67O2G2He1naDEh8F8j SYXPYxnN/6NUcVBvlV+MEEkL7mNVl9PG4+V/72VzALFctNNwuSKyNLQl8 TFvbGvkxlE2h3O6c4dPQ+3dHh/18Hg/mByAL3REsgNs3bforOO1q7PaFS A==; X-IronPort-AV: E=McAfee;i="6600,9927,10833"; a="369322301" X-IronPort-AV: E=Sophos;i="6.02,146,1688454000"; d="scan'208";a="369322301" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Sep 2023 10:30:06 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10833"; a="773962178" X-IronPort-AV: E=Sophos;i="6.02,146,1688454000"; d="scan'208";a="773962178" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga008.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 14 Sep 2023 10:30:05 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Thu, 14 Sep 2023 10:30:05 -0700 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Thu, 14 Sep 2023 10:30:05 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Thu, 14 Sep 2023 10:30:05 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DzM+Ux5lQvQtKYK7lhBI8ZYISEWBCboNv84NKqh0cWi0HrjBxPzCqV4Y079mtLwX1HdzzhSB+6bO/VKUgbb9QsTj1uf2M1eU8CN/aOGOVmOYIdqfcVM5WPNunoOdSD0ovATDC6lAvk0FgN3bWR2+XAg6jFhYuvzt6Ycw3n8G8BTOVUA6mMqQfw+xQMu8LWe7m1x72vVbM9HQu7MSCU29AwA/Um/wJ9kHgDXCxGbHdOgao59FfTHSZCdoZqLajGIFXCt9J7znO6Ta64sqzpKrVvTlIRjVt+Amdu2u7GaBy7HOXUL+gDhdxaERum2EALqFw+iODW/B++o21TBO16b6Kw== 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=L1jz2pT9NG2BdqdRzlF9xMJNWvxXNFRloEB0rT5jUqk=; b=cfNF9JjnL1uUwX4dhQndndHazjyko1wb3Ex14sdhDyApH4aN+IW2IupJBKx6hkkjlVi3uGT7wmLyZgsSXBXJmo8KOx54Nh733zXFa25gi4Aqbe2yMOZkclcjFxbiQIJ/9jezX61RGcArXw8gSyKNBxIWiOIX8R9GtKEigokpQp7U2vy4vuDLDJTjtWMskzyC4W2kvITa9mKvIrjKto91DfLEhGwCzrqpTNYvJ7Cc37lgWJ3/YWYRlk1FMf2sn82lVNYMlhWGcF964aRH+FUpn/85Y/WwH/Vg2F/Mx3afZ07H6t1ofjUvYidwF5HecIu4UYLxQopuQQEzdqgXNRSDAg== 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 Received: from PH7PR11MB5984.namprd11.prod.outlook.com (2603:10b6:510:1e3::15) by DM4PR11MB7325.namprd11.prod.outlook.com (2603:10b6:8:107::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6745.20; Thu, 14 Sep 2023 17:30:03 +0000 Received: from PH7PR11MB5984.namprd11.prod.outlook.com ([fe80::9563:9642:bbde:293f]) by PH7PR11MB5984.namprd11.prod.outlook.com ([fe80::9563:9642:bbde:293f%7]) with mapi id 15.20.6768.029; Thu, 14 Sep 2023 17:30:02 +0000 Message-ID: <138395ff-1ff0-bcbd-3636-a1b8cfbabd13@intel.com> Date: Thu, 14 Sep 2023 10:29:57 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Betterbird/102.13.0 Subject: Re: [PATCH -V3 1/4] memory tiering: add abstract distance calculation algorithms management To: Huang Ying , Andrew Morton CC: , , Bharata B Rao , "Aneesh Kumar K . V" , Wei Xu , Alistair Popple , Dan Williams , Dave Hansen , "Davidlohr Bueso" , Johannes Weiner , "Jonathan Cameron" , Michal Hocko , "Yang Shi" , Rafael J Wysocki References: <20230912082101.342002-1-ying.huang@intel.com> <20230912082101.342002-2-ying.huang@intel.com> Content-Language: en-US From: Dave Jiang In-Reply-To: <20230912082101.342002-2-ying.huang@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BY3PR03CA0019.namprd03.prod.outlook.com (2603:10b6:a03:39a::24) To PH7PR11MB5984.namprd11.prod.outlook.com (2603:10b6:510:1e3::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH7PR11MB5984:EE_|DM4PR11MB7325:EE_ X-MS-Office365-Filtering-Correlation-Id: f0fa7330-1111-4c6d-ef6e-08dbb5483a25 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; X-Microsoft-Antispam-Message-Info: 9jSAGbnw320bxHfOwuIgkLrV08aWpxwsBq/0VC8eaTNeD0EeybC+6FIp5B9f/Cy5FEq8mP1ED1p6HiFKiz0w3Ur0TexltcCl6n80A0f7ExTrfjCMC0aOja/dBkKTsEV0UXC3ZZGy27CL+TL7fuh716WCstB9yI+7l6ugi3G1OvlhtCjUEaK6//f1DiLyZhB5i0darbN6OUjz3M2UZono23sjJxNANpnRAjBSXzvvM2oi/JhtL7q81+2LX49YE0iIJWw7LVqE8Hg37AU+bLIBH8Z/v8283ecuC/GUlSqp9xO8L19gWwQ8va5TQDiDjQwGc9Gc3SuyxhmtlGY48nLmk0aLpwNcvwagL2p1FzA+vVTig9Sgh0afQr8kOB0JLi03OhFN1j50zjlDmGwIngyAaoJMrjaEoz7emjAgaklcdgQEI0WlHI8zq3xWzBlQhzeOAk547wiI761MwXHnScBTRfnqo06Rtz2PDXLZ3sVdgQbg4ExXW2ZOA0ssZ0spchhZ9YlEzJaL6fr2T6ziuSPGkoK7gj1aERsNGwE3NuW7bowv9bRCNQITV92cmzXA4BxxqDznKGxcFhaxfVKl9Y9F4RiurpMz5DFrQOww/bYKokV6kc91+sO5ysE9v6VTrZ8GeS1Syld2nrdQIie5odrndg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH7PR11MB5984.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(396003)(376002)(39860400002)(136003)(346002)(366004)(186009)(1800799009)(451199024)(2906002)(316002)(41300700001)(26005)(107886003)(7416002)(31686004)(66556008)(66476007)(66946007)(44832011)(478600001)(8936002)(54906003)(8676002)(4326008)(110136005)(5660300002)(53546011)(6666004)(6506007)(6486002)(6512007)(36756003)(2616005)(31696002)(38100700002)(83380400001)(82960400001)(86362001)(43740500002)(45980500001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bUhkVHBsU2ZHWTF3VGp6NDBhQXU5L1RkZXcyY3JtdWtmcTlIWW81QUdJekFZ?= =?utf-8?B?RHBONW9JdXd4UVI4aDRMQjBNR2E3MklGUlh2TlRMQ1UwUHo1VTdQaS9TTzZJ?= =?utf-8?B?UHR6ZkdNSlAzeHU0czgyWWhXSVA3UlpyekZLczVWV1RKb243NFF4ZGZ6Y1k3?= =?utf-8?B?K1hER1ZsQlhkNXdzWnZSeFVzbU42MTZaNkJWVUxCQm5mbGF5Zk5iQ0FCVE1R?= =?utf-8?B?SlBTUU8xamxnMElCMzJOZWFwOFZTTndKZEIwNlVHdWhqSEtpSm13YVhydVFt?= =?utf-8?B?UXB2SStFZ1pZWFo2Qys3dWJST0kyczhiZmd1cWI5YzNxaHlhOGppNTZCV1Mz?= =?utf-8?B?Yi9YM1F2dnZEalZDdWYwUXNuMGZ1bjRJNWRHZ2pMZC8wc1J6NDE5Q1NjWHFR?= =?utf-8?B?YTNlOGFSWmJyWEl6bFRkalpqQXZmYVRodDdtbjlUbFdQMnUzMGxsZFAyZ2JJ?= =?utf-8?B?Yy9HdkswYnNtTmJFZWVOOGQ5TEc4bSs5OW10bllHUjF3WUkrVkNMRzEzTXlI?= =?utf-8?B?blAxL1ZqWEl4VTNvdGxmTFp4MHIxdHNZcDRpN3pYUGVHTFY5ajdyMXFMdnBT?= =?utf-8?B?eHc5S1BHMW13WDc4WUVTWmQ4eHc0SXRKN2ZEZjlGcVg5ZWpocENKNmRLY3M0?= =?utf-8?B?VFhFRGwxcEJPaFVmWmp6M3VQaDRWeXBGWGhwMUpnTG1maGFBNGtwN1FaK3dP?= =?utf-8?B?aGxQMUUrVVphb1RNWlFweENNc3lMb0dFaGVCL01Cc2ZPOHZ0RVJEbGdsNE8x?= =?utf-8?B?ak16UlRxb0JCOXVUdEdWL3NwMElLMnlJYWU3b2UxY1o2TjR6cnpEdUVFeGlk?= =?utf-8?B?WTBFczdaVS9iYTQ0VGp0ZWJjZzN2S1BadGlJenJUQjJzQnl5UzlSbnBvdDFI?= =?utf-8?B?L2VCWmRxMFp5T1dURmZJVC9GUHNCWGRraXdQSUVxYXVqWEFxMWl6bDdNdnNl?= =?utf-8?B?UGpYb2FRcjUvMC8zalV4WjQxbHMwcXpFTzg5OUNqTWpvSzFmblF1YmJUdlFa?= =?utf-8?B?RVNlMVF6M0luc29nZ0FKVmZmT0t0VGJtQTZJeWlBUUQ0ZmJVWXQybGtOMFdX?= =?utf-8?B?em9WK3l4aEZuQUpvRHQ4bkJBSnFGckxGK2FLQUkxQTMvMW5FNUJKT2RkRVhu?= =?utf-8?B?aHR4cExuQi80UG1TNHM1SWhCaitxWDk1aG05L2xOMkNvdnNHUHZWY2xmMktz?= =?utf-8?B?NlFoVjZsbW14YjhDNExMajNXTWx3M3hlMUhkT3FNMEV0YVJxQ25iRi9zVXFn?= =?utf-8?B?WDk2ckFqbFNPMXBiaGE0R3Z0SEFDOWUvYjBselRjV0Z0RXhCeGhTRTdKcW0z?= =?utf-8?B?Y28rSktHK2tLRDlCT3Yxc0wySTR1NlNsN202SWIzeDZlYzF3MkZpemYrVk9i?= =?utf-8?B?c0lVaEJwUUJTVFRJZHFSaE9JeVhBeXpQZ21KUS9XRTlBSWxQTUNEMG9DYUp5?= =?utf-8?B?RkJDdEZnSkJaSVZCdk1WQ2x5YmRNUEVNajVUVUlTNURCaFpxMk9FMWFvb2RC?= =?utf-8?B?bTY0Z0lueG5UakwxRXVuTUNiRkxaa2VMUENVOWhhOEp2S1ZaK0xKRzNMZXE1?= =?utf-8?B?SWVuN1ZmcjN1MUFMalJDdGd0OGlRcU5mWnVpSisrVTdZQ0JZZTNEK1psOUFV?= =?utf-8?B?dGhDWWUxVG5NRXZkUm55YXFkaWR1Z3F3TzhiRC9qOFpMSUVLVTBOamdTdlk0?= =?utf-8?B?UzFOUDRENkdkbkxYcnU3b1ZqUnBMRGh1KzcxVCthUnNLWlNwTUhBRHNmbjdr?= =?utf-8?B?VDlVSDRTWlFYNTh3Q29DNDlnbDJZQktsU2ZXNW56WUNwUVVWbGlWUHN6aHdS?= =?utf-8?B?WU1DWGkxUFhSek1vNGJIcGtuQ3lCVklEc0h5L1FUT1lGNmJ0WVF3Wk1EOWYv?= =?utf-8?B?MlNzQU1CVTFmUU96dVRubmdnbmNGNnJSRGQ2aTdCY0xDREpreHdIay9nL3Jk?= =?utf-8?B?NENDa3BmbGZ1c24vUUh5T2FEWENwcEFaakc1bHF2NlFYUENOc0tzNkpuOVdC?= =?utf-8?B?dW1XRHFCank1V2ZJTk8rUHZMaFlQd1pGa29iNGhheDZmU0NpdFRZbGcxWVo5?= =?utf-8?B?ckRRWCtSdDdOWHdEcitHMFlRencraDlKckRnQ2puYkd0UE51QTN5MUtZbEN3?= =?utf-8?Q?SZRxYi/f1fZUQ7URWpalIkk/l?= X-MS-Exchange-CrossTenant-Network-Message-Id: f0fa7330-1111-4c6d-ef6e-08dbb5483a25 X-MS-Exchange-CrossTenant-AuthSource: PH7PR11MB5984.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Sep 2023 17:30:02.5307 (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: 7bSwvHTxQcVhuK0XQwnxTovL1als7jl4D7vYWHDm2fE7eL2nkaTdtptbVAJYujbT400T0o9pqE++ieuS8xSXBg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB7325 X-OriginatorOrg: intel.com X-Rspamd-Queue-Id: 654751C0012 X-Rspam-User: X-Stat-Signature: j84k4atrjqndke7nat6mffw37wjdtp7d X-Rspamd-Server: rspam01 X-HE-Tag: 1694712608-575651 X-HE-Meta: U2FsdGVkX19QGlITw9cJhTmbE9hD+uDAz+MJTXML2gE5OJ8rIKmvS/FB+aWr9ZaBjwbyA1U9aa88jisypQ0DnbKXM02e18JfJNEC2rv470uSyk9yOcBRV/vQussfT6c5FYb/218iDdpEDZ182F+2x00zJoA4z1hhuvxyEMBKYQq142INuDvl2g43vyIEJ2ydQQmfnP9Q5oJXiiC9qwvaTkI0j+rrMP4WDNNUGlWi5XnppLM/fYOJ7f0bIqFstDJAWfbPQg3VdlEIWM568cxpXh7lcCw4nCjs4F1NL0Ie/GOtoj7lHp+p/8ZaKXBQvbZPFNhzb0x7xb9FTJqmxl+Fp1CkQCrB3nhnC1VRoXJYQ6anjAnJeHYhG1eI0YswuCy4Z751g6qnTV9JbCFMGdT9nubUr6uOuXQ1Se2C/xrfq9oCa5youu/wa1b/k8q5RMqsUfHTwwaIyWhiP4bPqXIiQHVu2XcXKFhg8ppx5HsEZxw4yqGjeEd6SzTBRA8aPhsb75O1EPPBBIg6DzysYJ6O8Th221gf1RseRy0X7DF0mm7PXUlc8RJcnxjw2Wi5Q+0lKylAkFdTkZGP4iIn2IvExVgI3zAISfitWV/oBlekBBlflqsJn4s2L/WvgqgvJ8uczS4OlO2v2q7VizQpvWK9Z30UDQuy+A/uSlqHv9GFPFBbI9JTSO84c2U6dOKtlj/Bmso1f830GKh0QuAce21L0Y7NEFCCgnuLL9OYoy+S45xgeTAEmDtKukIWBMgG6Mt3Zf+b1RoYabcpPS4exkecOQRCTnh+HkiABqOw8OD+fQgeo+rcf338YxQhgMZ0uG8VoXTwPssmgSvngJbdl8iMCwRbbupnBoW3UDK1b/VS0rpdqlZfboEXOodfFJa1FzjybkmBA6+Wqi97wqCkFhNLUiuwSPtztuh5ZZ55HhuFYMxrAsp59GJGv1KQYF/6Pewmajs1maTLQZXSvt1a1z2 oVdwXOQR p4D5bIFutr7aCcJVmpY3OM9E++yTJJpgTSJRleFnnEQOxX8gk9qu8HMuLYC+ICWd+hzijj7pMR+rnEoaDyxlMtFQUxgTlTg0E7CWE9bnfKYXVNovx0p2pukbmWgTuJnGKUKGYZGfdyieQqRZEKFfn5lCwyCihepJhkv7E/gozV8JqmCMuySaZq4ZpwQ3pas2LPX/u5F6c9Nag+ws54SovDtFx3+CvKDnDP9AKrlAeWfpLyHXOd30MYpkZCqjgHkDNH1Mr7nrg1i3vI3SbBoPOg2Dyc+zc8CSawDQLs2t4uKXG/0yqikrLuCkdbZdfiwb9yWV8hNVuYja7NKbkewYv5sPBxNf8nKQ56OD6wGeFa229/+Gl5ktwaVSroe5ZGAASHol7cS0wDHqFKjFs7aeV/Evhxu9uIK31MbI/dtzxO91qW34iAL9T6oDSR5sf0HnPydjKkD/X2kcB3YvmhOROOsFQr46YgTiQyozyOmesneOm3z1/TEugPbVYwmIvYqwk4SjJOJrjr19BHijR4O39HH940Z4Z+VwJQOb/v9s5374fSmKbhF0cO7AG7yT347hI3ex4Y3NmqO8zuAvp4uMy8eLzx752ODC9w9UEvE5ZtAyKrLNWx+2zGNLZxQLYRcXc/v/33MadMMgTlqLMvnYZ2rAh8lx65C2ndyj+eu2s1qw4Z+f/RYFjDjcFtQ== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: On 9/12/23 01:20, Huang Ying wrote: > The abstract distance may be calculated by various drivers, such as > ACPI HMAT, CXL CDAT, etc. While it may be used by various code which > hot-add memory node, such as dax/kmem etc. To decouple the algorithm > users and the providers, the abstract distance calculation algorithms > management mechanism is implemented in this patch. It provides > interface for the providers to register the implementation, and > interface for the users. > > Multiple algorithm implementations can cooperate via calculating > abstract distance for different memory nodes. The preference of > algorithm implementations can be specified via > priority (notifier_block.priority). > > Signed-off-by: "Huang, Ying" > Tested-by: Bharata B Rao > Cc: Aneesh Kumar K.V > Cc: Wei Xu > Cc: Alistair Popple > Cc: Dan Williams > Cc: Dave Hansen > Cc: Davidlohr Bueso > Cc: Johannes Weiner > Cc: Jonathan Cameron > Cc: Michal Hocko > Cc: Yang Shi > Cc: Dave Jiang > Cc: Rafael J Wysocki Reviewed-by: Dave Jiang > --- > include/linux/memory-tiers.h | 19 ++++++++++++ > mm/memory-tiers.c | 59 ++++++++++++++++++++++++++++++++++++ > 2 files changed, 78 insertions(+) > > diff --git a/include/linux/memory-tiers.h b/include/linux/memory-tiers.h > index 437441cdf78f..c8382220cced 100644 > --- a/include/linux/memory-tiers.h > +++ b/include/linux/memory-tiers.h > @@ -6,6 +6,7 @@ > #include > #include > #include > +#include > /* > * Each tier cover a abstrace distance chunk size of 128 > */ > @@ -36,6 +37,9 @@ struct memory_dev_type *alloc_memory_type(int adistance); > void put_memory_type(struct memory_dev_type *memtype); > void init_node_memory_type(int node, struct memory_dev_type *default_type); > void clear_node_memory_type(int node, struct memory_dev_type *memtype); > +int register_mt_adistance_algorithm(struct notifier_block *nb); > +int unregister_mt_adistance_algorithm(struct notifier_block *nb); > +int mt_calc_adistance(int node, int *adist); > #ifdef CONFIG_MIGRATION > int next_demotion_node(int node); > void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets); > @@ -97,5 +101,20 @@ static inline bool node_is_toptier(int node) > { > return true; > } > + > +static inline int register_mt_adistance_algorithm(struct notifier_block *nb) > +{ > + return 0; > +} > + > +static inline int unregister_mt_adistance_algorithm(struct notifier_block *nb) > +{ > + return 0; > +} > + > +static inline int mt_calc_adistance(int node, int *adist) > +{ > + return NOTIFY_DONE; > +} > #endif /* CONFIG_NUMA */ > #endif /* _LINUX_MEMORY_TIERS_H */ > diff --git a/mm/memory-tiers.c b/mm/memory-tiers.c > index 37a4f59d9585..76c0ad47a5ad 100644 > --- a/mm/memory-tiers.c > +++ b/mm/memory-tiers.c > @@ -5,6 +5,7 @@ > #include > #include > #include > +#include > > #include "internal.h" > > @@ -105,6 +106,8 @@ static int top_tier_adistance; > static struct demotion_nodes *node_demotion __read_mostly; > #endif /* CONFIG_MIGRATION */ > > +static BLOCKING_NOTIFIER_HEAD(mt_adistance_algorithms); > + > static inline struct memory_tier *to_memory_tier(struct device *device) > { > return container_of(device, struct memory_tier, dev); > @@ -592,6 +595,62 @@ void clear_node_memory_type(int node, struct memory_dev_type *memtype) > } > EXPORT_SYMBOL_GPL(clear_node_memory_type); > > +/** > + * register_mt_adistance_algorithm() - Register memory tiering abstract distance algorithm > + * @nb: The notifier block which describe the algorithm > + * > + * Return: 0 on success, errno on error. > + * > + * Every memory tiering abstract distance algorithm provider needs to > + * register the algorithm with register_mt_adistance_algorithm(). To > + * calculate the abstract distance for a specified memory node, the > + * notifier function will be called unless some high priority > + * algorithm has provided result. The prototype of the notifier > + * function is as follows, > + * > + * int (*algorithm_notifier)(struct notifier_block *nb, > + * unsigned long nid, void *data); > + * > + * Where "nid" specifies the memory node, "data" is the pointer to the > + * returned abstract distance (that is, "int *adist"). If the > + * algorithm provides the result, NOTIFY_STOP should be returned. > + * Otherwise, return_value & %NOTIFY_STOP_MASK == 0 to allow the next > + * algorithm in the chain to provide the result. > + */ > +int register_mt_adistance_algorithm(struct notifier_block *nb) > +{ > + return blocking_notifier_chain_register(&mt_adistance_algorithms, nb); > +} > +EXPORT_SYMBOL_GPL(register_mt_adistance_algorithm); > + > +/** > + * unregister_mt_adistance_algorithm() - Unregister memory tiering abstract distance algorithm > + * @nb: the notifier block which describe the algorithm > + * > + * Return: 0 on success, errno on error. > + */ > +int unregister_mt_adistance_algorithm(struct notifier_block *nb) > +{ > + return blocking_notifier_chain_unregister(&mt_adistance_algorithms, nb); > +} > +EXPORT_SYMBOL_GPL(unregister_mt_adistance_algorithm); > + > +/** > + * mt_calc_adistance() - Calculate abstract distance with registered algorithms > + * @node: the node to calculate abstract distance for > + * @adist: the returned abstract distance > + * > + * Return: if return_value & %NOTIFY_STOP_MASK != 0, then some > + * abstract distance algorithm provides the result, and return it via > + * @adist. Otherwise, no algorithm can provide the result and @adist > + * will be kept as it is. > + */ > +int mt_calc_adistance(int node, int *adist) > +{ > + return blocking_notifier_call_chain(&mt_adistance_algorithms, node, adist); > +} > +EXPORT_SYMBOL_GPL(mt_calc_adistance); > + > static int __meminit memtier_hotplug_callback(struct notifier_block *self, > unsigned long action, void *_arg) > {