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 F3051E8181D for ; Tue, 26 Sep 2023 06:06:58 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 88A5E8D0062; Tue, 26 Sep 2023 02:06:58 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 838478D0005; Tue, 26 Sep 2023 02:06:58 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7008C8D0062; Tue, 26 Sep 2023 02:06:58 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 612968D0005 for ; Tue, 26 Sep 2023 02:06:58 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 2AB78140F77 for ; Tue, 26 Sep 2023 06:06:58 +0000 (UTC) X-FDA: 81277715316.25.DD77052 Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.100]) by imf12.hostedemail.com (Postfix) with ESMTP id 09FC940018 for ; Tue, 26 Sep 2023 06:06:55 +0000 (UTC) Authentication-Results: imf12.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=M1dhd9HK; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf12.hostedemail.com: domain of ying.huang@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1695708416; a=rsa-sha256; cv=none; b=a1Bxp9pOm1X7R7CfQUQvVfH1jAhnw1IpZS7FUJ3xthQPdXb1kdwpR6DHXw1UU/CbQ6rKYZ 4H6Cdpp8M9Onbre0JP7yPvr5t/GVDDQu32VIDvyp2xnJ7KGuEjsnpgIOiUgJVW/naYkh0U 960hDPnkOICEQJc8l17x+IhZRT6ZpDM= ARC-Authentication-Results: i=1; imf12.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=M1dhd9HK; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf12.hostedemail.com: domain of ying.huang@intel.com designates 134.134.136.100 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1695708416; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=giW1qeem/Xl69zU+7YhiYYsig6IRmYadWtMvNKZSVwY=; b=6lWrHj2rcQ0Q4QS2OPVmYjvCA2QI88hy4iYYDz7Aawo9i3Z9Fls3216+a1uBgDhY3CgIYR bmcDvFZ3Sp4WGUEPGEosXPev92sgE/6Um6xUKNhOWv2g3GEGEFqdwQunva7NIIC3eZf/Tn Mvut3/OzBw5So3Zsfux2RK47Osg8Bw8= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1695708416; x=1727244416; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=0F06IrWYpZawJ+w948h09vgHlfS9BulW8L+t529P3IM=; b=M1dhd9HKmIM2oTL5R5K3MEOjmYqDf4vIXma2e7vu9hw7dVDxsvogQEf/ /FyN1RrUVqFQfS/eFqgoCr6IEwCYBrKkmdhrgapT+alcwv5irBY9Z2+S2 odDB76PxIyJXUfnl2gYQlPZfXwbSLjo7h0NHSNIE31AnelNk6PGOyWRD+ f8XiRUcxxpiStiXgAcTr+yneENGXmEX2VhWp3H1sA0NrkiiGS/4iklcyS RMgIEPgZuEtxpkyaPKr78xuFZ5nEUejuYVrivtIB5cH7UyRK5K8yEviUg /NDHl+GJ91oZh9KxTMesGiQmlDi9sii3LwQB8/NaHsNOqgpx01tgH+IWX A==; X-IronPort-AV: E=McAfee;i="6600,9927,10843"; a="447990831" X-IronPort-AV: E=Sophos;i="6.03,177,1694761200"; d="scan'208";a="447990831" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2023 23:06:55 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10843"; a="892074781" X-IronPort-AV: E=Sophos;i="6.03,177,1694761200"; d="scan'208";a="892074781" Received: from aozhu-mobl.ccr.corp.intel.com (HELO yhuang6-mobl2.ccr.corp.intel.com) ([10.255.31.94]) by fmsmga001-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 25 Sep 2023 23:05:45 -0700 From: Huang Ying To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Huang Ying , Alistair Popple , Bharata B Rao , Dave Jiang , "Aneesh Kumar K . V" , Wei Xu , Dan Williams , Dave Hansen , Davidlohr Bueso , Johannes Weiner , Jonathan Cameron , Michal Hocko , Yang Shi , Rafael J Wysocki Subject: [PATCH -V4 2/4] acpi, hmat: refactor hmat_register_target_initiators() Date: Tue, 26 Sep 2023 14:06:26 +0800 Message-Id: <20230926060628.265989-3-ying.huang@intel.com> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230926060628.265989-1-ying.huang@intel.com> References: <20230926060628.265989-1-ying.huang@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 09FC940018 X-Stat-Signature: hzodzeysju1w8fob779fct74ntx9o6dm X-HE-Tag: 1695708415-640135 X-HE-Meta: U2FsdGVkX1/nCCsATYE4GG/k5Un+78ggkG+kmuCWL0PuIG1R2kSYphV1ePC5AmA/o3hd9r9DSyB2NwiJ9lUyRgvxkHf6vcXymt8Kz7eKKjPQgNKMRgE3hdvFeB7FtNyswE0AQ+DltQnoO523vBEYsznDBjPOk6j3GOUQbwGw7KDDhj/7or9eLpLhyryfzh+HZCo0HoYEv36m+YlG5aVJ5iDcph80h1ifXmRWFyBcWCQxd/h2aoClU+7Fz8r0qK4FLpfI7Qkow3TS15SXskUga4zmJupNm70T4U+egSjW26G3uDoVvdOnpMRpbK4kz9No3Cm3oG2asaP7sTEv+Gh1K86xGYo4b4xi+Q4ThDHiJT8ZPdKIlvrqenlcbN5XJ/MgCxyTgxMA4jqXx6G5dQIGQoMUq8hUhuuQWgvJpxSLciFbcCuagKFOIEPpTHJWN1M6oIuNg11RI+WR7/ldMGwH/widO+zaWHjpg9Bz6e392mkgkSdBeslL/HeD5foihZlZiu1jzMU5eKtNWnAt8e43BI5rWKGKkDhUy6yRQDylxT4l74UlRuHMGYqxHWIxSIBbhzEMq/2NY+qTtWs8Wq9xiYSEdhjWYnExWpVHor7bXM9QW7eIFb62YP2rq1yn56WH4nxs8Qsoh8ONiC0Od1mw8N7o122hYmUekpvUzK3tN3gczMPHdyxcqh55FXbIpiKDZ6/6hWchbVhpeHNFKclWAXnBMZQJu5m67QYqB1oe+sB+mD/G5EzDBqPx2NMhJ/jdglI1GUs7446wuG4uZ45dZW9H9Vw88oHHT0hnbw79EGpNBvihZNZQI4iIyaP1MIUQoyMutQCP7wRPj02uv/NA95cdi3wx0gM6J0WZ6zHmaUSIvGp8XWO+cu2fhDkI5cmQQMSVmiigUyk+u2N7mMe7Fg4wdNBS7j2TveSaiTPhwrSmnNMYVMgjnZtEYJ5Yb9I/X9NUnmvX+fhv6y0NA1G 3r7Zh5q1 7idBFiSMrM/MLLTo769adlTESd3jEpMscIb9ermQLFee3zutMsr64+PcGBxl+z4FM1mg2mkEQDOhoMVKK9yIx+IXCruEAPPRrt4GyaFPCZsr+6uQhF6R3pG5CXsvy+O2jDq6+PkGxPJmlg3vAVW4ckhe9MYmb87TG73MOzsaK7dHdSd8/sHg3dnCfX1IcqFLALIANx3Npb7VUh/TMJV+Bfr3FqKdRC8+RNox83u9qKDfUXtamTmzvRx4aGPjfxQSwXUbvDaMzQR8LFVdI5aTZvY127Q1GHpk9fgIBdhPleit0jxpSai90giztNypzMY8Mq1LfjjizOH3o6c/LVeSSmeJ9HNYTYjOu4MKqE785iWpw0ZzJvKuw8+RLNNvn9TsQnP8/iVpKrpWm6+7tl1ApQuRf8uQ4cFISG9JOJMc1xOYx2xUGo9gV8OUZKdrrICsNT+ReynF+vjkc1yeAa1/NKbpyIWGnAI2zkKTl++LKOMk/Z13hZEwnewhqNL21r0M220dKnoR6povT//YgiCJvksJTgw== 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: Previously, in hmat_register_target_initiators(), the performance attributes are calculated and the corresponding sysfs links and files are created too. Which is called during memory onlining. But now, to calculate the abstract distance of a memory target before memory onlining, we need to calculate the performance attributes for a memory target without creating sysfs links and files. To do that, hmat_register_target_initiators() is refactored to make it possible to calculate performance attributes separately. Signed-off-by: "Huang, Ying" Reviewed-by: Alistair Popple Tested-by: Alistair Popple Tested-by: Bharata B Rao Reviewed-by: Dave Jiang Cc: Aneesh Kumar K.V Cc: Wei Xu Cc: Dan Williams Cc: Dave Hansen Cc: Davidlohr Bueso Cc: Johannes Weiner Cc: Jonathan Cameron Cc: Michal Hocko Cc: Yang Shi Cc: Rafael J Wysocki --- drivers/acpi/numa/hmat.c | 81 +++++++++++++++------------------------- 1 file changed, 30 insertions(+), 51 deletions(-) diff --git a/drivers/acpi/numa/hmat.c b/drivers/acpi/numa/hmat.c index bba268ecd802..2dee0098f1a9 100644 --- a/drivers/acpi/numa/hmat.c +++ b/drivers/acpi/numa/hmat.c @@ -582,28 +582,25 @@ static int initiators_to_nodemask(unsigned long *p_nodes) return 0; } -static void hmat_register_target_initiators(struct memory_target *target) +static void hmat_update_target_attrs(struct memory_target *target, + unsigned long *p_nodes, int access) { - static DECLARE_BITMAP(p_nodes, MAX_NUMNODES); struct memory_initiator *initiator; - unsigned int mem_nid, cpu_nid; + unsigned int cpu_nid; struct memory_locality *loc = NULL; u32 best = 0; - bool access0done = false; int i; - mem_nid = pxm_to_node(target->memory_pxm); + bitmap_zero(p_nodes, MAX_NUMNODES); /* - * If the Address Range Structure provides a local processor pxm, link + * If the Address Range Structure provides a local processor pxm, set * only that one. Otherwise, find the best performance attributes and - * register all initiators that match. + * collect all initiators that match. */ if (target->processor_pxm != PXM_INVAL) { cpu_nid = pxm_to_node(target->processor_pxm); - register_memory_node_under_compute_node(mem_nid, cpu_nid, 0); - access0done = true; - if (node_state(cpu_nid, N_CPU)) { - register_memory_node_under_compute_node(mem_nid, cpu_nid, 1); + if (access == 0 || node_state(cpu_nid, N_CPU)) { + set_bit(target->processor_pxm, p_nodes); return; } } @@ -617,47 +614,10 @@ static void hmat_register_target_initiators(struct memory_target *target) * We'll also use the sorting to prime the candidate nodes with known * initiators. */ - bitmap_zero(p_nodes, MAX_NUMNODES); list_sort(NULL, &initiators, initiator_cmp); if (initiators_to_nodemask(p_nodes) < 0) return; - if (!access0done) { - for (i = WRITE_LATENCY; i <= READ_BANDWIDTH; i++) { - loc = localities_types[i]; - if (!loc) - continue; - - best = 0; - list_for_each_entry(initiator, &initiators, node) { - u32 value; - - if (!test_bit(initiator->processor_pxm, p_nodes)) - continue; - - value = hmat_initiator_perf(target, initiator, - loc->hmat_loc); - if (hmat_update_best(loc->hmat_loc->data_type, value, &best)) - bitmap_clear(p_nodes, 0, initiator->processor_pxm); - if (value != best) - clear_bit(initiator->processor_pxm, p_nodes); - } - if (best) - hmat_update_target_access(target, loc->hmat_loc->data_type, - best, 0); - } - - for_each_set_bit(i, p_nodes, MAX_NUMNODES) { - cpu_nid = pxm_to_node(i); - register_memory_node_under_compute_node(mem_nid, cpu_nid, 0); - } - } - - /* Access 1 ignores Generic Initiators */ - bitmap_zero(p_nodes, MAX_NUMNODES); - if (initiators_to_nodemask(p_nodes) < 0) - return; - for (i = WRITE_LATENCY; i <= READ_BANDWIDTH; i++) { loc = localities_types[i]; if (!loc) @@ -667,7 +627,7 @@ static void hmat_register_target_initiators(struct memory_target *target) list_for_each_entry(initiator, &initiators, node) { u32 value; - if (!initiator->has_cpu) { + if (access == 1 && !initiator->has_cpu) { clear_bit(initiator->processor_pxm, p_nodes); continue; } @@ -681,14 +641,33 @@ static void hmat_register_target_initiators(struct memory_target *target) clear_bit(initiator->processor_pxm, p_nodes); } if (best) - hmat_update_target_access(target, loc->hmat_loc->data_type, best, 1); + hmat_update_target_access(target, loc->hmat_loc->data_type, best, access); } +} + +static void __hmat_register_target_initiators(struct memory_target *target, + unsigned long *p_nodes, + int access) +{ + unsigned int mem_nid, cpu_nid; + int i; + + mem_nid = pxm_to_node(target->memory_pxm); + hmat_update_target_attrs(target, p_nodes, access); for_each_set_bit(i, p_nodes, MAX_NUMNODES) { cpu_nid = pxm_to_node(i); - register_memory_node_under_compute_node(mem_nid, cpu_nid, 1); + register_memory_node_under_compute_node(mem_nid, cpu_nid, access); } } +static void hmat_register_target_initiators(struct memory_target *target) +{ + static DECLARE_BITMAP(p_nodes, MAX_NUMNODES); + + __hmat_register_target_initiators(target, p_nodes, 0); + __hmat_register_target_initiators(target, p_nodes, 1); +} + static void hmat_register_target_cache(struct memory_target *target) { unsigned mem_nid = pxm_to_node(target->memory_pxm); -- 2.39.2