Re: [PATCH] iommupt/amdv1: mark amdv1pt_install_leaf_entry as __always_inline

From: Vasant Hegde

Date: Mon Mar 30 2026 - 13:30:34 EST




On 3/26/2026 9:47 PM, Sherry Yang wrote:
> After enabling CONFIG_GCOV_KERNEL and CONFIG_GCOV_PROFILE_ALL, following
> build failure is observed under GCC 14.2.1:
>
> In function 'amdv1pt_install_leaf_entry',
> inlined from '__do_map_single_page' at drivers/iommu/generic_pt/fmt/../iommu_pt.h:650:3,
> inlined from '__map_single_page0' at drivers/iommu/generic_pt/fmt/../iommu_pt.h:661:1,
> inlined from 'pt_descend' at drivers/iommu/generic_pt/fmt/../pt_iter.h:391:9,
> inlined from '__do_map_single_page' at drivers/iommu/generic_pt/fmt/../iommu_pt.h:657:10,
> inlined from '__map_single_page1.constprop' at drivers/iommu/generic_pt/fmt/../iommu_pt.h:661:1:
> ././include/linux/compiler_types.h:706:45: error: call to '__compiletime_assert_71' declared with attribute error: FIELD_PREP: value too large for the field
> 706 | _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
> |
>
> ......
>
> drivers/iommu/generic_pt/fmt/amdv1.h:220:26: note: in expansion of macro 'FIELD_PREP'
> 220 | FIELD_PREP(AMDV1PT_FMT_OA,
> | ^~~~~~~~~~
>
> In the path '__do_map_single_page()', level 0 always invokes
> 'pt_install_leaf_entry(&pts, map->oa, PAGE_SHIFT, …)'. At runtime that
> lands in the 'if (oasz_lg2 == isz_lg2)' arm of 'amdv1pt_install_leaf_entry()';
> the contiguous-only 'else' block is unreachable for 4 KiB pages.
>
> With CONFIG_GCOV_KERNEL + CONFIG_GCOV_PROFILE_ALL, the extra
> instrumentation changes GCC's inlining so that the "dead" 'else' branch
> still gets instantiated. The compiler constant-folds the contiguous OA
> expression, runs the 'FIELD_PREP()' compile-time check, and produces:
>
> FIELD_PREP: value too large for the field
>
> gcov-enabled builds therefore fail even though the code path never executes.
>
> Fix this by marking amdv1pt_install_leaf_entry as __always_inline.
>
> Fixes: dcd6a011a8d5 ("iommupt: Add map_pages op")
> Suggested-by: Jason Gunthorpe <jgg@xxxxxxxxxx>
> Signed-off-by: Sherry Yang <sherry.yang@xxxxxxxxxx>

Reviewed-by: Vasant Hegde <vasant.hegde@xxxxxxx>

-Vasant