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 6DE38C5AD49 for ; Fri, 6 Jun 2025 07:50:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D8DDC6B007B; Fri, 6 Jun 2025 03:50:27 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D0F6B6B0088; Fri, 6 Jun 2025 03:50:27 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BFD546B0089; Fri, 6 Jun 2025 03:50:27 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id A4A996B007B for ; Fri, 6 Jun 2025 03:50:27 -0400 (EDT) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id 44BB71A03E1 for ; Fri, 6 Jun 2025 07:50:27 +0000 (UTC) X-FDA: 83524203294.10.3D696F6 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131]) by imf19.hostedemail.com (Postfix) with ESMTP id 095661A000E for ; Fri, 6 Jun 2025 07:50:24 +0000 (UTC) Authentication-Results: imf19.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=x0YT28om; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="6zHbOdk/"; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=x0YT28om; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="6zHbOdk/"; spf=pass (imf19.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.131 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1749196225; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=nPQ5OU5UE55RJ5fsjrvbcqhqZJm6LEqSqE1iQQ88/l0=; b=u6wwXcZEzasYJbswcMjTDixaL7uEglqtWxOHHNITxMOeW/B7WZSXB64ddYOk5zKqkesJ9z RpcHguYzm/1mgYj4xTJeomWtohX+NlNwz6R+XdAdLs2JGX1H3hSQjS1hfzF1EhLY0pDBmV zVkN6jOO5wuN/4wDSpPKTnFkZBewmWs= ARC-Authentication-Results: i=1; imf19.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=x0YT28om; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="6zHbOdk/"; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=x0YT28om; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b="6zHbOdk/"; spf=pass (imf19.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.131 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1749196225; a=rsa-sha256; cv=none; b=lYsl56RLPXVnEBQ31tTmTbdkxnjWxFSiUj+qfkX+A9bPK+TYVCmwYYhqRNQ2Vd31V9jBv1 3+TtcKyFNDGHopB8Bd/WHfEo4XpQR9kqY0Em625jKe9j0uzbH/+eDxainpLbrgTB+2tFOr 6L2p2V3PPMtNjrS1tvIFUDknBu1l+gw= Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104: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 465111F46E; Fri, 6 Jun 2025 07:50:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1749196223; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=nPQ5OU5UE55RJ5fsjrvbcqhqZJm6LEqSqE1iQQ88/l0=; b=x0YT28omMrjMtmnEUrNNujG81DIAQ2v/504ZJN5Hfs996/r63QyPf4nJKdU7d1S8Qbu7NO KopxPr/vhk2wRZAcZMXLDhEPTDjWQnDCDEbGP6Deo94h7YwSdQ+FDRLE+vZ2w5yBIx4LcX u6zRrlkmCUgGMBCfC1aiE8n3eArinyg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1749196223; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=nPQ5OU5UE55RJ5fsjrvbcqhqZJm6LEqSqE1iQQ88/l0=; b=6zHbOdk//8hxS5cmfvtV4OFTaw3nMs5dQUA3Em6KSpXPWJdsXVXiWrwnFcnk5ze0USVVx6 ryvQ2T9GEZD8JzCA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1749196223; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=nPQ5OU5UE55RJ5fsjrvbcqhqZJm6LEqSqE1iQQ88/l0=; b=x0YT28omMrjMtmnEUrNNujG81DIAQ2v/504ZJN5Hfs996/r63QyPf4nJKdU7d1S8Qbu7NO KopxPr/vhk2wRZAcZMXLDhEPTDjWQnDCDEbGP6Deo94h7YwSdQ+FDRLE+vZ2w5yBIx4LcX u6zRrlkmCUgGMBCfC1aiE8n3eArinyg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1749196223; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=nPQ5OU5UE55RJ5fsjrvbcqhqZJm6LEqSqE1iQQ88/l0=; b=6zHbOdk//8hxS5cmfvtV4OFTaw3nMs5dQUA3Em6KSpXPWJdsXVXiWrwnFcnk5ze0USVVx6 ryvQ2T9GEZD8JzCA== 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 AE0D31336F; Fri, 6 Jun 2025 07:50:22 +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 gwLDJ76dQmg1eAAAD6G6ig (envelope-from ); Fri, 06 Jun 2025 07:50:22 +0000 Date: Fri, 6 Jun 2025 09:50:21 +0200 From: Oscar Salvador To: Andrew Morton Cc: David Hildenbrand , Vlastimil Babka , Jonathan Cameron , Harry Yoo , Rakie Kim , Hyeonggon Yoo <42.hyeyoo@gmail.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v5 03/10] mm,memory_hotplug: Implement numa node notifier Message-ID: References: <20250605142305.244465-1-osalvador@suse.de> <20250605142305.244465-4-osalvador@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250605142305.244465-4-osalvador@suse.de> X-Rspamd-Action: no action X-Rspam-User: X-Rspamd-Queue-Id: 095661A000E X-Rspamd-Server: rspam09 X-Stat-Signature: bchtmz4abzmrgb68ectncx8s8sieycde X-HE-Tag: 1749196224-494540 X-HE-Meta: U2FsdGVkX1/UtZ/Kg7qH6ZNehiispNnsUHtXH7M/E2CjgOv5eBVAHy5BSY7fMKDFJHDBe8UZoAieSrLX1TijO4vdah8+RNWzn/3WKwXVUzLFhBdOSrNmsY51lWhf2OWPrqVYvLkEUqmJcRAG1nH2/gq4cJYkeiG/Yo+IQj8wn8Pjlu3SI2s9a6mARgNPBDwWXlSxsIFTtGohka532tgVCP8mBxslJHVaG2GIpmiAtOrWqHGGK9DsmAXv+dNVFgFmz350uP0CRvvP32VAKBBcNa6BJR7oPjztr6/U8iIdDCeM8isbiZrCehhcr+WoXyKmaZBfx4ksweCtq279WA2L9tDXuF8q2xKFb+W2Hc+N77u4aEyBAM4a7cXnN56yYs36esoSUDIXIcTstLRFm+pcVgmcarlBLDl0m0HhbwzQ2Ymac86fTcvowY4pfVEYaTPXhm5lC+Xp5/fCWILuGzlg4smNvB5ErlDfS+xvf0AhlwVE84BRVc7xskpgWEy2Uru+N5KOv3tDGEzh3KcZ4nt6Rnk+7zNkCqd5xSOoZy0Dz5wOq6jsE1+1c0OlnC+2K6lC73RYnkfYI3kTfOqQzj4Tm1Ja5/ySXG3eaBLkBxvSfR9MkPHv2j9PndtMcfG/NEdhliLWsTuJlGzjt2bRzOGLSnhFmqPiVYYWbrAcEBTnMwJE7V52yFrAsIwD4TL8aVpHkifsjJDMg6woJEz56MUyzSh4ZAm6PLnhuP5aayp2HQd3FKcqLrQHSQAc3agUNq9au99DVCue4YE/4ixDgjzvFX4H8t4BL+Xl10BOigG6G4Dc1A1xNffwUEpW/DrSWwhPAgxEhbCV/Bd8uJYO5vIGCk5YpC9GW/cLkRBW1dCfZJApDNpOdA3K4qqG9yDb6UhhqbxXWW4HJgg62xRZNNhj2vwdXSGsdDB7BPpMWcwkU9mb6+sC3ZnQMOOYzRBBsBRwvw3EGOK2GRGcn32oULp sDJf77Dh /03gfAvvqh/LWpwNXRvbPKEl3yX3JvYx7kipyb+wYlgoLGT96WOOO8QXrxFtjS7Ubt5T56yEKlUeEUZzpszw+O8wqKMvYszTKe7pnOLDdq+HghyP1YOmK9D4ylcH7JTRisLlth/rzENP36kYyxL/VKTGhR7WHo0899qulifqEr3G0pRKxbSAhtOimmlCBMaLjSISqyKokHj3Qdprl0+XdLNiz5CMFIRpqGSm/qWOizcKau1wvoCUg+JmX0Q0drPzO2GqN+fiUhL7l8Mj7x0Fo4w81jmBnt03YVj2G25xoPVWsdtdvPg/uU1IauMM5xnE46G8j7fBHXnVRqAkIEAyKGb8hJQm4AoBZXgtJJi4PSBgapJR+PX2Kj2GSYYUOJbFy883TuyO0dHfJdCOsAnJfti/nmVtpCWKhxhBt/hZayPI0yM8= 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 Thu, Jun 05, 2025 at 04:22:54PM +0200, 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 having memory to not having memory and vice versa. > > Implement a specific notifier for numa nodes when their state gets changed, > which will later be used by those consumers that are only interested > in numa node state changes. > > Add documentation as well. > > Signed-off-by: Oscar Salvador > Reviewed-by: Jonathan Cameron > Reviewed-by: Harry Yoo > Reviewed-by: Vlastimil Babka ... > diff --git a/include/linux/node.h b/include/linux/node.h > index 2b7517892230..8c783269011d 100644 > --- a/include/linux/node.h > +++ b/include/linux/node.h > @@ -123,6 +123,48 @@ static inline void register_memory_blocks_under_node(int nid, unsigned long star > #endif > > extern void unregister_node(struct node *node); > + > +#ifdef CONFIG_MEMORY_HOTPLUG > +struct node_notify { > + int nid; > +}; > + > +#define NODE_ADDING_FIRST_MEMORY (1<<0) > +#define NODE_ADDED_FIRST_MEMORY (1<<1) > +#define NODE_CANCEL_ADDING_FIRST_MEMORY (1<<2) > +#define NODE_REMOVING_LAST_MEMORY (1<<3) > +#define NODE_REMOVED_LAST_MEMORY (1<<4) > +#define NODE_CANCEL_REMOVING_LAST_MEMORY (1<<5) > + > +#if defined(CONFIG_MEMORY_HOTPLUG) && defined(CONFIG_NUMA) > +extern int register_node_notifier(struct notifier_block *nb); > +extern void unregister_node_notifier(struct notifier_block *nb); > +extern int node_notify(unsigned long val, void *v); > + > +#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); \ > +}) > +#else > +static inline int register_node_notifier(struct notifier_block *nb) > +{ > + return 0; > +} > +static inline void unregister_node_notifier(struct notifier_block *nb) > +{ > +} > +static inline int node_notify(unsigned long val, void *v) > +{ > + return 0; > +} > +static inline int hotplug_node_notifier(notifier_fn_t fn, int pri) > +{ > + return 0; > +} > +#endif > +#endif I got carried away, sorry. We need this fixup on top: diff --git a/include/linux/node.h b/include/linux/node.h index 8c783269011d..d7aa2636d948 100644 --- a/include/linux/node.h +++ b/include/linux/node.h @@ -124,7 +124,6 @@ static inline void register_memory_blocks_under_node(int nid, unsigned long star extern void unregister_node(struct node *node); -#ifdef CONFIG_MEMORY_HOTPLUG struct node_notify { int nid; }; @@ -163,7 +162,6 @@ static inline int hotplug_node_notifier(notifier_fn_t fn, int pri) return 0; } #endif -#endif #ifdef CONFIG_NUMA extern void node_dev_init(void); -- Oscar Salvador SUSE Labs