Skip to content

Commit e9f1703

Browse files
committed
x86/tdx: mark tdh_vp_enter() as __flatten
In some cases tdx_tdvpr_pa() is not fully inlined into tdh_vp_enter(), which causes the following warning: vmlinux.o: warning: objtool: tdh_vp_enter+0x8: call to tdx_tdvpr_pa() leaves .noinstr.text section This happens if the compiler considers tdx_tdvpr_pa() to be "large", for example because CONFIG_SPARSEMEM adds two function calls to page_to_section() and __section_mem_map_addr(): ({ const struct page *__pg = (pg); \ int __sec = page_to_section(__pg); \ (unsigned long)(__pg - __section_mem_map_addr(__nr_to_section(__sec))); \ }) Because exiting the noinstr section is a no-no, just mark tdh_vp_enter() for full inlining. Reported-by: kernel test robot <[email protected]> Analyzed-by: Xiaoyao Li <[email protected]> Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/ Signed-off-by: Paolo Bonzini <[email protected]>
1 parent 1f7c9d5 commit e9f1703

File tree

1 file changed

+1
-1
lines changed
  • arch/x86/virt/vmx/tdx

1 file changed

+1
-1
lines changed

arch/x86/virt/vmx/tdx/tdx.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1517,7 +1517,7 @@ static void tdx_clflush_page(struct page *page)
15171517
clflush_cache_range(page_to_virt(page), PAGE_SIZE);
15181518
}
15191519

1520-
noinstr u64 tdh_vp_enter(struct tdx_vp *td, struct tdx_module_args *args)
1520+
noinstr __flatten u64 tdh_vp_enter(struct tdx_vp *td, struct tdx_module_args *args)
15211521
{
15221522
args->rcx = tdx_tdvpr_pa(td);
15231523

0 commit comments

Comments
 (0)