Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-03-18 Thread Naoya Horiguchi
On Mon, Mar 18, 2013 at 04:51:25PM +0100, Michal Hocko wrote:
> On Thu 21-02-13 14:41:48, Naoya Horiguchi wrote:
> > Now hugepages are definitely movable. So allocating hugepages from
> > ZONE_MOVABLE is natural and we have no reason to keep this parameter.
> 
> The sysctl is a part of user interface so you shouldn't remove it right
> away. What we can do is to make it noop and only WARN() that the
> interface will be removed later so that userspace can prepare for that.
> 

Yes, you're right. I'll replace the handler with noop.

Thanks,
Naoya
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-03-18 Thread Michal Hocko
On Thu 21-02-13 14:41:48, Naoya Horiguchi wrote:
> Now hugepages are definitely movable. So allocating hugepages from
> ZONE_MOVABLE is natural and we have no reason to keep this parameter.

The sysctl is a part of user interface so you shouldn't remove it right
away. What we can do is to make it noop and only WARN() that the
interface will be removed later so that userspace can prepare for that.

> Signed-off-by: Naoya Horiguchi 
> ---
>  Documentation/sysctl/vm.txt | 16 
>  include/linux/hugetlb.h |  2 --
>  kernel/sysctl.c |  7 ---
>  mm/hugetlb.c| 23 +--
>  4 files changed, 5 insertions(+), 43 deletions(-)
> 
> diff --git v3.8.orig/Documentation/sysctl/vm.txt 
> v3.8/Documentation/sysctl/vm.txt
> index 078701f..997350a 100644
> --- v3.8.orig/Documentation/sysctl/vm.txt
> +++ v3.8/Documentation/sysctl/vm.txt
> @@ -167,22 +167,6 @@ fragmentation index is <= extfrag_threshold. The default 
> value is 500.
>  
>  ==
>  
> -hugepages_treat_as_movable
> -
> -This parameter is only useful when kernelcore= is specified at boot time to
> -create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
> -are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
> -value written to hugepages_treat_as_movable allows huge pages to be allocated
> -from ZONE_MOVABLE.
> -
> -Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
> -pages pool can easily grow or shrink within. Assuming that applications are
> -not running that mlock() a lot of memory, it is likely the huge pages pool
> -can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
> -into nr_hugepages and triggering page reclaim.
> -
> -==
> -
>  hugetlb_shm_group
>  
>  hugetlb_shm_group contains group id that is allowed to create SysV
> diff --git v3.8.orig/include/linux/hugetlb.h v3.8/include/linux/hugetlb.h
> index e33f07f..c97e5c5 100644
> --- v3.8.orig/include/linux/hugetlb.h
> +++ v3.8/include/linux/hugetlb.h
> @@ -35,7 +35,6 @@ int PageHuge(struct page *page);
>  void reset_vma_resv_huge_pages(struct vm_area_struct *vma);
>  int hugetlb_sysctl_handler(struct ctl_table *, int, void __user *, size_t *, 
> loff_t *);
>  int hugetlb_overcommit_handler(struct ctl_table *, int, void __user *, 
> size_t *, loff_t *);
> -int hugetlb_treat_movable_handler(struct ctl_table *, int, void __user *, 
> size_t *, loff_t *);
>  
>  #ifdef CONFIG_NUMA
>  int hugetlb_mempolicy_sysctl_handler(struct ctl_table *, int,
> @@ -73,7 +72,6 @@ void migrate_hugepage_add(struct page *page, struct 
> list_head *list);
>  int is_hugepage_movable(struct page *page);
>  void copy_huge_page(struct page *dst, struct page *src);
>  
> -extern unsigned long hugepages_treat_as_movable;
>  extern const unsigned long hugetlb_zero, hugetlb_infinity;
>  extern int sysctl_hugetlb_shm_group;
>  extern struct list_head huge_boot_pages;
> diff --git v3.8.orig/kernel/sysctl.c v3.8/kernel/sysctl.c
> index c88878d..a98bcf2 100644
> --- v3.8.orig/kernel/sysctl.c
> +++ v3.8/kernel/sysctl.c
> @@ -1189,13 +1189,6 @@ static struct ctl_table vm_table[] = {
>   .mode   = 0644,
>   .proc_handler   = proc_dointvec,
>},
> -  {
> - .procname   = "hugepages_treat_as_movable",
> - .data   = _treat_as_movable,
> - .maxlen = sizeof(int),
> - .mode   = 0644,
> - .proc_handler   = hugetlb_treat_movable_handler,
> - },
>   {
>   .procname   = "nr_overcommit_hugepages",
>   .data   = NULL,
> diff --git v3.8.orig/mm/hugetlb.c v3.8/mm/hugetlb.c
> index c28e6c9..c60d203 100644
> --- v3.8.orig/mm/hugetlb.c
> +++ v3.8/mm/hugetlb.c
> @@ -33,7 +33,6 @@
>  #include "internal.h"
>  
>  const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL;
> -static gfp_t htlb_alloc_mask = GFP_HIGHUSER;
>  unsigned long hugepages_treat_as_movable;
>  
>  int hugetlb_max_hstate __read_mostly;
> @@ -542,7 +541,7 @@ static struct page *dequeue_huge_page_vma(struct hstate 
> *h,
>  retry_cpuset:
>   cpuset_mems_cookie = get_mems_allowed();
>   zonelist = huge_zonelist(vma, address,
> - htlb_alloc_mask, , );
> + GFP_HIGHUSER_MOVABLE, , );
>   /*
>* A child process with MAP_PRIVATE mappings created by their parent
>* have no page reserves. This check ensures that reservations are
> @@ -558,7 +557,7 @@ static struct page *dequeue_huge_page_vma(struct hstate 
> *h,
>  
>   for_each_zone_zonelist_nodemask(zone, z, zonelist,
>   MAX_NR_ZONES - 1, nodemask) {
> - if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) {
> + if 

Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-03-18 Thread Michal Hocko
On Thu 21-02-13 14:41:48, Naoya Horiguchi wrote:
 Now hugepages are definitely movable. So allocating hugepages from
 ZONE_MOVABLE is natural and we have no reason to keep this parameter.

The sysctl is a part of user interface so you shouldn't remove it right
away. What we can do is to make it noop and only WARN() that the
interface will be removed later so that userspace can prepare for that.

 Signed-off-by: Naoya Horiguchi n-horigu...@ah.jp.nec.com
 ---
  Documentation/sysctl/vm.txt | 16 
  include/linux/hugetlb.h |  2 --
  kernel/sysctl.c |  7 ---
  mm/hugetlb.c| 23 +--
  4 files changed, 5 insertions(+), 43 deletions(-)
 
 diff --git v3.8.orig/Documentation/sysctl/vm.txt 
 v3.8/Documentation/sysctl/vm.txt
 index 078701f..997350a 100644
 --- v3.8.orig/Documentation/sysctl/vm.txt
 +++ v3.8/Documentation/sysctl/vm.txt
 @@ -167,22 +167,6 @@ fragmentation index is = extfrag_threshold. The default 
 value is 500.
  
  ==
  
 -hugepages_treat_as_movable
 -
 -This parameter is only useful when kernelcore= is specified at boot time to
 -create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
 -are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
 -value written to hugepages_treat_as_movable allows huge pages to be allocated
 -from ZONE_MOVABLE.
 -
 -Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
 -pages pool can easily grow or shrink within. Assuming that applications are
 -not running that mlock() a lot of memory, it is likely the huge pages pool
 -can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
 -into nr_hugepages and triggering page reclaim.
 -
 -==
 -
  hugetlb_shm_group
  
  hugetlb_shm_group contains group id that is allowed to create SysV
 diff --git v3.8.orig/include/linux/hugetlb.h v3.8/include/linux/hugetlb.h
 index e33f07f..c97e5c5 100644
 --- v3.8.orig/include/linux/hugetlb.h
 +++ v3.8/include/linux/hugetlb.h
 @@ -35,7 +35,6 @@ int PageHuge(struct page *page);
  void reset_vma_resv_huge_pages(struct vm_area_struct *vma);
  int hugetlb_sysctl_handler(struct ctl_table *, int, void __user *, size_t *, 
 loff_t *);
  int hugetlb_overcommit_handler(struct ctl_table *, int, void __user *, 
 size_t *, loff_t *);
 -int hugetlb_treat_movable_handler(struct ctl_table *, int, void __user *, 
 size_t *, loff_t *);
  
  #ifdef CONFIG_NUMA
  int hugetlb_mempolicy_sysctl_handler(struct ctl_table *, int,
 @@ -73,7 +72,6 @@ void migrate_hugepage_add(struct page *page, struct 
 list_head *list);
  int is_hugepage_movable(struct page *page);
  void copy_huge_page(struct page *dst, struct page *src);
  
 -extern unsigned long hugepages_treat_as_movable;
  extern const unsigned long hugetlb_zero, hugetlb_infinity;
  extern int sysctl_hugetlb_shm_group;
  extern struct list_head huge_boot_pages;
 diff --git v3.8.orig/kernel/sysctl.c v3.8/kernel/sysctl.c
 index c88878d..a98bcf2 100644
 --- v3.8.orig/kernel/sysctl.c
 +++ v3.8/kernel/sysctl.c
 @@ -1189,13 +1189,6 @@ static struct ctl_table vm_table[] = {
   .mode   = 0644,
   .proc_handler   = proc_dointvec,
},
 -  {
 - .procname   = hugepages_treat_as_movable,
 - .data   = hugepages_treat_as_movable,
 - .maxlen = sizeof(int),
 - .mode   = 0644,
 - .proc_handler   = hugetlb_treat_movable_handler,
 - },
   {
   .procname   = nr_overcommit_hugepages,
   .data   = NULL,
 diff --git v3.8.orig/mm/hugetlb.c v3.8/mm/hugetlb.c
 index c28e6c9..c60d203 100644
 --- v3.8.orig/mm/hugetlb.c
 +++ v3.8/mm/hugetlb.c
 @@ -33,7 +33,6 @@
  #include internal.h
  
  const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL;
 -static gfp_t htlb_alloc_mask = GFP_HIGHUSER;
  unsigned long hugepages_treat_as_movable;
  
  int hugetlb_max_hstate __read_mostly;
 @@ -542,7 +541,7 @@ static struct page *dequeue_huge_page_vma(struct hstate 
 *h,
  retry_cpuset:
   cpuset_mems_cookie = get_mems_allowed();
   zonelist = huge_zonelist(vma, address,
 - htlb_alloc_mask, mpol, nodemask);
 + GFP_HIGHUSER_MOVABLE, mpol, nodemask);
   /*
* A child process with MAP_PRIVATE mappings created by their parent
* have no page reserves. This check ensures that reservations are
 @@ -558,7 +557,7 @@ static struct page *dequeue_huge_page_vma(struct hstate 
 *h,
  
   for_each_zone_zonelist_nodemask(zone, z, zonelist,
   MAX_NR_ZONES - 1, nodemask) {
 - if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) {
 + if (cpuset_zone_allowed_softwall(zone, GFP_HIGHUSER_MOVABLE)) {

Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-03-18 Thread Naoya Horiguchi
On Mon, Mar 18, 2013 at 04:51:25PM +0100, Michal Hocko wrote:
 On Thu 21-02-13 14:41:48, Naoya Horiguchi wrote:
  Now hugepages are definitely movable. So allocating hugepages from
  ZONE_MOVABLE is natural and we have no reason to keep this parameter.
 
 The sysctl is a part of user interface so you shouldn't remove it right
 away. What we can do is to make it noop and only WARN() that the
 interface will be removed later so that userspace can prepare for that.
 

Yes, you're right. I'll replace the handler with noop.

Thanks,
Naoya
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-02-28 Thread Naoya Horiguchi
On Thu, Feb 28, 2013 at 01:02:37AM -0500, KOSAKI Motohiro wrote:
> > -{
> > -   .procname   = "hugepages_treat_as_movable",
> > -   .data   = _treat_as_movable,
> > -   .maxlen = sizeof(int),
> > -   .mode   = 0644,
> > -   .proc_handler   = hugetlb_treat_movable_handler,
> > -   },
> 
> Sorry, no.
> 
> This is too aggressive remove. Imagine, a lot of shell script don't
> have any error check.

Sure, it could break usespace applications.

> I suggest to keep this file but change to nop (to output warning is better).
> About 1-2 years after, we can remove this file safely.

OK, so I'll leave it for a while with the comment saying that this
parameter is obsolete and shouldn't be used.

Thanks,
Naoya
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-02-28 Thread Naoya Horiguchi
On Thu, Feb 28, 2013 at 01:02:37AM -0500, KOSAKI Motohiro wrote:
  -{
  -   .procname   = hugepages_treat_as_movable,
  -   .data   = hugepages_treat_as_movable,
  -   .maxlen = sizeof(int),
  -   .mode   = 0644,
  -   .proc_handler   = hugetlb_treat_movable_handler,
  -   },
 
 Sorry, no.
 
 This is too aggressive remove. Imagine, a lot of shell script don't
 have any error check.

Sure, it could break usespace applications.

 I suggest to keep this file but change to nop (to output warning is better).
 About 1-2 years after, we can remove this file safely.

OK, so I'll leave it for a while with the comment saying that this
parameter is obsolete and shouldn't be used.

Thanks,
Naoya
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-02-27 Thread KOSAKI Motohiro
> -{
> -   .procname   = "hugepages_treat_as_movable",
> -   .data   = _treat_as_movable,
> -   .maxlen = sizeof(int),
> -   .mode   = 0644,
> -   .proc_handler   = hugetlb_treat_movable_handler,
> -   },

Sorry, no.

This is too aggressive remove. Imagine, a lot of shell script don't
have any error check.
I suggest to keep this file but change to nop (to output warning is better).
About 1-2 years after, we can remove this file safely.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-02-27 Thread KOSAKI Motohiro
 -{
 -   .procname   = hugepages_treat_as_movable,
 -   .data   = hugepages_treat_as_movable,
 -   .maxlen = sizeof(int),
 -   .mode   = 0644,
 -   .proc_handler   = hugetlb_treat_movable_handler,
 -   },

Sorry, no.

This is too aggressive remove. Imagine, a lot of shell script don't
have any error check.
I suggest to keep this file but change to nop (to output warning is better).
About 1-2 years after, we can remove this file safely.
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-02-21 Thread Naoya Horiguchi
Now hugepages are definitely movable. So allocating hugepages from
ZONE_MOVABLE is natural and we have no reason to keep this parameter.

Signed-off-by: Naoya Horiguchi 
---
 Documentation/sysctl/vm.txt | 16 
 include/linux/hugetlb.h |  2 --
 kernel/sysctl.c |  7 ---
 mm/hugetlb.c| 23 +--
 4 files changed, 5 insertions(+), 43 deletions(-)

diff --git v3.8.orig/Documentation/sysctl/vm.txt 
v3.8/Documentation/sysctl/vm.txt
index 078701f..997350a 100644
--- v3.8.orig/Documentation/sysctl/vm.txt
+++ v3.8/Documentation/sysctl/vm.txt
@@ -167,22 +167,6 @@ fragmentation index is <= extfrag_threshold. The default 
value is 500.
 
 ==
 
-hugepages_treat_as_movable
-
-This parameter is only useful when kernelcore= is specified at boot time to
-create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
-are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
-value written to hugepages_treat_as_movable allows huge pages to be allocated
-from ZONE_MOVABLE.
-
-Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
-pages pool can easily grow or shrink within. Assuming that applications are
-not running that mlock() a lot of memory, it is likely the huge pages pool
-can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
-into nr_hugepages and triggering page reclaim.
-
-==
-
 hugetlb_shm_group
 
 hugetlb_shm_group contains group id that is allowed to create SysV
diff --git v3.8.orig/include/linux/hugetlb.h v3.8/include/linux/hugetlb.h
index e33f07f..c97e5c5 100644
--- v3.8.orig/include/linux/hugetlb.h
+++ v3.8/include/linux/hugetlb.h
@@ -35,7 +35,6 @@ int PageHuge(struct page *page);
 void reset_vma_resv_huge_pages(struct vm_area_struct *vma);
 int hugetlb_sysctl_handler(struct ctl_table *, int, void __user *, size_t *, 
loff_t *);
 int hugetlb_overcommit_handler(struct ctl_table *, int, void __user *, size_t 
*, loff_t *);
-int hugetlb_treat_movable_handler(struct ctl_table *, int, void __user *, 
size_t *, loff_t *);
 
 #ifdef CONFIG_NUMA
 int hugetlb_mempolicy_sysctl_handler(struct ctl_table *, int,
@@ -73,7 +72,6 @@ void migrate_hugepage_add(struct page *page, struct list_head 
*list);
 int is_hugepage_movable(struct page *page);
 void copy_huge_page(struct page *dst, struct page *src);
 
-extern unsigned long hugepages_treat_as_movable;
 extern const unsigned long hugetlb_zero, hugetlb_infinity;
 extern int sysctl_hugetlb_shm_group;
 extern struct list_head huge_boot_pages;
diff --git v3.8.orig/kernel/sysctl.c v3.8/kernel/sysctl.c
index c88878d..a98bcf2 100644
--- v3.8.orig/kernel/sysctl.c
+++ v3.8/kernel/sysctl.c
@@ -1189,13 +1189,6 @@ static struct ctl_table vm_table[] = {
.mode   = 0644,
.proc_handler   = proc_dointvec,
 },
-{
-   .procname   = "hugepages_treat_as_movable",
-   .data   = _treat_as_movable,
-   .maxlen = sizeof(int),
-   .mode   = 0644,
-   .proc_handler   = hugetlb_treat_movable_handler,
-   },
{
.procname   = "nr_overcommit_hugepages",
.data   = NULL,
diff --git v3.8.orig/mm/hugetlb.c v3.8/mm/hugetlb.c
index c28e6c9..c60d203 100644
--- v3.8.orig/mm/hugetlb.c
+++ v3.8/mm/hugetlb.c
@@ -33,7 +33,6 @@
 #include "internal.h"
 
 const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL;
-static gfp_t htlb_alloc_mask = GFP_HIGHUSER;
 unsigned long hugepages_treat_as_movable;
 
 int hugetlb_max_hstate __read_mostly;
@@ -542,7 +541,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
 retry_cpuset:
cpuset_mems_cookie = get_mems_allowed();
zonelist = huge_zonelist(vma, address,
-   htlb_alloc_mask, , );
+   GFP_HIGHUSER_MOVABLE, , );
/*
 * A child process with MAP_PRIVATE mappings created by their parent
 * have no page reserves. This check ensures that reservations are
@@ -558,7 +557,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
 
for_each_zone_zonelist_nodemask(zone, z, zonelist,
MAX_NR_ZONES - 1, nodemask) {
-   if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) {
+   if (cpuset_zone_allowed_softwall(zone, GFP_HIGHUSER_MOVABLE)) {
page = dequeue_huge_page_node(h, zone_to_nid(zone));
if (page) {
if (!avoid_reserve)
@@ -698,7 +697,7 @@ static struct page *alloc_fresh_huge_page_node(struct 
hstate *h, int nid)
return NULL;
 
page = alloc_pages_exact_node(nid,
-   

[PATCH 9/9] remove /proc/sys/vm/hugepages_treat_as_movable

2013-02-21 Thread Naoya Horiguchi
Now hugepages are definitely movable. So allocating hugepages from
ZONE_MOVABLE is natural and we have no reason to keep this parameter.

Signed-off-by: Naoya Horiguchi n-horigu...@ah.jp.nec.com
---
 Documentation/sysctl/vm.txt | 16 
 include/linux/hugetlb.h |  2 --
 kernel/sysctl.c |  7 ---
 mm/hugetlb.c| 23 +--
 4 files changed, 5 insertions(+), 43 deletions(-)

diff --git v3.8.orig/Documentation/sysctl/vm.txt 
v3.8/Documentation/sysctl/vm.txt
index 078701f..997350a 100644
--- v3.8.orig/Documentation/sysctl/vm.txt
+++ v3.8/Documentation/sysctl/vm.txt
@@ -167,22 +167,6 @@ fragmentation index is = extfrag_threshold. The default 
value is 500.
 
 ==
 
-hugepages_treat_as_movable
-
-This parameter is only useful when kernelcore= is specified at boot time to
-create ZONE_MOVABLE for pages that may be reclaimed or migrated. Huge pages
-are not movable so are not normally allocated from ZONE_MOVABLE. A non-zero
-value written to hugepages_treat_as_movable allows huge pages to be allocated
-from ZONE_MOVABLE.
-
-Once enabled, the ZONE_MOVABLE is treated as an area of memory the huge
-pages pool can easily grow or shrink within. Assuming that applications are
-not running that mlock() a lot of memory, it is likely the huge pages pool
-can grow to the size of ZONE_MOVABLE by repeatedly entering the desired value
-into nr_hugepages and triggering page reclaim.
-
-==
-
 hugetlb_shm_group
 
 hugetlb_shm_group contains group id that is allowed to create SysV
diff --git v3.8.orig/include/linux/hugetlb.h v3.8/include/linux/hugetlb.h
index e33f07f..c97e5c5 100644
--- v3.8.orig/include/linux/hugetlb.h
+++ v3.8/include/linux/hugetlb.h
@@ -35,7 +35,6 @@ int PageHuge(struct page *page);
 void reset_vma_resv_huge_pages(struct vm_area_struct *vma);
 int hugetlb_sysctl_handler(struct ctl_table *, int, void __user *, size_t *, 
loff_t *);
 int hugetlb_overcommit_handler(struct ctl_table *, int, void __user *, size_t 
*, loff_t *);
-int hugetlb_treat_movable_handler(struct ctl_table *, int, void __user *, 
size_t *, loff_t *);
 
 #ifdef CONFIG_NUMA
 int hugetlb_mempolicy_sysctl_handler(struct ctl_table *, int,
@@ -73,7 +72,6 @@ void migrate_hugepage_add(struct page *page, struct list_head 
*list);
 int is_hugepage_movable(struct page *page);
 void copy_huge_page(struct page *dst, struct page *src);
 
-extern unsigned long hugepages_treat_as_movable;
 extern const unsigned long hugetlb_zero, hugetlb_infinity;
 extern int sysctl_hugetlb_shm_group;
 extern struct list_head huge_boot_pages;
diff --git v3.8.orig/kernel/sysctl.c v3.8/kernel/sysctl.c
index c88878d..a98bcf2 100644
--- v3.8.orig/kernel/sysctl.c
+++ v3.8/kernel/sysctl.c
@@ -1189,13 +1189,6 @@ static struct ctl_table vm_table[] = {
.mode   = 0644,
.proc_handler   = proc_dointvec,
 },
-{
-   .procname   = hugepages_treat_as_movable,
-   .data   = hugepages_treat_as_movable,
-   .maxlen = sizeof(int),
-   .mode   = 0644,
-   .proc_handler   = hugetlb_treat_movable_handler,
-   },
{
.procname   = nr_overcommit_hugepages,
.data   = NULL,
diff --git v3.8.orig/mm/hugetlb.c v3.8/mm/hugetlb.c
index c28e6c9..c60d203 100644
--- v3.8.orig/mm/hugetlb.c
+++ v3.8/mm/hugetlb.c
@@ -33,7 +33,6 @@
 #include internal.h
 
 const unsigned long hugetlb_zero = 0, hugetlb_infinity = ~0UL;
-static gfp_t htlb_alloc_mask = GFP_HIGHUSER;
 unsigned long hugepages_treat_as_movable;
 
 int hugetlb_max_hstate __read_mostly;
@@ -542,7 +541,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
 retry_cpuset:
cpuset_mems_cookie = get_mems_allowed();
zonelist = huge_zonelist(vma, address,
-   htlb_alloc_mask, mpol, nodemask);
+   GFP_HIGHUSER_MOVABLE, mpol, nodemask);
/*
 * A child process with MAP_PRIVATE mappings created by their parent
 * have no page reserves. This check ensures that reservations are
@@ -558,7 +557,7 @@ static struct page *dequeue_huge_page_vma(struct hstate *h,
 
for_each_zone_zonelist_nodemask(zone, z, zonelist,
MAX_NR_ZONES - 1, nodemask) {
-   if (cpuset_zone_allowed_softwall(zone, htlb_alloc_mask)) {
+   if (cpuset_zone_allowed_softwall(zone, GFP_HIGHUSER_MOVABLE)) {
page = dequeue_huge_page_node(h, zone_to_nid(zone));
if (page) {
if (!avoid_reserve)
@@ -698,7 +697,7 @@ static struct page *alloc_fresh_huge_page_node(struct 
hstate *h, int nid)
return NULL;
 
page = alloc_pages_exact_node(nid,
-