All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Kravetz <mike.kravetz@oracle.com>
To: Paul Gortmaker <paul.gortmaker@windriver.com>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>,
	David Rientjes <rientjes@google.com>,
	Hillf Danton <hillf.zj@alibaba-inc.com>,
	Davidlohr Bueso <dave@stgolabs.net>
Subject: Re: [PATCH 03/10] mm: make hugetlb.c explicitly non-modular
Date: Wed, 26 Aug 2015 09:47:13 -0700	[thread overview]
Message-ID: <55DDED91.9050405@oracle.com> (raw)
In-Reply-To: <1440454482-12250-4-git-send-email-paul.gortmaker@windriver.com>

On 08/24/2015 03:14 PM, Paul Gortmaker wrote:
> The Kconfig currently controlling compilation of this code is:
> 
> config HUGETLBFS
>         bool "HugeTLB file system support"
> 
> ...meaning that it currently is not being built as a module by anyone.
> 
> Lets remove the modular code that is essentially orphaned, so that
> when reading the file there is no doubt it is builtin-only.
> 
> Since module_init translates to device_initcall in the non-modular
> case, the init ordering remains unchanged with this commit.  However
> one could argue that fs_initcall() would make more sense here.

I would prefer that it NOT be changed to fs_initcall() as this is more
about generic mm code than fs code.  If this was in a hugetlbfs specific
file, fs_initcall() might make more sense.

More about changing initcall below.

> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
> Cc: Mike Kravetz <mike.kravetz@oracle.com>
> Cc: David Rientjes <rientjes@google.com>
> Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
> Cc: Davidlohr Bueso <dave@stgolabs.net>
> Cc: linux-mm@kvack.org
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> ---
>  mm/hugetlb.c | 39 +--------------------------------------
>  1 file changed, 1 insertion(+), 38 deletions(-)
> 
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 586aa69df900..1154152c8b99 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -4,7 +4,6 @@
>   */
>  #include <linux/list.h>
>  #include <linux/init.h>
> -#include <linux/module.h>
>  #include <linux/mm.h>
>  #include <linux/seq_file.h>
>  #include <linux/sysctl.h>
> @@ -2439,25 +2438,6 @@ static void hugetlb_unregister_node(struct node *node)
>  	nhs->hugepages_kobj = NULL;
>  }
>  
> -/*
> - * hugetlb module exit:  unregister hstate attributes from node devices
> - * that have them.
> - */
> -static void hugetlb_unregister_all_nodes(void)
> -{
> -	int nid;
> -
> -	/*
> -	 * disable node device registrations.
> -	 */
> -	register_hugetlbfs_with_node(NULL, NULL);
> -
> -	/*
> -	 * remove hstate attributes from any nodes that have them.
> -	 */
> -	for (nid = 0; nid < nr_node_ids; nid++)
> -		hugetlb_unregister_node(node_devices[nid]);
> -}
>  
>  /*
>   * Register hstate attributes for a single node device.
> @@ -2522,27 +2502,10 @@ static struct hstate *kobj_to_node_hstate(struct kobject *kobj, int *nidp)
>  	return NULL;
>  }
>  
> -static void hugetlb_unregister_all_nodes(void) { }
> -
>  static void hugetlb_register_all_nodes(void) { }
>  
>  #endif
>  
> -static void __exit hugetlb_exit(void)
> -{
> -	struct hstate *h;
> -
> -	hugetlb_unregister_all_nodes();
> -
> -	for_each_hstate(h) {
> -		kobject_put(hstate_kobjs[hstate_index(h)]);
> -	}
> -
> -	kobject_put(hugepages_kobj);
> -	kfree(hugetlb_fault_mutex_table);
> -}
> -module_exit(hugetlb_exit);
> -
>  static int __init hugetlb_init(void)
>  {
>  	int i;
> @@ -2580,7 +2543,7 @@ static int __init hugetlb_init(void)
>  		mutex_init(&hugetlb_fault_mutex_table[i]);
>  	return 0;
>  }

I am all for removal of the module_exit and associated code.  It is
dead and is not used today.  It would be a good idea to remove this
in any case.

> -module_init(hugetlb_init);
> +device_initcall(hugetlb_init);

Other more experienced people have opinions on your staged approach
to changing these init calls.  If the consensus is to take this
approach, I would have no objections.

-- 
Mike Kravetz

>  
>  /* Should be called on processing a hugepagesz=... option */
>  void __init hugetlb_add_hstate(unsigned order)
> 

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

WARNING: multiple messages have this Message-ID (diff)
From: Mike Kravetz <mike.kravetz@oracle.com>
To: Paul Gortmaker <paul.gortmaker@windriver.com>,
	Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>,
	David Rientjes <rientjes@google.com>,
	Hillf Danton <hillf.zj@alibaba-inc.com>,
	Davidlohr Bueso <dave@stgolabs.net>
Subject: Re: [PATCH 03/10] mm: make hugetlb.c explicitly non-modular
Date: Wed, 26 Aug 2015 09:47:13 -0700	[thread overview]
Message-ID: <55DDED91.9050405@oracle.com> (raw)
In-Reply-To: <1440454482-12250-4-git-send-email-paul.gortmaker@windriver.com>

On 08/24/2015 03:14 PM, Paul Gortmaker wrote:
> The Kconfig currently controlling compilation of this code is:
> 
> config HUGETLBFS
>         bool "HugeTLB file system support"
> 
> ...meaning that it currently is not being built as a module by anyone.
> 
> Lets remove the modular code that is essentially orphaned, so that
> when reading the file there is no doubt it is builtin-only.
> 
> Since module_init translates to device_initcall in the non-modular
> case, the init ordering remains unchanged with this commit.  However
> one could argue that fs_initcall() would make more sense here.

