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 7C44BEEAA5C for ; Thu, 14 Sep 2023 17:31:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 007266B02D3; Thu, 14 Sep 2023 13:31:28 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id ED19D6B02D5; Thu, 14 Sep 2023 13:31:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CFD996B02D6; Thu, 14 Sep 2023 13:31:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id B94D46B02D3 for ; Thu, 14 Sep 2023 13:31:27 -0400 (EDT) Received: from smtpin23.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 0A8E1A0F8D for ; Thu, 14 Sep 2023 17:31:27 +0000 (UTC) X-FDA: 81235894614.23.1849AD1 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.20]) by imf03.hostedemail.com (Postfix) with ESMTP id 1353B2001C for ; Thu, 14 Sep 2023 17:31:22 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=jjZ7P76a; dmarc=pass (policy=none) header.from=intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); spf=pass (imf03.hostedemail.com: domain of dave.jiang@intel.com designates 134.134.136.20 as permitted sender) smtp.mailfrom=dave.jiang@intel.com ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1694712683; 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=z09VK72ff2i8d/xIiGR1WB96zGs1F5rSWCsN1sh0EAI=; b=Lx8ghGf5mcvQx3mtYTN/Z9yG+xGxfFTJHRU4lyluYqgbF54qY8L9u9gM6cDIJ+Uj7Zf4d9 FIugZmIq4A8rPBmTwQ0I0y4RrjzDmufaAUu8TsELOcLSI5bVa7riD7XO9mVI226IrPNpsx hr+zYlw6Hd0krDVCwGd7cnyJ5nAve1c= ARC-Authentication-Results: i=2; imf03.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=jjZ7P76a; dmarc=pass (policy=none) header.from=intel.com; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:reject}"); spf=pass (imf03.hostedemail.com: domain of dave.jiang@intel.com designates 134.134.136.20 as permitted sender) smtp.mailfrom=dave.jiang@intel.com ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1694712683; a=rsa-sha256; cv=fail; b=oZWuoSygNcWWLjO5nI5dWbdwik9y9ryxSVm/OGPo5vKwUNnTEkRQ4hrB1e1e62v+AMyYJI 9vqb/2o0VabEaaEpoO9TAqKEwfZ/oVxQUER+Hus1413KqdJV5AWsM9AL8DQFnzBPL2YFTZ uZgeQVklaWlZIvh2y1VuTWvwMtOWPpI= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1694712683; x=1726248683; h=message-id:date:subject:to:cc:references:from: in-reply-to:content-transfer-encoding:mime-version; bh=d3n/EeRcWzJoJ5+J1W6vDGIsyPxJg8LslPtM/DbzNVE=; b=jjZ7P76aWZ4zoP/Ztq9W2KXd/NqgL7R9gZnLyDSe386pp/mSyZrR+B3G LK6gA2jy+2ZqapmfhpizmIwslV8vcLgUuTKyKaPeo2kdVkqefJYLXEQ0E kCCHDAgivsOIyvkf7DX/zKWUyChy4UjpRLavP7Il0DExMmH5gbxTJPm5C abfDyV0wB9sSMGBz5d2EZGtfawtNQKFnO2DlNfHILYGQG9C9KJAxOESzK S8N+5oIQcQllrmcP+zq+UocctEk6BBPWpLIFd32bG9CiA+KtlSx7lpPo0 7trql4dxifTurAdqcQnrgtioxFveoIPF8emsNN6K0hfPY73JR4aRUi/9O g==; X-IronPort-AV: E=McAfee;i="6600,9927,10833"; a="369322672" X-IronPort-AV: E=Sophos;i="6.02,146,1688454000"; d="scan'208";a="369322672" 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:31:20 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10833"; a="773962735" X-IronPort-AV: E=Sophos;i="6.02,146,1688454000"; d="scan'208";a="773962735" 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:31:18 -0700 Received: from fmsmsx601.amr.corp.intel.com (10.18.126.81) 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:31:17 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) 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 via Frontend Transport; Thu, 14 Sep 2023 10:31:16 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.174) by edgegateway.intel.com (192.55.55.68) 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:31:16 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iIKSjykjsZuRxv35OqwBjkZCjdQFHa/7pi8s1ZTHG6EQLq3PBD1EuA1UnNtH9QgIXMI1c7Vhr5V/iWyXCv7Z7M0N0KpGyeX+p87hg3+jkVXR7p6Sr+20k3q99ackhdAa4ED6oyyJbl9enrDwKvzbnS8Y+znyZn2ij7+fbt1fbRiif4iv3GMM2gJlEjx55xFlgacw5q6RVvEhE+d6QnfLxkQUOIHJUSITfXYhF9xUbwTGTpszx3I4h7B+Hi+S4VaUJx8HGUCfTASQe+D8s80+/4Fg+KT8KeEY3mwFGhgLtpLfGgd2Ty3vztKZsKYw7brBi5SM7QBIZbgeVwRn7YYj4A== 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=z09VK72ff2i8d/xIiGR1WB96zGs1F5rSWCsN1sh0EAI=; b=LsbLPfV0V3VZFQFHQar8V4l37xpfl5RDz7hMiTFvK6xi8JzeSta27/LRcO20ncss/ttZQaywRPecqUCWZebLGVHnsesIcbfpElV6a2WsQgHDz9jNyLEbHfXAhEaqpAgPZqSKf4tzXR4kBfY4020YVkSf1lA8tbn/0M9oUWD1WngluYvTZyjxxasrQAnMplBCL7PN2U1KffXCduit4iP5XBi3aeajSUtFDXH5naTTO0kY7I2nOKrex1iF6P5ZhyXHuVlILJsVtGE4gaUgvO0oWQbHiwJzCp5VAwfUUrm4uVTaQlSVSSlFzf5jm/oehBQ8FXK2h0lLFcuBbotdYpu0CA== 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:31:14 +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:31:14 +0000 Message-ID: <48c50e4a-fc86-f5ff-f7f6-8c1200286e68@intel.com> Date: Thu, 14 Sep 2023 10:31:10 -0700 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Betterbird/102.13.0 Subject: Re: [PATCH -V3 3/4] acpi, hmat: calculate abstract distance with HMAT 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-4-ying.huang@intel.com> Content-Language: en-US From: Dave Jiang In-Reply-To: <20230912082101.342002-4-ying.huang@intel.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit X-ClientProxiedBy: BY3PR03CA0028.namprd03.prod.outlook.com (2603:10b6:a03:39a::33) 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: c7843d36-debe-478c-b7cc-08dbb5486555 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: SO83I1suEc7xdHnq5bXH+kEv/B26sF2nhA44p5+f1DDKqINrWWsJteObTRkWkoNdZOt4Vt53/JBeldRHD2Ot6kMoeXvHt+sPIfmctqu8xpxel+su2tOx3oMJUZ62qzkeq4Kw1vhUm2yZO8clTy2QU4ft5SDDnPJFt6SVnZgtQA1UGSIWJ+5pP+P6n06zfNqsoMeFuV5ttLaSPRdy9qLLJEq51UAG+O4ZeNcbmXFqXqpNNUPcZS/XqkIaohwes8H2GaiAfuy7aWYuum7DdbsP2+Db+VN+kSPMSDg3S+Il4LlfYhQMfQSd9+8CnIohgHqPkZ4aejz19bjhU/2jmJJUGIncPQdI/PX4owUa7z+WRHAmxls4pU2BuBXXn7C1wfrK4kCfy8r1lW17DDA168xgYCrUnRCrlzQa0OXvbgBugkXaUq4OTiTfOMT2hol9jQ/Yfrop2/HoSreGD35BPrSGusGn3Ouedqe+bHBIqhjj1RhOppLrjRVcf4GX9fjeM9nv4VAIYL8v1EExxPF4KJEPjR6Rl4EyhZ4K1LD0EGpW23oqhUAd4ei8VMDuNi5dYI2V+WmzIf7tZdm3m2gKLCKwxVz1KbXYA/oacOCMKbCKalc6WaUnQLdE2mOyqgAIIKYWMTr3zkGLFKLyoplaJJ5oIg== 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)(30864003)(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?aDRjRy9hUFJRS0Jja1J6dGNOOFVQZnNEa0dXUzN1N1k3cnJyTW02MTZsbXZ0?= =?utf-8?B?WGRLTHJoTStiNDVxU2M5c2hhVmZJeWZQYVZDSGxXV05BYzY0V0lGOS9xMmtz?= =?utf-8?B?bGh5Wm5kYmdha3ZLbzcvRW9oaXZFU1VWZnpoRWxqMVkyWHFZT2s5dXdyK215?= =?utf-8?B?cnkwamZMU3Z1OXZlUkNrYUI5SjhIdldaaWEyaFZSSjZUSWhrYm90dEhGUDQv?= =?utf-8?B?NWhaVTlucm53cGVwak5lWjdqRnZUK3p3YS80NER0N0oyUU8zZU5idGhobElo?= =?utf-8?B?UzVQS215V3IwVm1jQnRBeVZYVGE2K3RseWs3STYwTFVjcy9UbDBlNFBnL25B?= =?utf-8?B?V05oSHBQdG9qdlU3UUpEQUQzcUcxWWhGWkZiUk9sLzROQ0lzZ3BoaUxmTnJy?= =?utf-8?B?YkpmdkY4RmNFdkhQK1ZveGV5ZE9jYmh0TzRWdHFwckZVWUlPYThOMUp4MzUv?= =?utf-8?B?dHFCczhaTDYwWW90N2ZSaTRFYy9ySm9SNElMRm5HaHVuV1hUMEpzcnFpaktV?= =?utf-8?B?Znl5V3lDWWxHM0N0N2Q4WEVMUGhYREt1RzEzeXN1T0tvL3Yvb3RrTmNIWnlY?= =?utf-8?B?YVZtU2R5djZkdmdaYUxMc2ZNOVo0UDA4S2RIZnhsck5pbHN2WVd5Zm1mUytU?= =?utf-8?B?S2tYSDBhL1pYWmVzM3dCOTUrVVFSaFNVRUIrVnBxc3EzdnFTSnRPc0taaVht?= =?utf-8?B?Qjc5OVNhRW9MVXBzdzJBOUMwODRpaGVMaUtkWlRBeUw3N0JoK3BmUGpQYlp4?= =?utf-8?B?TGoyT0JkVnM4V1V6OEpYN2lmc1VHcUUzUmQzRkhKN2NHRmJpT2pXZWNTMFFw?= =?utf-8?B?aWZkUE4vUC9oNEdkd0ZESkl3TlhlSDZLN0RNdEFPSE5FUk5ZRlJPeitpQkQv?= =?utf-8?B?NWRrRUY3UFZ1RzE4bjdIbGpoTFd0SklEU0NQK2FmbTNRVG5Ea3dqd2xWV0pr?= =?utf-8?B?LytwQlIxUjNtTGx2S2pITEk2SzlTN1dxVXByYUtQRHNRSW1aTlhNZHNYWkdO?= =?utf-8?B?VllNZnN1b1RCWVBmazJsd0lUYmFzNlEwUzVpVlBzKzNUZDBpb2tRUU5kVldv?= =?utf-8?B?Tk82NThFUFJxUGkxN21pL20zeUY5Y002dTN4YVVWRU5DVVZxWUFsL2FreDFI?= =?utf-8?B?WFdKNU4rbG0rYkVUdWhreXc3YTI5Y2k4cVlFRlU4aHdYNld5SFFDeVhWRUdo?= =?utf-8?B?Nk9lL3JIa1BHaFRRTUVOMmorVzBXTWxWMDF3Q25zQXFrcWt5bEpGQ1prTlJU?= =?utf-8?B?T2p6YjFxdGREYjkwc0RoOWxjaWpWMCtPQ0o3Y0prV1ZHdCtrUFFBQkdpa0dO?= =?utf-8?B?anU1c2ZuV2U2WGZQbU9HdEhYWXlIbmJVODVKNGtvSHdmVmxrZ3VpQUNSazN6?= =?utf-8?B?b0tISmlnM0g3NzRKNDNUTXBvbHBsQVF3VDY4UENYdlBBT2xiYmxmL0lNOXc2?= =?utf-8?B?WmFRVmtTYnBtcGhPMjBVN1pGazNqRnJlbW03UW5VQ2hrL1pZWnJjQ2p1dnRo?= =?utf-8?B?VUV2aXV6S0pqcGg3SHhESDdEbGJLRlhWYTRPUTdYZkJFM3VsUzJqQk8vWjRz?= =?utf-8?B?MG51WmVrMUxXbDNtdjdiZEdlb1FyZ0NyMEo5WW1MQTNvOERvRUNLYTFheHRN?= =?utf-8?B?WU1saW1WdDdsMlc3RmtVaUNJb0FJWE9YbkkreElQaUtqVEsrNERPZDZ6N3NR?= =?utf-8?B?YlFaUkFaWE1rc21JTUpyWE80OTFSTnVHMEl3Vjl4dVhjUzRNOVdIMU5kY3Nj?= =?utf-8?B?QkhZQ1F6Y0w3YU5kYjMxSklUSjVadGJUWllXQXFDTTJES3kzQ1d4MGlBMnVX?= =?utf-8?B?cGoyejd3bFdBbzJPa3RGUGFPQnhjdXBLZjZEQ0NHS1ZqRm9aV1ZvdG9xU2Nl?= =?utf-8?B?aVhpc3VQVkYvU0xjSkFHZXhiODVNeXdvcndlYm8yem5wOE5tVGlqajZMREV3?= =?utf-8?B?SWgxUko0Rkd1ZjdLeWJzMDRkanRnYXVQa09LcGtzRDJXcjB3Z2xUa0l5K0x1?= =?utf-8?B?ejM1UHBxYmY4UTJydlVzZEdUV0xKMjRIN2QrMTRQTEl4NUoxV294QUozNzlY?= =?utf-8?B?Q3NQUG5ldmN2YlNsc21FV1R2MHdOZm9Ob0hkVVNHSXZTeEpZMmQrU3lTZ1R3?= =?utf-8?Q?gjHbl1ulpwjhbVEpwm/HIvykI?= X-MS-Exchange-CrossTenant-Network-Message-Id: c7843d36-debe-478c-b7cc-08dbb5486555 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:31:14.7002 (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: QyiRt5HdmQDwtbhb1R7Im8AwStAS7B2rBFlOuh8rhl2dTaBjxy3EVl0PiF50cVw1uqE/LhlT1V9INYQx/lGGFg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB7325 X-OriginatorOrg: intel.com X-Rspam-User: X-Stat-Signature: cmcygiq5wsj1r76pc9to71cob8d9zepr X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 1353B2001C X-HE-Tag: 1694712682-188772 X-HE-Meta: U2FsdGVkX1/dkS8jBXWLDQBjF7SzP7+vMY0dQ1wHm4VAahqiDoUIp4gvELfasKnPFVVQUibM+Qak1z4h3FdCud2aL0gDC3Gt38GjHClBU5XHWhl2pXxbxtsIiOD6yAu/mUGVaNZcs7PO5KEUZt41t9MJnwOmkacxy1hmBX2hc98MNEl4N57UlUmORkYLxhaD8ZvQLc0r51zu0+KPfYO6SxGkI3p5GYeIIZlDo5f33eCrgmujaxbdBVyR1GUu006ewuNb+a+ExpnqxtSYv1zlLRIjcfizoai6xx5Bu/4fFOQiuOMHo1z9FBqGxtOtxh3Ytn0b2Dpizi2rUMhxJ0bFavwFYaVxRbNj7EXohTHVdN/AQbOOeHQtk+26CzutbRkaBRCJnQ+214V9ENrcTkA3J47fieoA//IukqUhyqAHJvohE8u6b0Jl+p/fLTnqjbo8kBqgTN7Dyj6Ku30/w1adLZZbQi3EdBeuzrX2taAS/Ne+4RKuigDebbqSGTVj/vOwzlAHMDc34ZfevxWnalgaeZGB7hKX0SRYbvpVUKIRL+7MJk4Y88XNYr362TjtCs+eU2LZ8gi6YBPvRA1dzVygLNGquiMWQBDLCF7pRvuQ276Re8/oAxWuDlFAVOZ12xs4wm0WKBOiAGyU0zLuhnvmamlW+MpxHg6fR0fxDa9AA0zo565NAbERnDoYqr8w00ErD7EzLngG9Ntpx3rFANNiW439+oVYu7P5Zh/zcCrXUVhdLsYNdtgzFznR8LoXqBjJu3+jhuUcnz8jGCkQYYwwDVIAI8ujLwJmgqeAvQAJ2u4po5qOJtw1j45pD7+DOpz7K4ll7THDwPCrL4CR2hdCjuer8eadvII0fX8i/V2punMgdGfZ8uTMBuIUwfJG0Svk2/YHvPli7MamGmIxl6Sxxp3y6ODmujqTP0+T1Od7fnconcmPsV7lX3wHditeWmsyOfQ8x9W3JF77zt3vbaX N1AzuyJ1 Il99DCTXkg8ZbN2s4CAE6YTcQVikDQCIK4l8TX5Jv78G3g9mnEyZEh3E24SF5XslyrzxtbNHPMVo+9Dko8KCZB3LZ8cHPCXT+N2q5sYeLSOsTQ+IjxkgEK5+5klZl9kWa93ansbsa0FlwUOANHqYb//aJ3Bp23cQiVZSx58pE9xA+WAgH6nnjerAq/Joi38cKBL87uj0DB/eqzw57y6aqvxGCS5h+WWvjaek1hFQYqgK8CQJsPuKIk56pv5h5kPw1pOjFXMwxW3j0BgDBFRToYRvbH8weUcIFLsvoAA2NfJlsc0S2iJ5Qe0GNvwTDRATXyYiOf3pufGJMhfUJgAKnlYCDFOeoht/JTw5HbhVa1SY+AY+WgT9EzATvoyGTuFY2PpcaIFPK5htZG+HHGw7waHUql2j2xuNjS97rN08hlfCnl0pM6pePy97AtZEZAuOvWpwhgOZwNjmlmupzyXOPe3ipZEXwUrQ42qQ3SA4q8durvR3OrG+z2WmFQ/BQUzbSYcBigxV6MRuEz/m7rxnydQf0FsPMSaPdU1PMVu+Y5HBmhyO0mfSw4H1gGn2n/pdtUeLbhqWFwCg4A7miy3c93DtQj5rBLAmXb0zxbrzBPhtKoQBr6EQ3du8ylFWuUqsSpmRwEb3slnF/MBJGFfcNLY8ZNrWp8uXj52LNqaWawGXheglcy/Q+oRg5ZQ== 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:21, Huang Ying wrote: > A memory tiering abstract distance calculation algorithm based on ACPI > HMAT is implemented. The basic idea is as follows. > > The performance attributes of system default DRAM nodes are recorded > as the base line. Whose abstract distance is MEMTIER_ADISTANCE_DRAM. > Then, the ratio of the abstract distance of a memory node (target) to > MEMTIER_ADISTANCE_DRAM is scaled based on the ratio of the performance > attributes of the node to that of the default DRAM nodes. > > The functions to record the read/write latency/bandwidth of the > default DRAM nodes and calculate abstract distance according to > read/write latency/bandwidth ratio will be used by CXL CDAT (Coherent > Device Attribute Table) and other memory device drivers. So, they are > put in memory-tiers.c. > > 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 > --- > drivers/acpi/numa/hmat.c | 62 ++++++++++++++++++++- > include/linux/memory-tiers.h | 18 ++++++ > mm/memory-tiers.c | 103 ++++++++++++++++++++++++++++++++++- > 3 files changed, 181 insertions(+), 2 deletions(-) > > diff --git a/drivers/acpi/numa/hmat.c b/drivers/acpi/numa/hmat.c > index 2dee0098f1a9..64c0810d324b 100644 > --- a/drivers/acpi/numa/hmat.c > +++ b/drivers/acpi/numa/hmat.c > @@ -24,6 +24,7 @@ > #include > #include > #include > +#include > > static u8 hmat_revision; > static int hmat_disable __initdata; > @@ -759,6 +760,61 @@ static int hmat_callback(struct notifier_block *self, > return NOTIFY_OK; > } > > +static int hmat_set_default_dram_perf(void) > +{ > + int rc; > + int nid, pxm; > + struct memory_target *target; > + struct node_hmem_attrs *attrs; > + > + if (!default_dram_type) > + return -EIO; > + > + for_each_node_mask(nid, default_dram_type->nodes) { > + pxm = node_to_pxm(nid); > + target = find_mem_target(pxm); > + if (!target) > + continue; > + attrs = &target->hmem_attrs[1]; > + rc = mt_set_default_dram_perf(nid, attrs, "ACPI HMAT"); > + if (rc) > + return rc; > + } > + > + return 0; > +} > + > +static int hmat_calculate_adistance(struct notifier_block *self, > + unsigned long nid, void *data) > +{ > + static DECLARE_BITMAP(p_nodes, MAX_NUMNODES); > + struct memory_target *target; > + struct node_hmem_attrs *perf; > + int *adist = data; > + int pxm; > + > + pxm = node_to_pxm(nid); > + target = find_mem_target(pxm); > + if (!target) > + return NOTIFY_OK; > + > + mutex_lock(&target_lock); > + hmat_update_target_attrs(target, p_nodes, 1); > + mutex_unlock(&target_lock); > + > + perf = &target->hmem_attrs[1]; > + > + if (mt_perf_to_adistance(perf, adist)) > + return NOTIFY_OK; > + > + return NOTIFY_STOP; > +} > + > +static struct notifier_block hmat_adist_nb __meminitdata = { > + .notifier_call = hmat_calculate_adistance, > + .priority = 100, > +}; > + > static __init void hmat_free_structures(void) > { > struct memory_target *target, *tnext; > @@ -801,6 +857,7 @@ static __init int hmat_init(void) > struct acpi_table_header *tbl; > enum acpi_hmat_type i; > acpi_status status; > + int usage; > > if (srat_disabled() || hmat_disable) > return 0; > @@ -841,7 +898,10 @@ static __init int hmat_init(void) > hmat_register_targets(); > > /* Keep the table and structures if the notifier may use them */ > - if (!hotplug_memory_notifier(hmat_callback, HMAT_CALLBACK_PRI)) > + usage = !hotplug_memory_notifier(hmat_callback, HMAT_CALLBACK_PRI); > + if (!hmat_set_default_dram_perf()) > + usage += !register_mt_adistance_algorithm(&hmat_adist_nb); > + if (usage) > return 0; > out_put: > hmat_free_structures(); > diff --git a/include/linux/memory-tiers.h b/include/linux/memory-tiers.h > index c8382220cced..9d27ca3b143e 100644 > --- a/include/linux/memory-tiers.h > +++ b/include/linux/memory-tiers.h > @@ -31,8 +31,11 @@ struct memory_dev_type { > struct kref kref; > }; > > +struct node_hmem_attrs; > + > #ifdef CONFIG_NUMA > extern bool numa_demotion_enabled; > +extern struct memory_dev_type *default_dram_type; > 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); > @@ -40,6 +43,9 @@ 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); > +int mt_set_default_dram_perf(int nid, struct node_hmem_attrs *perf, > + const char *source); > +int mt_perf_to_adistance(struct node_hmem_attrs *perf, int *adist); > #ifdef CONFIG_MIGRATION > int next_demotion_node(int node); > void node_get_allowed_targets(pg_data_t *pgdat, nodemask_t *targets); > @@ -64,6 +70,7 @@ static inline bool node_is_toptier(int node) > #else > > #define numa_demotion_enabled false > +#define default_dram_type NULL > /* > * CONFIG_NUMA implementation returns non NULL error. > */ > @@ -116,5 +123,16 @@ static inline int mt_calc_adistance(int node, int *adist) > { > return NOTIFY_DONE; > } > + > +static inline int mt_set_default_dram_perf(int nid, struct node_hmem_attrs *perf, > + const char *source) > +{ > + return -EIO; > +} > + > +static inline int mt_perf_to_adistance(struct node_hmem_attrs *perf, int *adist) > +{ > + return -EIO; > +} > #endif /* CONFIG_NUMA */ > #endif /* _LINUX_MEMORY_TIERS_H */ > diff --git a/mm/memory-tiers.c b/mm/memory-tiers.c > index 76c0ad47a5ad..fa1a8b418f9a 100644 > --- a/mm/memory-tiers.c > +++ b/mm/memory-tiers.c > @@ -37,7 +37,7 @@ struct node_memory_type_map { > static DEFINE_MUTEX(memory_tier_lock); > static LIST_HEAD(memory_tiers); > static struct node_memory_type_map node_memory_types[MAX_NUMNODES]; > -static struct memory_dev_type *default_dram_type; > +struct memory_dev_type *default_dram_type; > > static struct bus_type memory_tier_subsys = { > .name = "memory_tiering", > @@ -108,6 +108,11 @@ static struct demotion_nodes *node_demotion __read_mostly; > > static BLOCKING_NOTIFIER_HEAD(mt_adistance_algorithms); > > +static bool default_dram_perf_error; > +static struct node_hmem_attrs default_dram_perf; > +static int default_dram_perf_ref_nid = NUMA_NO_NODE; > +static const char *default_dram_perf_ref_source; > + > static inline struct memory_tier *to_memory_tier(struct device *device) > { > return container_of(device, struct memory_tier, dev); > @@ -595,6 +600,102 @@ void clear_node_memory_type(int node, struct memory_dev_type *memtype) > } > EXPORT_SYMBOL_GPL(clear_node_memory_type); > > +static void dump_hmem_attrs(struct node_hmem_attrs *attrs, const char *prefix) > +{ > + pr_info( > +"%sread_latency: %u, write_latency: %u, read_bandwidth: %u, write_bandwidth: %u\n", > + prefix, attrs->read_latency, attrs->write_latency, > + attrs->read_bandwidth, attrs->write_bandwidth); > +} > + > +int mt_set_default_dram_perf(int nid, struct node_hmem_attrs *perf, > + const char *source) > +{ > + int rc = 0; > + > + mutex_lock(&memory_tier_lock); > + if (default_dram_perf_error) { > + rc = -EIO; > + goto out; > + } > + > + if (perf->read_latency + perf->write_latency == 0 || > + perf->read_bandwidth + perf->write_bandwidth == 0) { > + rc = -EINVAL; > + goto out; > + } > + > + if (default_dram_perf_ref_nid == NUMA_NO_NODE) { > + default_dram_perf = *perf; > + default_dram_perf_ref_nid = nid; > + default_dram_perf_ref_source = kstrdup(source, GFP_KERNEL); > + goto out; > + } > + > + /* > + * The performance of all default DRAM nodes is expected to be > + * same (that is, the variation is less than 10%). And it > + * will be used as base to calculate the abstract distance of > + * other memory nodes. > + */ > + if (abs(perf->read_latency - default_dram_perf.read_latency) * 10 > > + default_dram_perf.read_latency || > + abs(perf->write_latency - default_dram_perf.write_latency) * 10 > > + default_dram_perf.write_latency || > + abs(perf->read_bandwidth - default_dram_perf.read_bandwidth) * 10 > > + default_dram_perf.read_bandwidth || > + abs(perf->write_bandwidth - default_dram_perf.write_bandwidth) * 10 > > + default_dram_perf.write_bandwidth) { > + pr_info( > +"memory-tiers: the performance of DRAM node %d mismatches that of the reference\n" > +"DRAM node %d.\n", nid, default_dram_perf_ref_nid); > + pr_info(" performance of reference DRAM node %d:\n", > + default_dram_perf_ref_nid); > + dump_hmem_attrs(&default_dram_perf, " "); > + pr_info(" performance of DRAM node %d:\n", nid); > + dump_hmem_attrs(perf, " "); > + pr_info( > +" disable default DRAM node performance based abstract distance algorithm.\n"); > + default_dram_perf_error = true; > + rc = -EINVAL; > + } > + > +out: > + mutex_unlock(&memory_tier_lock); > + return rc; > +} > + > +int mt_perf_to_adistance(struct node_hmem_attrs *perf, int *adist) > +{ > + if (default_dram_perf_error) > + return -EIO; > + > + if (default_dram_perf_ref_nid == NUMA_NO_NODE) > + return -ENOENT; > + > + if (perf->read_latency + perf->write_latency == 0 || > + perf->read_bandwidth + perf->write_bandwidth == 0) > + return -EINVAL; > + > + mutex_lock(&memory_tier_lock); > + /* > + * The abstract distance of a memory node is in direct proportion to > + * its memory latency (read + write) and inversely proportional to its > + * memory bandwidth (read + write). The abstract distance, memory > + * latency, and memory bandwidth of the default DRAM nodes are used as > + * the base. > + */ > + *adist = MEMTIER_ADISTANCE_DRAM * > + (perf->read_latency + perf->write_latency) / > + (default_dram_perf.read_latency + default_dram_perf.write_latency) * > + (default_dram_perf.read_bandwidth + default_dram_perf.write_bandwidth) / > + (perf->read_bandwidth + perf->write_bandwidth); > + mutex_unlock(&memory_tier_lock); > + > + return 0; > +} > +EXPORT_SYMBOL_GPL(mt_perf_to_adistance); > + > /** > * register_mt_adistance_algorithm() - Register memory tiering abstract distance algorithm > * @nb: The notifier block which describe the algorithm