Re: [PATCH 03/19] arm: expose number of page table levels on Kconfig level

From: Kirill A. Shutemov
Date: Fri Jan 30 2015 - 11:25:20 EST


On Fri, Jan 30, 2015 at 04:02:13PM +0000, Russell King - ARM Linux wrote:
> It'd be nice to see the cover for this series so that people know the
> reason behind this change is. Maybe it'd be a good idea to add a
> pointer or some description below the "---" to such patches which
> are otherwise totally meaningless to the people you add to the Cc
> line?

Okay, some background:

I've implemented accounting for pmd page tables as we have for pte (see
mm->nr_ptes). It's requires a new counter in mm_struct: mm->nr_pmds.

But the feature doesn't make any sense if an architecture has PMD level
folded and it would be nice get rid of the counter in this case.

The problem is that we cannot use __PAGETABLE_PMD_FOLDED in
<linux/mm_types.h> due to circular dependencies:

<linux/mm_types> -> <asm/pgtable.h> -> <linux/mm_types.h>

In most cases <asm/pgtable.h> wants <linux/mm_types.h> to get definition
of struct page and struct vm_area_struct. I've tried to split mm_struct
into separate header file to be able to user <asm/pgtable.h> there.

But it doesn't fly on some architectures, including ARM: it wants
mm_struct <asm/pgtable.h> to implement tlb flushing. I don't see how to
fix it without massive de-inlining or coverting a lot for inline functions
to macros.

This is other approach: expose number of page tables in use via Kconfig
and use it in <linux/mm_types.h> instead of __PAGETABLE_PMD_FOLDED from
<asm/pgtable.h>.

--
Kirill A. Shutemov
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/