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 5634CC433F5 for ; Fri, 18 Mar 2022 07:33:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A74D08D0002; Fri, 18 Mar 2022 03:33:07 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A24748D0001; Fri, 18 Mar 2022 03:33:07 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 913B28D0002; Fri, 18 Mar 2022 03:33:07 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0065.hostedemail.com [216.40.44.65]) by kanga.kvack.org (Postfix) with ESMTP id 7E4D58D0001 for ; Fri, 18 Mar 2022 03:33:07 -0400 (EDT) Received: from smtpin18.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id 2EDCBA324F for ; Fri, 18 Mar 2022 07:33:07 +0000 (UTC) X-FDA: 79256690814.18.0164798 Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by imf10.hostedemail.com (Postfix) with ESMTP id CDDEEC0011 for ; Fri, 18 Mar 2022 07:33:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1647588786; x=1679124786; h=from:to:cc:subject:references:date:in-reply-to: message-id:mime-version; bh=5wFaDivmsqjIimlyRpkOSsUEc9NDJ1nuFC7Obz/eUIE=; b=BG/rkkkfSS1VH+BJqVPDIAlnoDgHoQ8cl8yFJW0PTJEfOYG6xJ8Ylmny auI/rl1Q3XfibwREGq2bUNVf0DA5PntBQVWAIrTm37zEYgOeEsIWOPKD2 ZbpDDRECp5DEhvZLB67y+ooZGxQBQo5H3y6YaVhPqbOc7bTCzXXNZFGO2 s/JKBrH1Idt3doVYK9+Zxk5s/jJfTTzAnBeReRDxbJ6lKZkjCJPXWH+S3 PyOYM6MNTQx67+Ad3H4k7w7S0jPJHURU3MlLC5Bu1Oyk0b65+UMg7gubo lH9XkSt/0sNq569eyve/7UQLzCj86/9/DeUWaQXCczARnCtzl1qqx8/uY w==; X-IronPort-AV: E=McAfee;i="6200,9189,10289"; a="317801548" X-IronPort-AV: E=Sophos;i="5.90,191,1643702400"; d="scan'208";a="317801548" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2022 00:33:04 -0700 X-IronPort-AV: E=Sophos;i="5.90,191,1643702400"; d="scan'208";a="541724957" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.239.13.94]) by orsmga007-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2022 00:33:02 -0700 From: "Huang, Ying" To: Oscar Salvador Cc: Andrew Morton , Dave Hansen , Abhishek Goel , Baolin Wang , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] mm: Untangle config dependencies for demote-on-reclaim References: <20220317132450.5116-1-osalvador@suse.de> Date: Fri, 18 Mar 2022 15:33:00 +0800 In-Reply-To: <20220317132450.5116-1-osalvador@suse.de> (Oscar Salvador's message of "Thu, 17 Mar 2022 14:24:50 +0100") Message-ID: <87tubvk95f.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: CDDEEC0011 X-Stat-Signature: aj8hc5tw65dq1yjgg6siynnh6kirz3qw Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="BG/rkkkf"; dmarc=pass (policy=none) header.from=intel.com; spf=none (imf10.hostedemail.com: domain of ying.huang@intel.com has no SPF policy when checking 134.134.136.31) smtp.mailfrom=ying.huang@intel.com X-Rspam-User: X-HE-Tag: 1647588784-132184 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: Hi, Oscar, Thanks for doing this. Oscar Salvador writes: > At the time demote-on-reclaim was introduced, it was tied to > CONFIG_HOTPLUG_CPU + CONFIG_MIGRATE, but that is not really > accurate. > > The only two things we need to depen on is CONFIG_NUMA + > CONFIG_MIGRATE, so clean this up. > Furthermore, we only register the hotplug memory notifier > when the system has CONFIG_MEMORY_HOTPLUG. > > Signed-off-by: Oscar Salvador > Suggested-by: "Huang, Ying" > --- > include/linux/migrate.h | 5 ++++- > mm/migrate.c | 11 ++++++----- > mm/vmstat.c | 2 -- > 3 files changed, 10 insertions(+), 8 deletions(-) > > diff --git a/include/linux/migrate.h b/include/linux/migrate.h > index a4a336fd81fc..1efabe7bb5fc 100644 > --- a/include/linux/migrate.h > +++ b/include/linux/migrate.h > @@ -49,14 +49,17 @@ int folio_migrate_mapping(struct address_space *mapping, > > extern bool numa_demotion_enabled; > extern void migrate_on_reclaim_init(void); > -#ifdef CONFIG_HOTPLUG_CPU > +#ifdef CONFIG_NUMA > extern void set_migration_target_nodes(void); > +extern void migrate_on_reclaim_init(void); > #else > static inline void set_migration_target_nodes(void) {} > +static inline void migrate_on_reclaim_init(void) {} > #endif > #else > > static inline void set_migration_target_nodes(void) {} > +static inline void migrate_on_reclaim_init(void) {} To avoid to duplicate the void definition. How about to usec #if defined(CONFIG_MIGRATION) && defined(CONFIG_NUMA) /* xxx */ #else /* yyy */ #endif And we need to put "numa_demotion_enabled" inside too. Because it is defined inside CONFIG_NUMA too now. > static inline void putback_movable_pages(struct list_head *l) {} > static inline int migrate_pages(struct list_head *l, new_page_t new, > diff --git a/mm/migrate.c b/mm/migrate.c > index 3364bfaddeef..118f71425241 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -2144,7 +2144,6 @@ int migrate_misplaced_page(struct page *page, struct vm_area_struct *vma, > return 0; > } > #endif /* CONFIG_NUMA_BALANCING */ > -#endif /* CONFIG_NUMA */ > > /* > * node_demotion[] example: > @@ -2278,7 +2277,6 @@ int next_demotion_node(int node) > return target; > } > > -#if defined(CONFIG_HOTPLUG_CPU) > /* Disable reclaim-based migration. */ > static void __disable_all_migrate_targets(void) > { > @@ -2471,6 +2469,7 @@ void set_migration_target_nodes(void) > * __set_migration_target_nodes() can be used as opposed to > * set_migration_target_nodes(). > */ > +#ifdef CONFIG_MEMORY_HOTPLUG > static int __meminit migrate_on_reclaim_callback(struct notifier_block *self, > unsigned long action, void *_arg) > { > @@ -2516,6 +2515,7 @@ static int __meminit migrate_on_reclaim_callback(struct notifier_block *self, > > return notifier_from_errno(0); > } > +#endif > > void __init migrate_on_reclaim_init(void) > { > @@ -2523,8 +2523,9 @@ void __init migrate_on_reclaim_init(void) > sizeof(struct demotion_nodes), > GFP_KERNEL); > WARN_ON(!node_demotion); > - > +#ifdef CONFIG_MEMORY_HOTPLUG > hotplug_memory_notifier(migrate_on_reclaim_callback, 100); > +#endif Another way is to add "#else" and void definition after migrate_on_reclaim_callback(). But this isn't a big deal. > /* > * At this point, all numa nodes with memory/CPus have their state > * properly set, so we can build the demotion order now. > @@ -2535,7 +2536,6 @@ void __init migrate_on_reclaim_init(void) > set_migration_target_nodes(); > cpus_read_unlock(); > } > -#endif /* CONFIG_HOTPLUG_CPU */ > > bool numa_demotion_enabled = false; As above, this is under CONFIG_NUMA too now. Best Regards, Huang, Ying > @@ -2596,4 +2596,5 @@ static int __init numa_init_sysfs(void) > return err; > } > subsys_initcall(numa_init_sysfs); > -#endif > +#endif /* CONFIG_SYSFS */ > +#endif /* CONFIG_NUMA */ > diff --git a/mm/vmstat.c b/mm/vmstat.c > index b75b1a64b54c..f2d0dec1062d 100644 > --- a/mm/vmstat.c > +++ b/mm/vmstat.c > @@ -2111,9 +2111,7 @@ void __init init_mm_internals(void) > > start_shepherd_timer(); > #endif > -#if defined(CONFIG_MIGRATION) && defined(CONFIG_HOTPLUG_CPU) > migrate_on_reclaim_init(); > -#endif > #ifdef CONFIG_PROC_FS > proc_create_seq("buddyinfo", 0444, NULL, &fragmentation_op); > proc_create_seq("pagetypeinfo", 0400, NULL, &pagetypeinfo_op);