|
@@ -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>
|
|
@@ -2549,25 +2548,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.
|
|
@@ -2632,27 +2612,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;
|
|
@@ -2690,7 +2653,7 @@ static int __init hugetlb_init(void)
|
|
|
mutex_init(&hugetlb_fault_mutex_table[i]);
|
|
|
return 0;
|
|
|
}
|
|
|
-module_init(hugetlb_init);
|
|
|
+subsys_initcall(hugetlb_init);
|
|
|
|
|
|
/* Should be called on processing a hugepagesz=... option */
|
|
|
void __init hugetlb_add_hstate(unsigned int order)
|