Re: [PATCH] [v2] iommu, debugobjects: avoid gcc-16.1 section mismatch warnings

From: Jason Gunthorpe

Date: Fri May 15 2026 - 14:34:03 EST


On Wed, May 13, 2026 at 04:53:54PM +0200, Arnd Bergmann wrote:
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> gcc-16 has gained some more advanced inter-procedual optimization
> techniques that enable it to inline the dummy_tlb_add_page() and
> dummy_tlb_flush() function pointers into a specialized version of
> __arm_v7s_unmap:
>
> WARNING: modpost: vmlinux: section mismatch in reference: __arm_v7s_unmap+0x2cc (section: .text) -> dummy_tlb_add_page (section: .init.text)
> ERROR: modpost: Section mismatches detected.
>
> From what I can tell, the transformation is correct, as this is only
> called when __arm_v7s_unmap() is called from arm_v7s_do_selftests(),
> which is also __init. Since __arm_v7s_unmap() however is not __init,
> gcc cannot inline the inner function calls directly.

The selftests should be moved into a kunit like was done for pgtable-arm:

commit 699b059962add22b2a324645b6ae2a607fc1a93e
Author: Mostafa Saleh <smostafa@xxxxxxxxxx>
Date: Mon Nov 3 12:33:50 2025 +0000

iommu/io-pgtable-arm: Move selftests to a separate file

Clean up the io-pgtable-arm library by moving the selftests out.
Next the tests will be registered with kunit.


Then you won't have these section problems because the code will be in
another module :)

Jason