• Kai Huang's avatar
    x86/tdx: Fix __noreturn build warning around __tdx_hypercall_failed() · 518755a7
    Kai Huang authored
    LKP reported below build warning:
    
      vmlinux.o: warning: objtool: __tdx_hypercall+0x128: __tdx_hypercall_failed() is missing a __noreturn annotation
    
    The __tdx_hypercall_failed() function definition already has __noreturn
    annotation, but it turns out the __noreturn must be annotated to the
    function declaration.
    
    PeterZ explains:
    
      "FWIW, the reason being that...
    
       The point of noreturn is that the caller should know to stop generating
       code. For that the declaration needs the attribute, because call sites
       typically do not have access to the function definition in C."
    
    Add __noreturn annotation to the declaration of __tdx_hypercall_failed()
    to fix.  It's not a bad idea to document the __noreturn nature at the
    definition site either, so keep the annotation at the definition.
    
    Note <asm/shared/tdx.h> is also included by TDX related assembly files.
    Include <linux/compiler_attributes.h> only in case of !__ASSEMBLY__
    otherwise compiling assembly file would trigger build error.
    
    Also, following the objtool documentation, add __tdx_hypercall_failed()
    to "tools/objtool/noreturns.h".
    
    Fixes: c641cfb5 ("x86/tdx: Make TDX_HYPERCALL asm similar to TDX_MODULE_CALL")
    Reported-by: default avatarkernel test robot <lkp@intel.com>
    Signed-off-by: default avatarKai Huang <kai.huang@intel.com>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20230918041858.331234-1-kai.huang@intel.com
    Closes: https://lore.kernel.org/oe-kbuild-all/202309140828.9RdmlH2Z-lkp@intel.com/
    518755a7
tdx.h 3.18 KB