On 17/12/2025 16:46, Ritesh Harjani (IBM) wrote: > Ryan Roberts <[email protected]> writes: > >> On 17/12/2025 09:26, Kevin Brodsky wrote: >>> On 17/12/2025 05:14, Andrew Morton wrote: >>>> On Mon, 15 Dec 2025 15:03:23 +0000 Kevin Brodsky <[email protected]> >>>> wrote: >>>> >>>>> Add basic KUnit tests for the generic aspects of the lazy MMU mode: >>>>> ensure that it appears active when it should, depending on how >>>>> enable/disable and pause/resume pairs are nested. >>>> I needed this for powerpc allmodconfig; >>>> >>>> --- >>>> a/arch/powerpc/mm/book3s64/hash_tlb.c~mm-add-basic-tests-for-lazy_mmu-fix >>>> +++ a/arch/powerpc/mm/book3s64/hash_tlb.c >>>> @@ -30,6 +30,7 @@ >>>> #include <trace/events/thp.h> >>>> >>>> DEFINE_PER_CPU(struct ppc64_tlb_batch, ppc64_tlb_batch); >>>> +EXPORT_SYMBOL_GPL(ppc64_tlb_batch); >>>> >>>> /* >>>> * A linux PTE was changed and the corresponding hash table entry >>>> @@ -154,6 +155,7 @@ void __flush_tlb_pending(struct ppc64_tl >>>> flush_hash_range(i, local); >>>> batch->index = 0; >>>> } >>>> +EXPORT_SYMBOL_GPL(__flush_tlb_pending); >>>> >>>> void hash__tlb_flush(struct mmu_gather *tlb) >>>> { >>>> _ >>> Oh indeed I hadn't considered that arch_{enter,leave}_lazy_mmu_mode() >>> refer to those symbols on powerpc... Maybe a bit overkill to export >>> those just for a test module, but I'm not sure there's a good >>> alternative. Forcing LAZY_MMU_MODE_KUNIT_TEST=y is ugly as it would also >>> force KUNIT=y. Alternatively we could depend on !PPC, not pretty either. >> Does EXPORT_SYMBOL_IF_KUNIT() help? >> > yes, that make sense. Thanks for the suggestion! > I guess we will need a diff like this in that case - > > > diff --git a/arch/powerpc/mm/book3s64/hash_tlb.c > b/arch/powerpc/mm/book3s64/hash_tlb.c > index fbdeb8981ae7..ec2941cec815 100644 > --- a/arch/powerpc/mm/book3s64/hash_tlb.c > +++ b/arch/powerpc/mm/book3s64/hash_tlb.c > @@ -25,11 +25,12 @@ > #include <asm/tlb.h> > #include <asm/bug.h> > #include <asm/pte-walk.h> > - > +#include <kunit/visibility.h> > > #include <trace/events/thp.h> > > DEFINE_PER_CPU(struct ppc64_tlb_batch, ppc64_tlb_batch); > +EXPORT_SYMBOL_IF_KUNIT(ppc64_tlb_batch); > > /* > * A linux PTE was changed and the corresponding hash table entry > @@ -154,6 +155,7 @@ void __flush_tlb_pending(struct ppc64_tlb_batch *batch) > flush_hash_range(i, local); > batch->index = 0; > } > +EXPORT_SYMBOL_IF_KUNIT(__flush_tlb_pending); > > void hash__tlb_flush(struct mmu_gather *tlb) > { > diff --git a/mm/tests/lazy_mmu_mode_kunit.c b/mm/tests/lazy_mmu_mode_kunit.c > index 2720eb995714..340d7cda9096 100644 > --- a/mm/tests/lazy_mmu_mode_kunit.c > +++ b/mm/tests/lazy_mmu_mode_kunit.c > @@ -69,3 +69,4 @@ kunit_test_suite(lazy_mmu_mode_test_suite); > > MODULE_DESCRIPTION("Tests for the lazy MMU mode"); > MODULE_LICENSE("GPL"); > +MODULE_IMPORT_NS("EXPORTED_FOR_KUNIT_TESTING");
Indeed, that's pretty much what I was about to send :) - Kevin
