Messages in this thread | | | Subject | Re: [PATCH] x86: fix PAE pmd_bad bootup warning | From | Dave Hansen <> | Date | Thu, 08 May 2008 08:51:22 -0700 |
| |
On Thu, 2008-05-08 at 17:11 +0200, Hans Rosenfeld wrote: > > On Thu, May 08, 2008 at 07:52:30AM -0700, Dave Hansen wrote: > > On Thu, 2008-05-08 at 16:34 +0200, Hans Rosenfeld wrote: > > > The huge page is leaked only when the > > > /proc/self/pagemap entry for the huge page is read. > > > > Well, that's an interesting data point! :) > > > > Are you running any of your /proc/<pid>/pagemap patches? > > No additional patches. The problem already existed before we agreed on > the change to the pagemap code to just include the page size in the > values returned, and not doing any special huge page handling. I suspect > the page walking code used by /proc/pid/pagemap is doing something nasty > when it sees a huge page as it doesn't know how to handle it.
Is there anything in your dmesg?
static int walk_pmd_range(pud_t *pud, unsigned long addr, unsigned long end, const struct mm_walk *walk, void *private) { pmd_t *pmd; unsigned long next; int err = 0;
pmd = pmd_offset(pud, addr); do { next = pmd_addr_end(addr, end); if (pmd_none_or_clear_bad(pmd)) { if (walk->pte_hole) err = walk->pte_hole(addr, next, private); if (err) break; continue;
There was a discussion on LKML in the last couple of days about pmd_bad() triggering on huge pages. Perhaps we're clearing the mapping with the pmd_none_or_clear_bad(), and *THAT* is leaking the page.
-- Dave
| |