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 57DE9C3ABAA for ; Mon, 5 May 2025 13:58:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA5606B0085; Mon, 5 May 2025 09:58:54 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E538A6B0089; Mon, 5 May 2025 09:58:54 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D1BEB6B008A; Mon, 5 May 2025 09:58:54 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id AE5106B0085 for ; Mon, 5 May 2025 09:58:54 -0400 (EDT) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id F2D7D1CC6D6 for ; Mon, 5 May 2025 13:58:54 +0000 (UTC) X-FDA: 83409010188.24.ACF1F1C Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by imf06.hostedemail.com (Postfix) with ESMTP id B684518000E for ; Mon, 5 May 2025 13:58:52 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="T8B/0FW5"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=YYnhcdNF; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=wyZUsl9+; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=C97G38nm; spf=pass (imf06.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746453533; 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=7TH+0b0M8H2Ybij59z8Bx1KMll9EwBpBNjNIZM+YojI=; b=r/ksqseJl4NIxzHDJ4uydcsNzyKYaAzFYj6928lPhfjYKYY+8RwqYuNo1aL7kaSc+eKB4Y JTcBgJA2M5PGS7Ynf8pA+q7Bd2Im9aUKtDJ3mkbV7Ai16PH6ybymxng/Y5ouVf1Qoy3fFG 8KjiNN4NQoNMv7L9JIRmfhZSkKQ7028= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="T8B/0FW5"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=YYnhcdNF; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=wyZUsl9+; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=C97G38nm; spf=pass (imf06.hostedemail.com: domain of vbabka@suse.cz designates 195.135.223.131 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746453533; a=rsa-sha256; cv=none; b=LSUI8pwGm3WbB3L5P6eHynUqMPp78ATaRoevOAX81T3+q19opVMA3AHqpVtTe2XZoCrTft TTiVfV/ckUdClUXquePzUrCRKvIH51kFOUtFwdMZVW6qXaEI0pKisCDeAOCkKj9V1k+4oN Ktf61K0dzIagT0p2MbkwlpCPS1memms= Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 7F4081F7A5; Mon, 5 May 2025 13:58:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1746453531; h=from:from:reply-to: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=7TH+0b0M8H2Ybij59z8Bx1KMll9EwBpBNjNIZM+YojI=; b=T8B/0FW5KCOuaumgO6JCMaZDePcnkPhrzKvZIw9xc6IJbL4ZROQCG80ShN5jyUg2vWRCRY VvQTSZngXLKblxy5ZJ5ILaZFwKz/8KpebAHiFr2bHMCJQ2/Y3+6jsX0U2UFKWcWepGgIP8 afSETDisB/Y9hkL6pIR5j8eLSTvWO/4= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1746453531; h=from:from:reply-to: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=7TH+0b0M8H2Ybij59z8Bx1KMll9EwBpBNjNIZM+YojI=; b=YYnhcdNF0JBCsH5nJHSMP6nlumwMzhz7yb79Q5TqgFNmQaZYSEXDdLf4fWNl1rqjYSqMpV N1WeEc1eQNXbPRBw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1746453530; h=from:from:reply-to: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=7TH+0b0M8H2Ybij59z8Bx1KMll9EwBpBNjNIZM+YojI=; b=wyZUsl9+wRZyr+SHLNWLo0suoBvJAoDi0isOJF7fzEcNW0LMblIr9KMyzkEX1q9NfkCYjp /c/tDVNDpPA1uNMNwBqNT8oBxa7n8LPsVIxegjolt4YYvVd6nevoELMbZ6Prixf4k6sea2 AgrH7onxSp7TQOLrFB9ZIcvblOJqx6c= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1746453530; h=from:from:reply-to: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=7TH+0b0M8H2Ybij59z8Bx1KMll9EwBpBNjNIZM+YojI=; b=C97G38nm48irOD39KxcI2JOhKUFDo9yqXmKUEImLVOHULo9dSoBM1i7M/n2EQpI/GfGdAL pa4HpHCTvBtn36DA== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 6316713883; Mon, 5 May 2025 13:58:50 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id IQ/iFxrEGGh8PQAAD6G6ig (envelope-from ); Mon, 05 May 2025 13:58:50 +0000 Message-ID: Date: Mon, 5 May 2025 15:58:50 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v3 2/3] mm,memory_hotplug: Implement numa node notifier Content-Language: en-US To: Oscar Salvador , Andrew Morton Cc: David Hildenbrand , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Hyeonggon Yoo <42.hyeyoo@gmail.com>, Jonathan Cameron , Rakie Kim , Harry Yoo References: <20250502083624.49849-1-osalvador@suse.de> <20250502083624.49849-3-osalvador@suse.de> From: Vlastimil Babka In-Reply-To: <20250502083624.49849-3-osalvador@suse.de> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: B684518000E X-Stat-Signature: r6m777mzgjwnhmkm5c79xbap78pr8r5g X-HE-Tag: 1746453532-55348 X-HE-Meta: U2FsdGVkX19M8aLK9dO+aIe9rikXR01LdkfRTIE9saM831kHQWLfaOFuP4Jl1TZnPj2IjydCVQuBKwjrd2ZXjRvS926f7WYO6OmKTN93fI8UZgiuAXPs7jgRaLIpOC1UXn1iwrrQdmiWlv32ozfUKIReCu7KgXz3y676zVxbgBbYVqNEnr2GLm6Rf8ax+pPKgjbh5awpVoFKzBREO2pA3TqdryxwsfY2Hc7JbrnBapK9z3uh70XfHUfaQhOMtLcm/m+uuC+mk294ti34808wqv/oOhnq7bNJnbGT2sxFEKdsTTWI2Z38yss1XbVfQc7n+3nDXZv9xBete7z+AWpaK3jcas0c+AoghM2Tr3xPD7ua+/w2XXsS/1/y1UO0TtpAO8kDV9sUUIrjmYScMK8geJE/GHGXJ6wLg0mkW8K+Ol+YRvIgChxfccu7AC+RDWjcvXZurHU3JoCrthyDULH4Q4HSeOBWju6dQT2bMEXmyUa5/VvXjp9N5+YoKjY3djpcAo5pYj3dzLh7+Jvx7/4orSkQqIC0EEj7jz3cJkXuPHlujecKipbETb2Bc4ecq4nqEuBjJQiZ74DWK+BYGr9EFJnGfYGKMbeIpF1m5ozrMlf1FJ07jWVQov2HaZZgqlzt9qAz/XHG3cZO/B1tyc+Xz8yEhIB6IkU908Jznam5Fu8QLWvaBsSiS3EPuCEt5scfjmnyeM8LZSC/E8/tCMwvM/1+pGwkuMzkKxBfX1gCbkOZ78dbUJTy4ekZecGZYu4q9gmMsSe0sKdQRLOQFka0/3UWjqbmNfUROChOFdk2pBl0VHrN6Z0NHcXdCWzLRorWmQeKPyq3iOGMf6jZcCA66YIJm78zUJSX+he4qPYFcbYMUIDwI4XHRicG/xK2ASEBncuvS8tIMUOiAUlYD1T6fjUiOkOKZf7W6Hkt5Xs1NmZkQjIHkFtk3lIAIXtg1hLADEYG0cytKiuU6ucrZbU pNrprOC1 FJRQNtVEf2LWvWw8ckhEtV5YXZLWkIDuAImkuYKqb4QBuENzt/LN0SipiixHiTHP4ZaZGIBm/6icpgKo7Ven20+wRTg== 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 5/2/25 10:36, Oscar Salvador wrote: > There are at least six 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 and vice versa. > > 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 > Reviewed-by: Harry Yoo > Reviewed-by: Jonathan Cameron Reviewed-by: Vlastimil Babka Some cleanup suggestions below: > diff --git a/mm/memory_hotplug.c b/mm/memory_hotplug.c > index b1caedbade5b..777f98326908 100644 > --- a/mm/memory_hotplug.c > +++ b/mm/memory_hotplug.c > @@ -701,24 +701,18 @@ static void online_pages_range(unsigned long start_pfn, unsigned long nr_pages) > > /* check which state of node_states will be changed when online memory */ > static void node_states_check_changes_online(unsigned long nr_pages, > - struct zone *zone, struct memory_notify *arg) > + struct zone *zone, struct node_notify *arg) I've noticed nr_pages parameter is unused. Also the function became rather trivial, you could just move the code into its only caller now? > { > int nid = zone_to_nid(zone); > > arg->status_change_nid = NUMA_NO_NODE; > - arg->status_change_nid_normal = NUMA_NO_NODE; > > if (!node_state(nid, N_MEMORY)) > arg->status_change_nid = nid; > - if (zone_idx(zone) <= ZONE_NORMAL && !node_state(nid, N_NORMAL_MEMORY)) > - arg->status_change_nid_normal = nid; > } > > -static void node_states_set_node(int node, struct memory_notify *arg) > +static void node_states_set_node(int node, struct node_notify *arg) This one too. > { > - if (arg->status_change_nid_normal >= 0) > - node_set_state(node, N_NORMAL_MEMORY); > - > if (arg->status_change_nid >= 0) > node_set_state(node, N_MEMORY); > } > @@ -1177,7 +1171,9 @@ int online_pages(unsigned long pfn, unsigned long nr_pages, > int need_zonelists_rebuild = 0; > const int nid = zone_to_nid(zone); > int ret; > - struct memory_notify arg; > + struct memory_notify mem_arg; > + struct node_notify node_arg; > + bool cancel_mem_notifier_on_err = false, cancel_node_notifier_on_err = false; > > /* > * {on,off}lining is constrained to full memory sections (or more > @@ -1194,11 +1190,22 @@ int online_pages(unsigned long pfn, unsigned long nr_pages, > /* associate pfn range with the zone */ > move_pfn_range_to_zone(zone, pfn, nr_pages, NULL, MIGRATE_ISOLATE); > > - arg.start_pfn = pfn; > - arg.nr_pages = nr_pages; > - node_states_check_changes_online(nr_pages, zone, &arg); > + mem_arg.start_pfn = pfn; > + mem_arg.nr_pages = nr_pages; You could move the two lines below where the rest of mem_arg is filled. > + node_states_check_changes_online(nr_pages, zone, &node_arg); > + > + if (node_arg.status_change_nid >= 0) { > + /* Node is becoming memory aware. Notify consumers */ > + cancel_node_notifier_on_err = true; > + ret = node_notify(NODE_BECOMING_MEM_AWARE, &node_arg); > + ret = notifier_to_errno(ret); > + if (ret) > + goto failed_addition; > + } > > - ret = memory_notify(MEM_GOING_ONLINE, &arg); > + cancel_mem_notifier_on_err = true; > + mem_arg.status_change_nid = node_arg.status_change_nid; > + ret = memory_notify(MEM_GOING_ONLINE, &mem_arg); > ret = notifier_to_errno(ret); > if (ret) > goto failed_addition;