On Thu, Jul 25, 2019 at 07:39:21AM -0700, Matthew Wilcox wrote: > On Thu, Jul 25, 2019 at 12:25:23PM +0530, Anshuman Khandual wrote: > > This adds a test module which will validate architecture page table helpers > > and accessors regarding compliance with generic MM semantics expectations. > > This will help various architectures in validating changes to the existing > > page table helpers or addition of new ones. > > I think this is a really good idea. > > > lib/Kconfig.debug | 14 +++ > > lib/Makefile | 1 + > > lib/test_arch_pgtable.c | 290 ++++++++++++++++++++++++++++++++++++++++++++++++ > > Is this the right place for it? I worry that lib/ is going to get overloaded > with test code, and this feels more like mm/ test code. > > > +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE > > +static void pmd_basic_tests(void) > > +{ > > + pmd_t pmd; > > + > > + pmd = mk_pmd(page, prot); > > But 'page' isn't necessarily PMD-aligned. I don't think we can rely on > architectures doing the right thing if asked to make a PMD for a randomly > aligned page. > > How about finding the physical address of something like kernel_init(), > and using the corresponding pte/pmd/pud/p4d/pgd that encompasses that > address? It's also better to pass in the pfn/page rather than using global > variables to communicate to the test functions. There are architectures (32-bit ARM) where the kernel is mapped using section mappings, and we don't expect the Linux page table walking to work for section mappings. > > + /* > > + * A huge page does not point to next level page table > > + * entry. Hence this must qualify as pmd_bad(). > > + */ > > + WARN_ON(!pmd_bad(pmd_mkhuge(pmd))); > > I didn't know that rule. This is helpful because it gives us somewhere > to document all these tricksy little rules. > > > +#ifdef CONFIG_HAVE_ARCH_TRANSPARENT_HUGEPAGE_PUD > > +static void pud_basic_tests(void) > > Is this the right ifdef? > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up