Hello Martin,
Martin Schwidefsky wrote:
> On Mon, 2008-02-25 at 14:26 +0100, Uwe Kleine-König wrote:
> > I see the following:
> >
> > / # for i in 1 2 3; do grep PageTables /proc/meminfo; done
> > PageTables: 4 kB
> > PageTables: 4294967292 kB
> > PageTables: 4294967284 kB
> >
> > and I bisected it down to 2f569af (CONFIG_HIGHPTE vs. sub-page page
> > tables.) This still happens in 2.6.25-rc3.
> >
> > I have not investigated further, so I cannot tell if it's only the
> > output in meminfo that is broken.
> >
> > This is on ARCH=arm, on a Digi cc9p9360 with ns9xxx_defconfig.
>
> Hmm, not good. The number obviously went negative. There is an imbalance
> in the number of pgtable_page_ctor vs. pgtable_page_dtor. Could you try
> this patch and watch for warnings?
It doesn't trigger.
And your assumption that there is an imbalance between pgtable_page_ctor
and pgtable_page_dtor is wrong, too. I added some debug output to both
of the two functions and for one grep both are executed seven times.
Moreover a "grep PageTables /proc/meminfo" resulted in
9x __dec_zone_state with item == NR_PAGETABLE
7x __inc_zone_state with item == NR_PAGETABLE
All those 16 calles where done via __(inc|dec)_zone_page_state.
... some time later ...
I got it. This code is currently in free_pgd_slow():
pte = pmd_page(*pmd);
pmd_clear(pmd);
dec_zone_page_state(virt_to_page((unsigned long *)pgd), NR_PAGETABLE);
pte_lock_deinit(pte);
pte_free(mm, pte);
pmd_free(mm, pmd);
So because (since 2f569af) pte_free does dec_zone_page_state and
pte_lock_deinit, these two happen twice here.
Removing the calls to dec_zone_page_state() and pte_lock_deinit() in
free_pgd_slow() fixed it for me.
For a complete fix we might want to change the type of pte?
Best regards
Uwe
--
Uwe Kleine-König, Software Engineer
Digi International GmbH Branch Breisach, Küferstrasse 8, 79206 Breisach, Germany
Tax: 315/5781/0242 / VAT: DE153662976 / Reg. Amtsgericht Dortmund HRB 13962
-
To unsubscribe from this list: send the line "unsubscribe linux-arch" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html