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 44F54C3600C for ; Thu, 3 Apr 2025 12:44:20 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8AAC8280004; Thu, 3 Apr 2025 08:44:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 85A98280001; Thu, 3 Apr 2025 08:44:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 748B5280004; Thu, 3 Apr 2025 08:44:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 54B38280001 for ; Thu, 3 Apr 2025 08:44:17 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay05.hostedemail.com (Postfix) with ESMTP id C81B35798B for ; Thu, 3 Apr 2025 12:44:18 +0000 (UTC) X-FDA: 83292700596.20.16BBB3B Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by imf05.hostedemail.com (Postfix) with ESMTP id 23A31100014 for ; Thu, 3 Apr 2025 12:44:15 +0000 (UTC) Authentication-Results: imf05.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf05.hostedemail.com: domain of jonathan.cameron@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=jonathan.cameron@huawei.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1743684257; a=rsa-sha256; cv=none; b=18poHx/RFkU4n503lxv216EDs1abxtTke1h0jsu+llqENP3ePaO7y+mvqFo/hA9LpNgy0B SFz8gV56HeE6l8Ha29560iHwAZSmYcO9gC4ChSpMra0U2x+uHeppQXL9qnLqpgITU/gjMN IgDRtMiOr3UpWa6ErjdA0oqF3lgvc+8= ARC-Authentication-Results: i=1; imf05.hostedemail.com; dkim=none; dmarc=pass (policy=quarantine) header.from=huawei.com; spf=pass (imf05.hostedemail.com: domain of jonathan.cameron@huawei.com designates 185.176.79.56 as permitted sender) smtp.mailfrom=jonathan.cameron@huawei.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1743684257; 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; bh=8A18ksdaqB7aSCMd9NfLsm24U9NMo3ocNERVdpznNL8=; b=a6GDFwchhj0+fiIDe7Ufrd83LVdnsAhkR+PmeDMAVffVHBr2B+Lt6e8xnar2Lw9any3AW2 TatS61ZfQFxdo8YcTuSajL1MK2R5Ji4mZFkJ6s3b7/sHRaRXiBDR0V/cJ+7/X3L90FUC18 MWWKzA9spyauZ+cOlh8bvzkLYcEPEkw= Received: from mail.maildlp.com (unknown [172.18.186.231]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4ZT1YD30wTz6L75h; Thu, 3 Apr 2025 20:40:32 +0800 (CST) Received: from frapeml500008.china.huawei.com (unknown [7.182.85.71]) by mail.maildlp.com (Postfix) with ESMTPS id B4266140557; Thu, 3 Apr 2025 20:44:12 +0800 (CST) Received: from localhost (10.203.177.66) by frapeml500008.china.huawei.com (7.182.85.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Thu, 3 Apr 2025 14:44:12 +0200 Date: Thu, 3 Apr 2025 13:44:10 +0100 From: Jonathan Cameron To: Oscar Salvador CC: Andrew Morton , David Hildenbrand , , , Vlastimil Babka , Hyeonggon Yoo <42.hyeyoo@gmail.com>, , Dan Williams , Subject: Re: [PATCH 1/2] mm,memory_hotplug: Implement numa node notifier Message-ID: <20250403134410.000006c7@huawei.com> In-Reply-To: <20250401092716.537512-2-osalvador@suse.de> References: <20250401092716.537512-1-osalvador@suse.de> <20250401092716.537512-2-osalvador@suse.de> X-Mailer: Claws Mail 4.3.0 (GTK 3.24.42; x86_64-w64-mingw32) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Originating-IP: [10.203.177.66] X-ClientProxiedBy: lhrpeml500009.china.huawei.com (7.191.174.84) To frapeml500008.china.huawei.com (7.182.85.71) X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 23A31100014 X-Stat-Signature: 7dexhr4wwujewj8gin8ke7rbk4uwhohd X-Rspam-User: X-HE-Tag: 1743684255-751109 X-HE-Meta: U2FsdGVkX19ZcfBk7zOrlOLUhPl9YLfsKk3c6DYcG1ZKsnvo0ZHzxd5KO/HpQNTt5Y9/8hRLfBdSURKCujBAZK6ks48PYADvMxyNr4jLiftQ7sYWejEoyMRd1+q/Ke4lgRFHIru9vITTlMaiPjOE9zXVuupGK1zLIKpOEZy19c8PqfgpNbLqRriVSg4JOlaP4iBJKhzeskIMtGC5BNU42XzSkr3YINocq8AYuU9crzZETy1Dm/TYIaK0F77g+yhZS+oVAdGd9C7XH7tlP/ew+TK4pf+dUAwd9D0d/9Bx0AVSqJ1rK/FoHxgw/UsZqLnMis3JkCbtaIne8LOYm8kiGOwT+BRhid4lg1scokdOoIT6rENu6hQ2j7TGAw+AG7VRWqpNa26dtUmyCQTdutiyscMzfACDhXyQ96dE1xCiU3CNFbQ3rXzXioH6yx4BHScQ2ux6wtEDcVH+xl95L0s3k99MiZmfNg/VQGNB0h/UeRZb6inOO2zqBRYWTS48dNmCKAFjDqBrX6/0TYWq3lBof+V8wY314kxBDu893Y3IOEqCRY3pZ+4b2pE+fDqHGFqbpSg474WZx//nDFif83dYRrvjk77T5GJp5VxEhn0wCPV6Q0641WDsaBZLMlp+dPhEScT5JAaE/ImPQbe8CwRjq36WTNWuW5zWguR0rzb6ERT9og21HCJfWFe7cQIVnR8W1N+MogLl0t+MechnAHJnkKsVsqFcfqJ+pvdyO8yyLhrYIW9W95qTYuoHAdsRLZjpwK++to0M3ZTYVmAvfec5W3NSomut8q/yeiQZEyR1ZKJQcImh3CaWPWK+KV+KpOTvi7DvTxdJiFToKWE+R8qURDiXVgcMz/bnost1lna41xqGfhzYk8A0QAVPDwoQ5oTat0cM+gWgNEcMrPLIXQrCzwVPOMp4nsrGLJU4JpsLzZfHSbTS+gt67m5pf0XqQyBhjEcp/qYUx1fQTr3bvLM f7hIniCi BYk+BzwJPHpAYTjXWWlxYJt4UfEodvomOdO2+ulnYFqKoKPe/qFCWWSGYCHk7lOiPUfaLbpVsdRToM/B44/nxPWmFsBwx124NMwfQkCjn/OqTiBYafdAq9W6tZ1NaLAOpSub5fFvjONErJzA1Eu749Ba/NCTe4TnBhRnUIZazb6pulXoHiAO1PuV10jTpT4bWlv0iLoMeuMQpv3h6OvYIr9Wah1osH4o0TEcZT2BwRkL/Riw/YGGM0F0wfmLBWwo2ha1+i9jmreA1Qh4euWyyTcUCva5ESsU0cM+X1W+ih2E62pOBzvkQir7uMeigWWg7jR/n 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: List-Subscribe: List-Unsubscribe: On Tue, 1 Apr 2025 11:27:15 +0200 Oscar Salvador wrote: > There are at least four consumers of hotplug_memory_notifier that what they > really are interested in is whether any numa node changed its state, e.g: going > from being memory aware to becoming memoryless. Cover letter says 5. Whilst that's at least 4, maybe update this if you do a v2 to say at least 5 :) > > Implement a specific notifier for numa nodes when their state gets changed, > and have those consumers that only care about numa node state changes use it. > > Signed-off-by: Oscar Salvador A couple of trivial things below. To me this looks fine otherwise. Reviewed-by: Jonathan Cameron > +#define hotplug_node_notifier(fn, pri) ({ \ > + static __meminitdata struct notifier_block fn##_node_nb =\ > + { .notifier_call = fn, .priority = pri };\ > + register_node_notifier(&fn##_node_nb); \ > +}) Trivial but spacing before \ seems rather random. Maybe I'm missing how it is consistent. > + > #ifdef CONFIG_NUMA > void memory_block_add_nid(struct memory_block *mem, int nid, > enum meminit_context context); > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index 75401866fb76..4bb9ff282ec9 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -2106,27 +2143,32 @@ int offline_pages(unsigned long start_pfn, unsigned long nr_pages, > * Make sure to mark the node as memory-less before rebuilding the zone > * list. Otherwise this node would still appear in the fallback lists. > */ > - node_states_clear_node(node, &arg); > + node_states_clear_node(node, &node_arg); > if (!populated_zone(zone)) { > zone_pcp_reset(zone); > build_all_zonelists(NULL); > } > > - if (arg.status_change_nid >= 0) { > + if (node_arg.status_change_nid >= 0) { > kcompactd_stop(node); > kswapd_stop(node); > + /*Node went memoryless. Notifiy interested consumers */ Trivial: missing space after * > + node_notify(NODE_BECAME_MEMORYLESS, &node_arg); > } > > writeback_set_ratelimit(); > > - memory_notify(MEM_OFFLINE, &arg); > + memory_notify(MEM_OFFLINE, &mem_arg); > remove_pfn_range_from_zone(zone, start_pfn, nr_pages); > return 0; > > failed_removal_isolated: > /* pushback to free area */ > undo_isolate_page_range(start_pfn, end_pfn, MIGRATE_MOVABLE); > - memory_notify(MEM_CANCEL_OFFLINE, &arg); > + if (cancel_node_notifier_on_err) > + node_notify(NODE_CANCEL_MEMORYLESS, &node_arg); > + if (cancel_mem_notifier_on_err) > + memory_notify(MEM_CANCEL_OFFLINE, &mem_arg); > failed_removal_pcplists_disabled: > lru_cache_enable(); > zone_pcp_enable(zone);