I would prefer that it NOT be changed to fs_initcall() as this is more
about generic mm code than fs code.  If this was in a hugetlbfs specific
file, fs_initcall() might make more sense.

More about changing initcall below.

> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
> Cc: Mike Kravetz <mike.kravetz@oracle.com>
> Cc: David Rientjes <rientjes@google.com>
> Cc: Hillf Danton <hillf.zj@alibaba-inc.com>
> Cc: Davidlohr Bueso <dave@stgolabs.net>
> Cc: linux-mm@kvack.org
> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
> ---
>  mm/hugetlb.c | 39 +--------------------------------------
>  1 file changed, 1 insertion(+), 38 deletions(-)
> 
> diff --git a/mm/hugetlb.c b/mm/hugetlb.c
> index 586aa69df900..1154152c8b99 100644
> --- a/mm/hugetlb.c
> +++ b/mm/hugetlb.c
> @@ -4,7 +4,6 @@
>   */
>  #include <linux/list.h>
>  #include <linux/init.h>
> -#include <linux/module.h>
>  #include <linux/mm.h>
>  #include <linux/seq_file.h>
>  #include <linux/sysctl.h>
> @@ -2439,25 +2438,6 @@ static void hugetlb_unregister_node(struct node *node)
>  	nhs->hugepages_kobj = NULL;
>  }
>  
> -/*
> - * hugetlb module exit:  unregister hstate attributes from node devices
> - * that have them.
> - */
> -static void hugetlb_unregister_all_nodes(void)
> -{
> -	int nid;
> -
> -	/*
> -	 * disable node device registrations.
> -	 */
> -	register_hugetlbfs_with_node(NULL, NULL);
> -
> -	/*
> -	 * remove hstate attributes from any nodes that have them.
> -	 */
> -	for (nid = 0; nid < nr_node_ids; nid++)
> -		hugetlb_unregister_node(node_devices[nid]);
> -}
>  
>  /*
>   * Register hstate attributes for a single node device.
> @@ -2522,27 +2502,10 @@ static struct hstate *kobj_to_node_hstate(struct kobject *kobj, int *nidp)
>  	return NULL;
>  }
>  
> -static void hugetlb_unregister_all_nodes(void) { }
> -
>  static void hugetlb_register_all_nodes(void) { }
>  
>  #endif
>  
> -static void __exit hugetlb_exit(void)
> -{
> -	struct hstate *h;
> -
> -	hugetlb_unregister_all_nodes();
> -
> -	for_each_hstate(h) {
> -		kobject_put(hstate_kobjs[hstate_index(h)]);
> -	}
> -
> -	kobject_put(hugepages_kobj);
> -	kfree(hugetlb_fault_mutex_table);
> -}
> -module_exit(hugetlb_exit);
> -
>  static int __init hugetlb_init(void)
>  {
>  	int i;
> @@ -2580,7 +2543,7 @@ static int __init hugetlb_init(void)
>  		mutex_init(&hugetlb_fault_mutex_table[i]);
>  	return 0;
>  }

I am all for removal of the module_exit and associated code.  It is
dead and is not used today.  It would be a good idea to remove this
in any case.

> -module_init(hugetlb_init);
> +device_initcall(hugetlb_init);

Other more experienced people have opinions on your staged approach
to changing these init calls.  If the consensus is to take this
approach, I would have no objections.

-- 
Mike Kravetz

>  
>  /* Should be called on processing a hugepagesz=... option */
>  void __init hugetlb_add_hstate(unsigned order)
> 

  reply	other threads:[~2015-08-26 16:50 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-24 22:14 [PATCH 00/10] mm: fix instances of non-modular code using modular fcns Paul Gortmaker
2015-08-24 22:14 ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 01/10] mm: make cleancache.c explicitly non-modular Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-25  0:10   ` Konrad Rzeszutek Wilk
2015-08-25  0:10     ` Konrad Rzeszutek Wilk
2015-08-25  1:10     ` Paul Gortmaker
2015-08-25  1:10       ` Paul Gortmaker
2015-09-22 15:20       ` Konrad Rzeszutek Wilk
2015-09-22 15:20         ` Konrad Rzeszutek Wilk
2015-09-22 21:28         ` Paul Gortmaker
2015-09-22 21:28           ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 02/10] mm: make slab_common.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-25 14:59   ` Christoph Lameter
2015-08-25 14:59     ` Christoph Lameter
2015-08-25 15:33     ` Paul Gortmaker
2015-08-25 15:33       ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 03/10] mm: make hugetlb.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-26 16:47   ` Mike Kravetz [this message]
2015-08-26 16:47     ` Mike Kravetz
2015-08-24 22:14 ` [PATCH 04/10] mm: make vmscan.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 05/10] mm: make page_alloc.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 06/10] mm: make vmstat.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 07/10] mm: make workingset.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 08/10] mm: make vmalloc.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-08-24 22:14 ` [PATCH 09/10] mm: make frontswap.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker
2015-09-22 15:28   ` Konrad Rzeszutek Wilk
2015-09-22 15:28     ` Konrad Rzeszutek Wilk
2015-08-24 22:14 ` [PATCH 10/10] mm: make kasan.c " Paul Gortmaker
2015-08-24 22:14   ` Paul Gortmaker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55DDED91.9050405@oracle.com \
    --to=mike.kravetz@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=dave@stgolabs.net \
    --cc=hillf.zj@alibaba-inc.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=paul.gortmaker@windriver.com \
    --cc=rientjes@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.