[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20100107143651.2fa73662.randy.dunlap@oracle.com>
Date: Thu, 7 Jan 2010 14:36:51 -0800
From: Randy Dunlap <randy.dunlap@...cle.com>
To: linux-kernel@...r.kernel.org, linux-mm@...ck.org
Cc: akpm@...ux-foundation.org, rakib.mullick@...il.com
Subject: Re: + hugetlb-fix-section-mismatch-warning-in-hugetlbc.patch added
to -mm tree
On Thu, 07 Jan 2010 14:18:25 -0800 akpm@...ux-foundation.org wrote:
>
> The patch titled
> hugetlb: fix section mismatch warning in hugetlb.c
> has been added to the -mm tree. Its filename is
> hugetlb-fix-section-mismatch-warning-in-hugetlbc.patch
>
>
> ------------------------------------------------------
> Subject: hugetlb: fix section mismatch warning in hugetlb.c
> From: Rakib Mullick <rakib.mullick@...il.com>
>
> Since hugetlb_sysfs_add_hstate()'s caller is __init and it isn't
> referencing from any other function, we can do this.
Hi,
I looked at this section mismatch warning too.
Maybe I'm reading too much into it (so I have cc-ed linux-mm),
but it looks like hugetlbfs supports callbacks for node
hotplug & unplug:
in hugetlb_register_all_nodes():
/*
* Let the node sysdev driver know we're here so it can
* [un]register hstate attributes on node hotplug.
*/
register_hugetlbfs_with_node(hugetlb_register_node,
hugetlb_unregister_node);
If so, then hugetlb_register_node() could be called at any time
(like after system init), and it would then call
hugetlb_sysfs_add_hstate(), which would be bad.
Am I misunderstanding the hotplug callbacks?
or can you explain just a bit better, please?
Thanks.
> Signed-off-by: Rakib Mullick <rakib.mullick@...il.com>
> Signed-off-by: Andrew Morton <akpm@...ux-foundation.org>
> ---
>
> mm/hugetlb.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff -puN mm/hugetlb.c~hugetlb-fix-section-mismatch-warning-in-hugetlbc mm/hugetlb.c
> --- a/mm/hugetlb.c~hugetlb-fix-section-mismatch-warning-in-hugetlbc
> +++ a/mm/hugetlb.c
> @@ -1650,7 +1650,7 @@ static void hugetlb_unregister_all_nodes
> * Register hstate attributes for a single node sysdev.
> * No-op if attributes already registered.
> */
> -void hugetlb_register_node(struct node *node)
> +void __init hugetlb_register_node(struct node *node)
> {
> struct hstate *h;
> struct node_hstate *nhs = &node_hstates[node->sysdev.id];
> @@ -1683,7 +1683,7 @@ void hugetlb_register_node(struct node *
> * sysdevs of nodes that have memory. All on-line nodes should have
> * registered their associated sysdev by this time.
> */
> -static void hugetlb_register_all_nodes(void)
> +static void __init hugetlb_register_all_nodes(void)
> {
> int nid;
>
> @@ -1712,7 +1712,7 @@ static struct hstate *kobj_to_node_hstat
>
> static void hugetlb_unregister_all_nodes(void) { }
>
> -static void hugetlb_register_all_nodes(void) { }
> +static void __init hugetlb_register_all_nodes(void) { }
>
> #endif
>
> _
---
~Randy
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists