Re: [PATCH v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
On Mon, Dec 22, 2014 at 10:10:42AM +0100, Paul Bolle wrote: > Hi Joonsoo, > > On Fri, 2014-11-28 at 16:35 +0900, Joonsoo Kim wrote: > > Hello, Paul. > > > > Thanks for spotting this. > > I attach the patch. :) > > > > Andrew, > > Could you kindly fold this into the patch in your tree? > > > > Thanks. > > > > --->8--- > > From a33c480160904cc9807a448960151ac4c534 Mon Sep 17 00:00:00 2001 > > From: Joonsoo Kim > > Date: Fri, 28 Nov 2014 16:05:32 +0900 > > Subject: [PATCH] mm/debug_pagealloc: remove obsolete Kconfig options > > > > These are obsolete since commit "mm/debug-pagealloc: prepare boottime > > configurable" is merged. So, remove it. > > > > [pebo...@tiscali.nl: find obsolete Kconfig options] > > Signed-off-by: Joonsoo Kim > > --- > > mm/Kconfig.debug |9 - > > 1 file changed, 9 deletions(-) > > > > diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug > > index 56badfc..957d3da 100644 > > --- a/mm/Kconfig.debug > > +++ b/mm/Kconfig.debug > > @@ -14,7 +14,6 @@ config DEBUG_PAGEALLOC > > depends on !KMEMCHECK > > select PAGE_EXTENSION > > select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC > > - select PAGE_GUARD if ARCH_SUPPORTS_DEBUG_PAGEALLOC > > ---help--- > > Unmap pages from the kernel linear mapping after free_pages(). > > This results in a large slowdown, but helps to find certain types > > @@ -27,13 +26,5 @@ config DEBUG_PAGEALLOC > > that would result in incorrect warnings of memory corruption after > > a resume because free pages are not saved to the suspend image. > > > > -config WANT_PAGE_DEBUG_FLAGS > > - bool > > - > > config PAGE_POISONING > > bool > > - select WANT_PAGE_DEBUG_FLAGS > > - > > -config PAGE_GUARD > > - bool > > - select WANT_PAGE_DEBUG_FLAGS > > This patch didn't make it into v3.19-rc1. And I think it never entered > linux-next. Did this fall through the cracks or was there some other > issue with this patch? Hello, I guess that it is just missed. I re-sent the patch to Andrew a while ago. Thank you for reporting. Thanks. -- 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 v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
Hi Joonsoo, On Fri, 2014-11-28 at 16:35 +0900, Joonsoo Kim wrote: > Hello, Paul. > > Thanks for spotting this. > I attach the patch. :) > > Andrew, > Could you kindly fold this into the patch in your tree? > > Thanks. > > --->8--- > From a33c480160904cc9807a448960151ac4c534 Mon Sep 17 00:00:00 2001 > From: Joonsoo Kim > Date: Fri, 28 Nov 2014 16:05:32 +0900 > Subject: [PATCH] mm/debug_pagealloc: remove obsolete Kconfig options > > These are obsolete since commit "mm/debug-pagealloc: prepare boottime > configurable" is merged. So, remove it. > > [pebo...@tiscali.nl: find obsolete Kconfig options] > Signed-off-by: Joonsoo Kim > --- > mm/Kconfig.debug |9 - > 1 file changed, 9 deletions(-) > > diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug > index 56badfc..957d3da 100644 > --- a/mm/Kconfig.debug > +++ b/mm/Kconfig.debug > @@ -14,7 +14,6 @@ config DEBUG_PAGEALLOC > depends on !KMEMCHECK > select PAGE_EXTENSION > select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC > - select PAGE_GUARD if ARCH_SUPPORTS_DEBUG_PAGEALLOC > ---help--- > Unmap pages from the kernel linear mapping after free_pages(). > This results in a large slowdown, but helps to find certain types > @@ -27,13 +26,5 @@ config DEBUG_PAGEALLOC > that would result in incorrect warnings of memory corruption after > a resume because free pages are not saved to the suspend image. > > -config WANT_PAGE_DEBUG_FLAGS > - bool > - > config PAGE_POISONING > bool > - select WANT_PAGE_DEBUG_FLAGS > - > -config PAGE_GUARD > - bool > - select WANT_PAGE_DEBUG_FLAGS This patch didn't make it into v3.19-rc1. And I think it never entered linux-next. Did this fall through the cracks or was there some other issue with this patch? Thanks, Paul Bolle -- 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 v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
On Mon, Dec 22, 2014 at 10:10:42AM +0100, Paul Bolle wrote: Hi Joonsoo, On Fri, 2014-11-28 at 16:35 +0900, Joonsoo Kim wrote: Hello, Paul. Thanks for spotting this. I attach the patch. :) Andrew, Could you kindly fold this into the patch in your tree? Thanks. ---8--- From a33c480160904cc9807a448960151ac4c534 Mon Sep 17 00:00:00 2001 From: Joonsoo Kim iamjoonsoo@lge.com Date: Fri, 28 Nov 2014 16:05:32 +0900 Subject: [PATCH] mm/debug_pagealloc: remove obsolete Kconfig options These are obsolete since commit mm/debug-pagealloc: prepare boottime configurable is merged. So, remove it. [pebo...@tiscali.nl: find obsolete Kconfig options] Signed-off-by: Joonsoo Kim iamjoonsoo@lge.com --- mm/Kconfig.debug |9 - 1 file changed, 9 deletions(-) diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug index 56badfc..957d3da 100644 --- a/mm/Kconfig.debug +++ b/mm/Kconfig.debug @@ -14,7 +14,6 @@ config DEBUG_PAGEALLOC depends on !KMEMCHECK select PAGE_EXTENSION select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC - select PAGE_GUARD if ARCH_SUPPORTS_DEBUG_PAGEALLOC ---help--- Unmap pages from the kernel linear mapping after free_pages(). This results in a large slowdown, but helps to find certain types @@ -27,13 +26,5 @@ config DEBUG_PAGEALLOC that would result in incorrect warnings of memory corruption after a resume because free pages are not saved to the suspend image. -config WANT_PAGE_DEBUG_FLAGS - bool - config PAGE_POISONING bool - select WANT_PAGE_DEBUG_FLAGS - -config PAGE_GUARD - bool - select WANT_PAGE_DEBUG_FLAGS This patch didn't make it into v3.19-rc1. And I think it never entered linux-next. Did this fall through the cracks or was there some other issue with this patch? Hello, I guess that it is just missed. I re-sent the patch to Andrew a while ago. Thank you for reporting. Thanks. -- 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 v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
Hi Joonsoo, On Fri, 2014-11-28 at 16:35 +0900, Joonsoo Kim wrote: Hello, Paul. Thanks for spotting this. I attach the patch. :) Andrew, Could you kindly fold this into the patch in your tree? Thanks. ---8--- From a33c480160904cc9807a448960151ac4c534 Mon Sep 17 00:00:00 2001 From: Joonsoo Kim iamjoonsoo@lge.com Date: Fri, 28 Nov 2014 16:05:32 +0900 Subject: [PATCH] mm/debug_pagealloc: remove obsolete Kconfig options These are obsolete since commit mm/debug-pagealloc: prepare boottime configurable is merged. So, remove it. [pebo...@tiscali.nl: find obsolete Kconfig options] Signed-off-by: Joonsoo Kim iamjoonsoo@lge.com --- mm/Kconfig.debug |9 - 1 file changed, 9 deletions(-) diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug index 56badfc..957d3da 100644 --- a/mm/Kconfig.debug +++ b/mm/Kconfig.debug @@ -14,7 +14,6 @@ config DEBUG_PAGEALLOC depends on !KMEMCHECK select PAGE_EXTENSION select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC - select PAGE_GUARD if ARCH_SUPPORTS_DEBUG_PAGEALLOC ---help--- Unmap pages from the kernel linear mapping after free_pages(). This results in a large slowdown, but helps to find certain types @@ -27,13 +26,5 @@ config DEBUG_PAGEALLOC that would result in incorrect warnings of memory corruption after a resume because free pages are not saved to the suspend image. -config WANT_PAGE_DEBUG_FLAGS - bool - config PAGE_POISONING bool - select WANT_PAGE_DEBUG_FLAGS - -config PAGE_GUARD - bool - select WANT_PAGE_DEBUG_FLAGS This patch didn't make it into v3.19-rc1. And I think it never entered linux-next. Did this fall through the cracks or was there some other issue with this patch? Thanks, Paul Bolle -- 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 v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
On Thu, Nov 27, 2014 at 01:35:39PM +0100, Paul Bolle wrote: > Joonsoo, > > On Mon, 2014-11-24 at 17:15 +0900, Joonsoo Kim wrote: > > Until now, debug-pagealloc needs extra flags in struct page, so we need > > to recompile whole source code when we decide to use it. This is really > > painful, because it takes some time to recompile and sometimes rebuild is > > not possible due to third party module depending on struct page. > > So, we can't use this good feature in many cases. > > > > Now, we have the page extension feature that allows us to insert > > extra flags to outside of struct page. This gets rid of third party module > > issue mentioned above. And, this allows us to determine if we need extra > > memory for this page extension in boottime. With these property, we can > > avoid using debug-pagealloc in boottime with low computational overhead > > in the kernel built with CONFIG_DEBUG_PAGEALLOC. This will help our > > development process greatly. > > > > This patch is the preparation step to achive above goal. debug-pagealloc > > originally uses extra field of struct page, but, after this patch, it > > will use field of struct page_ext. Because memory for page_ext is > > allocated later than initialization of page allocator in CONFIG_SPARSEMEM, > > we should disable debug-pagealloc feature temporarily until initialization > > of page_ext. This patch implements this. > > > > v2: fix compile error on CONFIG_PAGE_POISONING > > > > Signed-off-by: Joonsoo Kim > > This patch is included in today's linux-next (ie, next-2o0141127) as > commit 1e491e9be4c9 ("mm/debug-pagealloc: prepare boottime configurable > on/off"). > > > [...] > > > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > > index 33a8acf..c7b22e7 100644 > > --- a/include/linux/mm_types.h > > +++ b/include/linux/mm_types.h > > @@ -10,7 +10,6 @@ > > #include > > #include > > #include > > -#include > > #include > > #include > > #include > > @@ -186,9 +185,6 @@ struct page { > > void *virtual; /* Kernel virtual address (NULL if > >not kmapped, ie. highmem) */ > > #endif /* WANT_PAGE_VIRTUAL */ > > -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS > > - unsigned long debug_flags; /* Use atomic bitops on this */ > > -#endif > > > > #ifdef CONFIG_KMEMCHECK > > /* > > diff --git a/include/linux/page-debug-flags.h > > b/include/linux/page-debug-flags.h > > deleted file mode 100644 > > index 22691f61..000 > > --- a/include/linux/page-debug-flags.h > > +++ /dev/null > > @@ -1,32 +0,0 @@ > > -#ifndef LINUX_PAGE_DEBUG_FLAGS_H > > -#define LINUX_PAGE_DEBUG_FLAGS_H > > - > > -/* > > - * page->debug_flags bits: > > - * > > - * PAGE_DEBUG_FLAG_POISON is set for poisoned pages. This is used to > > - * implement generic debug pagealloc feature. The pages are filled with > > - * poison patterns and set this flag after free_pages(). The poisoned > > - * pages are verified whether the patterns are not corrupted and clear > > - * the flag before alloc_pages(). > > - */ > > - > > -enum page_debug_flags { > > - PAGE_DEBUG_FLAG_POISON, /* Page is poisoned */ > > - PAGE_DEBUG_FLAG_GUARD, > > -}; > > - > > -/* > > - * Ensure that CONFIG_WANT_PAGE_DEBUG_FLAGS reliably > > - * gets turned off when no debug features are enabling it! > > - */ > > - > > -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS > > -#if !defined(CONFIG_PAGE_POISONING) && \ > > -!defined(CONFIG_PAGE_GUARD) \ > > -/* && !defined(CONFIG_PAGE_DEBUG_SOMETHING_ELSE) && ... */ > > -#error WANT_PAGE_DEBUG_FLAGS is turned on with no debug features! > > -#endif > > -#endif /* CONFIG_WANT_PAGE_DEBUG_FLAGS */ > > - > > -#endif /* LINUX_PAGE_DEBUG_FLAGS_H */ > > This remove all uses of CONFIG_WANT_PAGE_DEBUG_FLAGS and > CONFIG_PAGE_GUARD. So the Kconfig symbols WANT_PAGE_DEBUG_FLAGS and > PAGE_GUARD are now unused. > > Should I submit the trivial patch to remove these symbols or is a patch > that does that queued already? Hello, Paul. Thanks for spotting this. I attach the patch. :) Andrew, Could you kindly fold this into the patch in your tree? Thanks. --->8--- >From a33c480160904cc9807a448960151ac4c534 Mon Sep 17 00:00:00 2001 From: Joonsoo Kim Date: Fri, 28 Nov 2014 16:05:32 +0900 Subject: [PATCH] mm/debug_pagealloc: remove obsolete Kconfig options These are obsolete since commit "mm/debug-pagealloc: prepare boottime configurable" is merged. So, remove it. [pebo...@tiscali.nl: find obsolete Kconfig options] Signed-off-by: Joonsoo Kim --- mm/Kconfig.debug |9 - 1 file changed, 9 deletions(-) diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug index 56badfc..957d3da 100644 --- a/mm/Kconfig.debug +++ b/mm/Kconfig.debug @@ -14,7 +14,6 @@ config DEBUG_PAGEALLOC depends on !KMEMCHECK select PAGE_EXTENSION select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC - select PAGE_GUARD if ARCH_SUPPORTS_DEBUG_PAGEALLOC
Re: [PATCH v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
Joonsoo, On Mon, 2014-11-24 at 17:15 +0900, Joonsoo Kim wrote: > Until now, debug-pagealloc needs extra flags in struct page, so we need > to recompile whole source code when we decide to use it. This is really > painful, because it takes some time to recompile and sometimes rebuild is > not possible due to third party module depending on struct page. > So, we can't use this good feature in many cases. > > Now, we have the page extension feature that allows us to insert > extra flags to outside of struct page. This gets rid of third party module > issue mentioned above. And, this allows us to determine if we need extra > memory for this page extension in boottime. With these property, we can > avoid using debug-pagealloc in boottime with low computational overhead > in the kernel built with CONFIG_DEBUG_PAGEALLOC. This will help our > development process greatly. > > This patch is the preparation step to achive above goal. debug-pagealloc > originally uses extra field of struct page, but, after this patch, it > will use field of struct page_ext. Because memory for page_ext is > allocated later than initialization of page allocator in CONFIG_SPARSEMEM, > we should disable debug-pagealloc feature temporarily until initialization > of page_ext. This patch implements this. > > v2: fix compile error on CONFIG_PAGE_POISONING > > Signed-off-by: Joonsoo Kim This patch is included in today's linux-next (ie, next-2o0141127) as commit 1e491e9be4c9 ("mm/debug-pagealloc: prepare boottime configurable on/off"). > [...] > > diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h > index 33a8acf..c7b22e7 100644 > --- a/include/linux/mm_types.h > +++ b/include/linux/mm_types.h > @@ -10,7 +10,6 @@ > #include > #include > #include > -#include > #include > #include > #include > @@ -186,9 +185,6 @@ struct page { > void *virtual; /* Kernel virtual address (NULL if > not kmapped, ie. highmem) */ > #endif /* WANT_PAGE_VIRTUAL */ > -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS > - unsigned long debug_flags; /* Use atomic bitops on this */ > -#endif > > #ifdef CONFIG_KMEMCHECK > /* > diff --git a/include/linux/page-debug-flags.h > b/include/linux/page-debug-flags.h > deleted file mode 100644 > index 22691f61..000 > --- a/include/linux/page-debug-flags.h > +++ /dev/null > @@ -1,32 +0,0 @@ > -#ifndef LINUX_PAGE_DEBUG_FLAGS_H > -#define LINUX_PAGE_DEBUG_FLAGS_H > - > -/* > - * page->debug_flags bits: > - * > - * PAGE_DEBUG_FLAG_POISON is set for poisoned pages. This is used to > - * implement generic debug pagealloc feature. The pages are filled with > - * poison patterns and set this flag after free_pages(). The poisoned > - * pages are verified whether the patterns are not corrupted and clear > - * the flag before alloc_pages(). > - */ > - > -enum page_debug_flags { > - PAGE_DEBUG_FLAG_POISON, /* Page is poisoned */ > - PAGE_DEBUG_FLAG_GUARD, > -}; > - > -/* > - * Ensure that CONFIG_WANT_PAGE_DEBUG_FLAGS reliably > - * gets turned off when no debug features are enabling it! > - */ > - > -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS > -#if !defined(CONFIG_PAGE_POISONING) && \ > -!defined(CONFIG_PAGE_GUARD) \ > -/* && !defined(CONFIG_PAGE_DEBUG_SOMETHING_ELSE) && ... */ > -#error WANT_PAGE_DEBUG_FLAGS is turned on with no debug features! > -#endif > -#endif /* CONFIG_WANT_PAGE_DEBUG_FLAGS */ > - > -#endif /* LINUX_PAGE_DEBUG_FLAGS_H */ This remove all uses of CONFIG_WANT_PAGE_DEBUG_FLAGS and CONFIG_PAGE_GUARD. So the Kconfig symbols WANT_PAGE_DEBUG_FLAGS and PAGE_GUARD are now unused. Should I submit the trivial patch to remove these symbols or is a patch that does that queued already? Paul Bolle -- 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 v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
Joonsoo, On Mon, 2014-11-24 at 17:15 +0900, Joonsoo Kim wrote: Until now, debug-pagealloc needs extra flags in struct page, so we need to recompile whole source code when we decide to use it. This is really painful, because it takes some time to recompile and sometimes rebuild is not possible due to third party module depending on struct page. So, we can't use this good feature in many cases. Now, we have the page extension feature that allows us to insert extra flags to outside of struct page. This gets rid of third party module issue mentioned above. And, this allows us to determine if we need extra memory for this page extension in boottime. With these property, we can avoid using debug-pagealloc in boottime with low computational overhead in the kernel built with CONFIG_DEBUG_PAGEALLOC. This will help our development process greatly. This patch is the preparation step to achive above goal. debug-pagealloc originally uses extra field of struct page, but, after this patch, it will use field of struct page_ext. Because memory for page_ext is allocated later than initialization of page allocator in CONFIG_SPARSEMEM, we should disable debug-pagealloc feature temporarily until initialization of page_ext. This patch implements this. v2: fix compile error on CONFIG_PAGE_POISONING Signed-off-by: Joonsoo Kim iamjoonsoo@lge.com This patch is included in today's linux-next (ie, next-2o0141127) as commit 1e491e9be4c9 (mm/debug-pagealloc: prepare boottime configurable on/off). [...] diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 33a8acf..c7b22e7 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -10,7 +10,6 @@ #include linux/rwsem.h #include linux/completion.h #include linux/cpumask.h -#include linux/page-debug-flags.h #include linux/uprobes.h #include linux/page-flags-layout.h #include asm/page.h @@ -186,9 +185,6 @@ struct page { void *virtual; /* Kernel virtual address (NULL if not kmapped, ie. highmem) */ #endif /* WANT_PAGE_VIRTUAL */ -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS - unsigned long debug_flags; /* Use atomic bitops on this */ -#endif #ifdef CONFIG_KMEMCHECK /* diff --git a/include/linux/page-debug-flags.h b/include/linux/page-debug-flags.h deleted file mode 100644 index 22691f61..000 --- a/include/linux/page-debug-flags.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef LINUX_PAGE_DEBUG_FLAGS_H -#define LINUX_PAGE_DEBUG_FLAGS_H - -/* - * page-debug_flags bits: - * - * PAGE_DEBUG_FLAG_POISON is set for poisoned pages. This is used to - * implement generic debug pagealloc feature. The pages are filled with - * poison patterns and set this flag after free_pages(). The poisoned - * pages are verified whether the patterns are not corrupted and clear - * the flag before alloc_pages(). - */ - -enum page_debug_flags { - PAGE_DEBUG_FLAG_POISON, /* Page is poisoned */ - PAGE_DEBUG_FLAG_GUARD, -}; - -/* - * Ensure that CONFIG_WANT_PAGE_DEBUG_FLAGS reliably - * gets turned off when no debug features are enabling it! - */ - -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS -#if !defined(CONFIG_PAGE_POISONING) \ -!defined(CONFIG_PAGE_GUARD) \ -/* !defined(CONFIG_PAGE_DEBUG_SOMETHING_ELSE) ... */ -#error WANT_PAGE_DEBUG_FLAGS is turned on with no debug features! -#endif -#endif /* CONFIG_WANT_PAGE_DEBUG_FLAGS */ - -#endif /* LINUX_PAGE_DEBUG_FLAGS_H */ This remove all uses of CONFIG_WANT_PAGE_DEBUG_FLAGS and CONFIG_PAGE_GUARD. So the Kconfig symbols WANT_PAGE_DEBUG_FLAGS and PAGE_GUARD are now unused. Should I submit the trivial patch to remove these symbols or is a patch that does that queued already? Paul Bolle -- 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 v3 2/8] mm/debug-pagealloc: prepare boottime configurable on/off
On Thu, Nov 27, 2014 at 01:35:39PM +0100, Paul Bolle wrote: Joonsoo, On Mon, 2014-11-24 at 17:15 +0900, Joonsoo Kim wrote: Until now, debug-pagealloc needs extra flags in struct page, so we need to recompile whole source code when we decide to use it. This is really painful, because it takes some time to recompile and sometimes rebuild is not possible due to third party module depending on struct page. So, we can't use this good feature in many cases. Now, we have the page extension feature that allows us to insert extra flags to outside of struct page. This gets rid of third party module issue mentioned above. And, this allows us to determine if we need extra memory for this page extension in boottime. With these property, we can avoid using debug-pagealloc in boottime with low computational overhead in the kernel built with CONFIG_DEBUG_PAGEALLOC. This will help our development process greatly. This patch is the preparation step to achive above goal. debug-pagealloc originally uses extra field of struct page, but, after this patch, it will use field of struct page_ext. Because memory for page_ext is allocated later than initialization of page allocator in CONFIG_SPARSEMEM, we should disable debug-pagealloc feature temporarily until initialization of page_ext. This patch implements this. v2: fix compile error on CONFIG_PAGE_POISONING Signed-off-by: Joonsoo Kim iamjoonsoo@lge.com This patch is included in today's linux-next (ie, next-2o0141127) as commit 1e491e9be4c9 (mm/debug-pagealloc: prepare boottime configurable on/off). [...] diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 33a8acf..c7b22e7 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h @@ -10,7 +10,6 @@ #include linux/rwsem.h #include linux/completion.h #include linux/cpumask.h -#include linux/page-debug-flags.h #include linux/uprobes.h #include linux/page-flags-layout.h #include asm/page.h @@ -186,9 +185,6 @@ struct page { void *virtual; /* Kernel virtual address (NULL if not kmapped, ie. highmem) */ #endif /* WANT_PAGE_VIRTUAL */ -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS - unsigned long debug_flags; /* Use atomic bitops on this */ -#endif #ifdef CONFIG_KMEMCHECK /* diff --git a/include/linux/page-debug-flags.h b/include/linux/page-debug-flags.h deleted file mode 100644 index 22691f61..000 --- a/include/linux/page-debug-flags.h +++ /dev/null @@ -1,32 +0,0 @@ -#ifndef LINUX_PAGE_DEBUG_FLAGS_H -#define LINUX_PAGE_DEBUG_FLAGS_H - -/* - * page-debug_flags bits: - * - * PAGE_DEBUG_FLAG_POISON is set for poisoned pages. This is used to - * implement generic debug pagealloc feature. The pages are filled with - * poison patterns and set this flag after free_pages(). The poisoned - * pages are verified whether the patterns are not corrupted and clear - * the flag before alloc_pages(). - */ - -enum page_debug_flags { - PAGE_DEBUG_FLAG_POISON, /* Page is poisoned */ - PAGE_DEBUG_FLAG_GUARD, -}; - -/* - * Ensure that CONFIG_WANT_PAGE_DEBUG_FLAGS reliably - * gets turned off when no debug features are enabling it! - */ - -#ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS -#if !defined(CONFIG_PAGE_POISONING) \ -!defined(CONFIG_PAGE_GUARD) \ -/* !defined(CONFIG_PAGE_DEBUG_SOMETHING_ELSE) ... */ -#error WANT_PAGE_DEBUG_FLAGS is turned on with no debug features! -#endif -#endif /* CONFIG_WANT_PAGE_DEBUG_FLAGS */ - -#endif /* LINUX_PAGE_DEBUG_FLAGS_H */ This remove all uses of CONFIG_WANT_PAGE_DEBUG_FLAGS and CONFIG_PAGE_GUARD. So the Kconfig symbols WANT_PAGE_DEBUG_FLAGS and PAGE_GUARD are now unused. Should I submit the trivial patch to remove these symbols or is a patch that does that queued already? Hello, Paul. Thanks for spotting this. I attach the patch. :) Andrew, Could you kindly fold this into the patch in your tree? Thanks. ---8--- From a33c480160904cc9807a448960151ac4c534 Mon Sep 17 00:00:00 2001 From: Joonsoo Kim iamjoonsoo@lge.com Date: Fri, 28 Nov 2014 16:05:32 +0900 Subject: [PATCH] mm/debug_pagealloc: remove obsolete Kconfig options These are obsolete since commit mm/debug-pagealloc: prepare boottime configurable is merged. So, remove it. [pebo...@tiscali.nl: find obsolete Kconfig options] Signed-off-by: Joonsoo Kim iamjoonsoo@lge.com --- mm/Kconfig.debug |9 - 1 file changed, 9 deletions(-) diff --git a/mm/Kconfig.debug b/mm/Kconfig.debug index 56badfc..957d3da 100644 --- a/mm/Kconfig.debug +++ b/mm/Kconfig.debug @@ -14,7 +14,6 @@ config DEBUG_PAGEALLOC depends on !KMEMCHECK select PAGE_EXTENSION select PAGE_POISONING if !ARCH_SUPPORTS_DEBUG_PAGEALLOC - select PAGE_GUARD if ARCH_SUPPORTS_DEBUG_PAGEALLOC ---help---