aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memory-failure.c
diff options
context:
space:
mode:
authorAndrea Arcangeli <aarcange@redhat.com>2011-01-13 18:47:16 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2011-01-13 20:32:47 -0500
commit37c2ac7872a9387542616f658d20ac25f5bdb32e (patch)
treed115915db4a61e261012bf0f9c4cf14630243d71 /mm/memory-failure.c
parent91600e9e592e48736e630851c83da2ad6bf0e91f (diff)
thp: compound_trans_order
Read compound_trans_order safe. Noop for CONFIG_TRANSPARENT_HUGEPAGE=n. Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memory-failure.c')
-rw-r--r--mm/memory-failure.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/mm/memory-failure.c b/mm/memory-failure.c
index 1b43d0ffff65..548fbd70f026 100644
--- a/mm/memory-failure.c
+++ b/mm/memory-failure.c
@@ -203,7 +203,7 @@ static int kill_proc_ao(struct task_struct *t, unsigned long addr, int trapno,
203#ifdef __ARCH_SI_TRAPNO 203#ifdef __ARCH_SI_TRAPNO
204 si.si_trapno = trapno; 204 si.si_trapno = trapno;
205#endif 205#endif
206 si.si_addr_lsb = compound_order(compound_head(page)) + PAGE_SHIFT; 206 si.si_addr_lsb = compound_trans_order(compound_head(page)) + PAGE_SHIFT;
207 /* 207 /*
208 * Don't use force here, it's convenient if the signal 208 * Don't use force here, it's convenient if the signal
209 * can be temporarily blocked. 209 * can be temporarily blocked.
@@ -930,7 +930,7 @@ static int hwpoison_user_mappings(struct page *p, unsigned long pfn,
930static void set_page_hwpoison_huge_page(struct page *hpage) 930static void set_page_hwpoison_huge_page(struct page *hpage)
931{ 931{
932 int i; 932 int i;
933 int nr_pages = 1 << compound_order(hpage); 933 int nr_pages = 1 << compound_trans_order(hpage);
934 for (i = 0; i < nr_pages; i++) 934 for (i = 0; i < nr_pages; i++)
935 SetPageHWPoison(hpage + i); 935 SetPageHWPoison(hpage + i);
936} 936}
@@ -938,7 +938,7 @@ static void set_page_hwpoison_huge_page(struct page *hpage)
938static void clear_page_hwpoison_huge_page(struct page *hpage) 938static void clear_page_hwpoison_huge_page(struct page *hpage)
939{ 939{
940 int i; 940 int i;
941 int nr_pages = 1 << compound_order(hpage); 941 int nr_pages = 1 << compound_trans_order(hpage);
942 for (i = 0; i < nr_pages; i++) 942 for (i = 0; i < nr_pages; i++)
943 ClearPageHWPoison(hpage + i); 943 ClearPageHWPoison(hpage + i);
944} 944}
@@ -968,7 +968,7 @@ int __memory_failure(unsigned long pfn, int trapno, int flags)
968 return 0; 968 return 0;
969 } 969 }
970 970
971 nr_pages = 1 << compound_order(hpage); 971 nr_pages = 1 << compound_trans_order(hpage);
972 atomic_long_add(nr_pages, &mce_bad_pages); 972 atomic_long_add(nr_pages, &mce_bad_pages);
973 973
974 /* 974 /*
@@ -1166,7 +1166,7 @@ int unpoison_memory(unsigned long pfn)
1166 return 0; 1166 return 0;
1167 } 1167 }
1168 1168
1169 nr_pages = 1 << compound_order(page); 1169 nr_pages = 1 << compound_trans_order(page);
1170 1170
1171 if (!get_page_unless_zero(page)) { 1171 if (!get_page_unless_zero(page)) {
1172 /* 1172 /*
@@ -1304,7 +1304,7 @@ static int soft_offline_huge_page(struct page *page, int flags)
1304 } 1304 }
1305done: 1305done:
1306 if (!PageHWPoison(hpage)) 1306 if (!PageHWPoison(hpage))
1307 atomic_long_add(1 << compound_order(hpage), &mce_bad_pages); 1307 atomic_long_add(1 << compound_trans_order(hpage), &mce_bad_pages);
1308 set_page_hwpoison_huge_page(hpage); 1308 set_page_hwpoison_huge_page(hpage);
1309 dequeue_hwpoisoned_huge_page(hpage); 1309 dequeue_hwpoisoned_huge_page(hpage);
1310 /* keep elevated page count for bad page */ 1310 /* keep elevated page count for bad page */