On Thu, 2009-10-08 at 16:42 +0200, Ralf Baechle wrote: > On Thu, Oct 08, 2009 at 04:57:32PM +0800, 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: > > Hm... All that pfn_valid() indicates is that a page frame number is valid > to index a pfn. That is that a pfn is valid to index the mem_map array. > > > $ 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. > > Are the non-memory parts marked as reserved? > No, so, is that a need to mark them? Regrads, Wu Zhangjin