linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wu Zhangjin <wuzhangjin@gmail.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: linux-mips@linux-mips.org, Ralf Baechle <ralf@linux-mips.org>,
	"Rafael J. Wysocki" <rjw@sisk.pl>
Subject: Re: [PATCH] MIPS: fix pfn_valid() for FLAGMEM
Date: Thu, 08 Oct 2009 18:33:39 +0800	[thread overview]
Message-ID: <1254998019.14496.21.camel@falcon> (raw)
In-Reply-To: <20091008092903.GA27054@elf.ucw.cz>

Hi,

On Thu, 2009-10-08 at 11:29 +0200, Pavel Machek wrote:
> On Thu 2009-10-08 16:57:32, Wu Zhangjin wrote:
> > When CONFIG_FLAGMEM enabled, STD/Hiberation will fail on YeeLoong
> > laptop, This patch fix it:
> > 
> > if pfn is between min_low_pfn and max_mapnr, the old pfn_valid() will
> > return TRUE, but in reality, if the memory is not continuous, it should
> > be false. for example:
> > 
> > $ cat /proc/iomem | grep "System RAM"
> > 00000000-0fffffff : System RAM
> > 90000000-bfffffff : System RAM
> > 
> > as we can see, it is not continuous, so, some of the memory is not valid
> > but regarded as valid by pfn_valid(), and at last make STD/Hibernate
> > fail when shrinking a too large number of invalid memory.
> > 
> > Here, we fix it via checking pfn is in the "System RAM" or not, if yes,
> > return TRUE.
> 
> "return FALSE"?
> 
> > Signed-off-by: Wu Zhangjin <wuzhangjin@gmail.com>
> 
> Looks mostly ok, small comments below. 
> 
> > @@ -168,13 +168,10 @@ typedef struct { unsigned long pgprot; } pgprot_t;
> >  
> >  #ifdef CONFIG_FLATMEM
> >  
> > -#define pfn_valid(pfn)							\
> > -({									\
> > -	unsigned long __pfn = (pfn);					\
> > -	/* avoid <linux/bootmem.h> include hell */			\
> > -	extern unsigned long min_low_pfn;				\
> > -									\
> > -	__pfn >= min_low_pfn && __pfn < max_mapnr;			\
> > +#define pfn_valid(pfn)				\
> > +({						\
> > +	extern int is_pfn_valid(unsigned long); \
> > +	is_pfn_valid(pfn);			\
> >  })
> 
> "extern int pfn_valid here"
> 
> ...and get away without the ugly macro?
> 

Perhaps need to move the whole "#ifdef CONFIG_FLATMEM" to #ifndef
ASSEMBLY, otherwise,

"arch/mips/include/asm/page.h:170: Error: unrecognized opcode `extern
int pfn_valid(unsigned long)'". 

Regards,
	Wu Zhangjin

  reply	other threads:[~2009-10-08 10:34 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-10-08  8:57 [PATCH] MIPS: fix pfn_valid() for FLAGMEM Wu Zhangjin
2009-10-08  9:29 ` Pavel Machek
2009-10-08 10:33   ` Wu Zhangjin [this message]
2009-10-08 10:36     ` Pavel Machek
2009-10-08 10:57       ` Wu Zhangjin
2009-10-08  9:58 ` Sergei Shtylyov
2009-10-08 10:36   ` Wu Zhangjin
2009-10-08 14:42 ` Ralf Baechle
2009-10-08 15:46   ` Wu Zhangjin
2009-10-08 18:50     ` Ralf Baechle
2009-10-09 15:43       ` Sergei Shtylyov
2009-10-09 15:48         ` Sergei Shtylyov

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=1254998019.14496.21.camel@falcon \
    --to=wuzhangjin@gmail.com \
    --cc=linux-mips@linux-mips.org \
    --cc=pavel@ucw.cz \
    --cc=ralf@linux-mips.org \
    --cc=rjw@sisk.pl \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).