[PATCH] ARM: Fix virtual kernel memory printing for sparsemem

Marek Vasut marek.vasut at gmail.com
Tue May 4 13:00:17 EDT 2010


Dne Út 4. května 2010 18:28:56 Catalin Marinas napsal(a):
> On Tue, 2010-05-04 at 17:18 +0100, Russell King - ARM Linux wrote:
> > On Tue, May 04, 2010 at 06:13:28PM +0200, Marek Vasut wrote:
> > > Dne Čt 25. března 2010 17:01:26 Catalin Marinas napsal(a):
> > > > On Thu, 2010-03-25 at 15:30 +0000, Russell King - ARM Linux wrote:
> > > > > On Thu, Mar 25, 2010 at 03:24:29PM +0000, Catalin Marinas wrote:
> > > > > > On Thu, 2010-03-25 at 15:10 +0000, Russell King - ARM Linux wrote:
> > > > > > > While this looks fine, I'd like to see a lot of Tested-by's
> > > > > > > against this before it's merged - we've had similar code in
> > > > > > > show_mem() which has proven to be quite problematical to get
> > > > > > > right for all the various different combinations we have.
> > > > > > > 
> > > > > > > However, we also have the same method in show_mem() which we
> > > > > > > know works fine, so I'd also like to see the problem with
> > > > > > > using it in mem_init() fully analysed - rather than a
> > > > > > > "possibly because".
> > > > > > 
> > > > > > I can remove the "possibly" part :). The page_count() is given a
> > > > > > page with some random flags and it thinks it's a compound page.
> > > > > > It than tries to access page->first which isn't set, hence the
> > > > > > error.
> > > > > > 
> > > > > > The original code assumes that for a given node the map is
> > > > > > contiguous and it calculates the page as (map + pfn). This is
> > > > > > only true for flatmem. With sparsemem the page calculation is a
> > > > > > bit more complicated but handled by pfn_to_page().
> > > > > 
> > > > > And show_mem() ?  It seems to suffer from the same problem.
> > > > 
> > > > And that's a patch which fixes both (but as you said, it would be
> > > > good if more people test it on various platforms).
> > > > 
> > > > 
> > > > ARM: Fix kernel memory printing for sparsemem
> > > > 
> > > > From: Catalin Marinas <catalin.marinas at arm.com>
> > > > 
> > > > The show_mem() and mem_init() function are assuming that the page map
> > > > is contiguous and calculates the start and end page of a bank using
> > > > (map + pfn). This fails with SPARSEMEM where pfn_to_page() must be
> > > > used.
> > > > 
> > > > Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>
> > > > Cc: Will Deacon <Will.Deacon at arm.com>
> > > > Cc: Andreas Fenkart <andreas.fenkart at streamunlimited.com>
> > > 
> > > Works perfectly on my machine. I have a PXA270 based device where I
> > > have to use sparsemem. Thanks, you can add my:
> > > 
> > > Tested-by: Marek Vasut <marek.vasut at gmail.com>
> > > 
> > > Russell, the patch looks fine, please apply, the stuff is really
> > > broken.
> > 
> > It's great to see patches getting tested by others ;)
> > 
> > Catalin - mind submitting this with Marek's tested-by please?
> 
> Done (patch 6093/1).

Thanks for the fast response. Catalin, thanks for the patch.

Cheers



More information about the linux-arm-kernel mailing list