All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mel Gorman <mel@csn.ul.ie>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>,
	Jiri Slaby <jirislaby@gmail.com>,
	Maxim Levitsky <maximlevitsky@gmail.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Christoph Lameter <cl@linux-foundation.org>,
	Pekka Enberg <penberg@cs.helsinki.fi>,
	Rik van Riel <riel@redhat.com>
Subject: Re: BUG: Bad page state [was: Strange oopses in 2.6.30]
Date: Tue, 30 Jun 2009 16:11:03 +0100	[thread overview]
Message-ID: <20090630151103.GF17561@csn.ul.ie> (raw)
In-Reply-To: <20090630092847.A730.A69D9226@jp.fujitsu.com>

On Tue, Jun 30, 2009 at 09:31:04AM +0900, KOSAKI Motohiro wrote:
> Hi
> 
> Thank you new version.
> 
> > ==== CUT HERE ====
> > mm: Warn once when a page is freed with PG_mlocked set
> >     
> > When a page is freed with the PG_mlocked set, it is considered an unexpected
> > but recoverable situation. A counter records how often this event happens
> > but it is easy to miss that this event has occured at all. This patch warns
> > once when PG_mlocked is set to prompt debuggers to check the counter to
> > see how often it is happening.
> >     
> > Signed-off-by: Mel Gorman <mel@csn.ul.ie>
> > --- 
> >  mm/page_alloc.c |   16 ++++++++++++----
> >  1 file changed, 12 insertions(+), 4 deletions(-)
> > 
> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index 5d714f8..519ea6e 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -495,8 +495,16 @@ static inline void free_page_mlock(struct page *page)
> >  static void free_page_mlock(struct page *page) { }
> >  #endif
> >  
> > -static inline int free_pages_check(struct page *page)
> > -{
> > +static inline int free_pages_check(struct page *page, int wasMlocked)
> > +{
> > +	if (unlikely(wasMlocked)) {
> > +		WARN_ONCE(1, KERN_WARNING
> > +			"Page flag mlocked set for process %s at pfn:%05lx\n"
> > +			"page:%p flags:0x%lX\n",
> 
> 0x%lX is a bit redundunt.
> %lX insert "0x" string by itself, I think.
> 

It does not automatically insert the 0x for me and I just did a quick
test there. Can you double check please?

> 
> > +			current->comm, page_to_pfn(page),
> > +			page, page->flags|__PG_MLOCKED);
> > +	}
> > +
> >  	if (unlikely(page_mapcount(page) |
> >  		(page->mapping != NULL)  |
> >  		(atomic_read(&page->_count) != 0) |
> > @@ -562,7 +570,7 @@ static void __free_pages_ok(struct page *page, unsigned int order)
> >  	kmemcheck_free_shadow(page, order);
> >  
> >  	for (i = 0 ; i < (1 << order) ; ++i)
> > -		bad += free_pages_check(page + i);
> > +		bad += free_pages_check(page + i, wasMlocked);
> >  	if (bad)
> >  		return;
> >  
> > @@ -1027,7 +1035,7 @@ static void free_hot_cold_page(struct page *page, int cold)
> >  
> >  	if (PageAnon(page))
> >  		page->mapping = NULL;
> > -	if (free_pages_check(page))
> > +	if (free_pages_check(page, wasMlocked))
> >  		return;
> >  
> >  	if (!PageHighMem(page)) {
> 
> Other part looks fine. thanks.
> 
> 
> 

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

WARNING: multiple messages have this Message-ID (diff)
From: Mel Gorman <mel@csn.ul.ie>
To: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Lee Schermerhorn <Lee.Schermerhorn@hp.com>,
	Jiri Slaby <jirislaby@gmail.com>,
	Maxim Levitsky <maximlevitsky@gmail.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	Andrew Morton <akpm@linux-foundation.org>,
	Christoph Lameter <cl@linux-foundation.org>,
	Pekka Enberg <penberg@cs.helsinki.fi>,
	Rik van Riel <riel@redhat.com>
Subject: Re: BUG: Bad page state [was: Strange oopses in 2.6.30]
Date: Tue, 30 Jun 2009 16:11:03 +0100	[thread overview]
Message-ID: <20090630151103.GF17561@csn.ul.ie> (raw)
In-Reply-To: <20090630092847.A730.A69D9226@jp.fujitsu.com>

On Tue, Jun 30, 2009 at 09:31:04AM +0900, KOSAKI Motohiro wrote:
> Hi
> 
> Thank you new version.
> 
> > ==== CUT HERE ====
> > mm: Warn once when a page is freed with PG_mlocked set
> >     
> > When a page is freed with the PG_mlocked set, it is considered an unexpected
> > but recoverable situation. A counter records how often this event happens
> > but it is easy to miss that this event has occured at all. This patch warns
> > once when PG_mlocked is set to prompt debuggers to check the counter to
> > see how often it is happening.
> >     
> > Signed-off-by: Mel Gorman <mel@csn.ul.ie>
> > --- 
> >  mm/page_alloc.c |   16 ++++++++++++----
> >  1 file changed, 12 insertions(+), 4 deletions(-)
> > 
> > diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> > index 5d714f8..519ea6e 100644
> > --- a/mm/page_alloc.c
> > +++ b/mm/page_alloc.c
> > @@ -495,8 +495,16 @@ static inline void free_page_mlock(struct page *page)
> >  static void free_page_mlock(struct page *page) { }
> >  #endif
> >  
> > -static inline int free_pages_check(struct page *page)
> > -{
> > +static inline int free_pages_check(struct page *page, int wasMlocked)
> > +{
> > +	if (unlikely(wasMlocked)) {
> > +		WARN_ONCE(1, KERN_WARNING
> > +			"Page flag mlocked set for process %s at pfn:%05lx\n"
> > +			"page:%p flags:0x%lX\n",
> 
> 0x%lX is a bit redundunt.
> %lX insert "0x" string by itself, I think.
> 

It does not automatically insert the 0x for me and I just did a quick
test there. Can you double check please?

> 
> > +			current->comm, page_to_pfn(page),
> > +			page, page->flags|__PG_MLOCKED);
> > +	}
> > +
> >  	if (unlikely(page_mapcount(page) |
> >  		(page->mapping != NULL)  |
> >  		(atomic_read(&page->_count) != 0) |
> > @@ -562,7 +570,7 @@ static void __free_pages_ok(struct page *page, unsigned int order)
> >  	kmemcheck_free_shadow(page, order);
> >  
> >  	for (i = 0 ; i < (1 << order) ; ++i)
> > -		bad += free_pages_check(page + i);
> > +		bad += free_pages_check(page + i, wasMlocked);
> >  	if (bad)
> >  		return;
> >  
> > @@ -1027,7 +1035,7 @@ static void free_hot_cold_page(struct page *page, int cold)
> >  
> >  	if (PageAnon(page))
> >  		page->mapping = NULL;
> > -	if (free_pages_check(page))
> > +	if (free_pages_check(page, wasMlocked))
> >  		return;
> >  
> >  	if (!PageHighMem(page)) {
> 
> Other part looks fine. thanks.
> 
> 
> 

-- 
Mel Gorman
Part-time Phd Student                          Linux Technology Center
University of Limerick                         IBM Dublin Software Lab

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2009-06-30 15:11 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-19 21:48 Strange oopses in 2.6.30 Maxim Levitsky
2009-06-20 14:08 ` BUG] " Maxim Levitsky
2009-06-20 15:27   ` BUG: Bad page state [was: Strange oopses in 2.6.30] Jiri Slaby
2009-06-20 15:27     ` Jiri Slaby
2009-06-20 15:44     ` Maxim Levitsky
2009-06-20 15:44       ` Maxim Levitsky
2009-06-22  2:39     ` KOSAKI Motohiro
2009-06-22  2:39       ` KOSAKI Motohiro
2009-06-22  7:42       ` Pekka Enberg
2009-06-22  7:42         ` Pekka Enberg
2009-06-22 20:55         ` Mel Gorman
2009-06-22 20:55           ` Mel Gorman
2009-06-22  9:16       ` Mel Gorman
2009-06-22  9:16         ` Mel Gorman
2009-06-22 16:02         ` Lee Schermerhorn
2009-06-22 16:02           ` Lee Schermerhorn
2009-06-22 20:53           ` Mel Gorman
2009-06-22 20:53             ` Mel Gorman
2009-06-23 11:11             ` KOSAKI Motohiro
2009-06-23 11:11               ` KOSAKI Motohiro
2009-06-29  8:41               ` Mel Gorman
2009-06-29  8:41                 ` Mel Gorman
2009-06-29 10:18                 ` Johannes Weiner
2009-06-29 10:18                   ` Johannes Weiner
2009-06-29 10:37                   ` Mel Gorman
2009-06-29 10:37                     ` Mel Gorman
2009-06-30  0:31                 ` KOSAKI Motohiro
2009-06-30  0:31                   ` KOSAKI Motohiro
2009-06-30 15:11                   ` Mel Gorman [this message]
2009-06-30 15:11                     ` Mel Gorman
2009-06-30 16:34                   ` Mel Gorman
2009-06-30 16:34                     ` Mel Gorman
2009-06-30 23:45                     ` KOSAKI Motohiro
2009-06-30 23:45                       ` KOSAKI Motohiro
2009-06-23 11:04         ` KOSAKI Motohiro
2009-06-23 11:04           ` KOSAKI Motohiro
2009-06-20 15:40   ` BUG] Strange oopses in 2.6.30 Hugh Dickins
2009-06-20 19:26     ` Mel Gorman
2009-06-20 23:01     ` Maxim Levitsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090630151103.GF17561@csn.ul.ie \
    --to=mel@csn.ul.ie \
    --cc=Lee.Schermerhorn@hp.com \
    --cc=akpm@linux-foundation.org \
    --cc=cl@linux-foundation.org \
    --cc=jirislaby@gmail.com \
    --cc=kosaki.motohiro@jp.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=maximlevitsky@gmail.com \
    --cc=penberg@cs.helsinki.fi \
    --cc=riel@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.