Re: [PATCH v2 03/13] mm: Add generic p?d_large() macros
From: Kirill A. Shutemov <hidden>
Date: 2019-02-21 14:57:13
Also in:
linux-mm, lkml
On Thu, Feb 21, 2019 at 02:46:18PM +0000, Steven Price wrote:
On 21/02/2019 14:28, Kirill A. Shutemov wrote:quoted
On Thu, Feb 21, 2019 at 11:34:52AM +0000, Steven Price wrote:quoted
From: James Morse <james.morse@arm.com> Exposing the pud/pgd levels of the page tables to walk_page_range() means we may come across the exotic large mappings that come with large areas of contiguous memory (such as the kernel's linear map). For architectures that don't provide p?d_large() macros, provided a does nothing default.Nak, sorry. Power will get broken by the patch. It has pmd_large() inline function, that will be overwritten by the define from this patch. I believe it requires more ground work on arch side in general. All architectures that has huge page support has to provide these helpers (and matching defines) before you can use it in a generic code.Sorry about that, I had compile tested on power, but obviously not the right config to actually see the breakage.
I don't think you'll catch it at compile-time. It would silently override the helper with always-false.
I'll do some grepping - hopefully this is just a case of exposing the functions/defines that already exist for those architectures.
I see the same type of breakage on s390 and sparc.
Note that in terms of the new page walking code, these new defines are only used when walking a page table without a VMA (which isn't currently done), so architectures which don't use p?d_large currently will work fine with the generic versions. They only need to provide meaningful definitions when switching to use the walk-without-a-VMA functionality.
How other architectures would know that they need to provide the helpers to get walk-without-a-VMA functionality? This looks very fragile to me. -- Kirill A. Shutemov _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel