lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <b9c47a7d-80fc-49c7-9bda-3626f72a70a9@intel.com>
Date: Wed, 28 May 2025 11:49:46 +0800
From: Xiaoyao Li <xiaoyao.li@...el.com>
To: Rick Edgecombe <rick.p.edgecombe@...el.com>, pbonzini@...hat.com
Cc: kvm@...r.kernel.org, linux-kernel@...r.kernel.org, lkp@...el.com,
 kai.huang@...el.com, seanjc@...gle.com, x86@...nel.org, dave.hansen@...el.com
Subject: Re: [PATCH] x86/tdx: Always inline tdx_tdvpr_pa()

On 5/28/2025 6:04 AM, Rick Edgecombe wrote:
> 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
> 
> tdh_vp_enter() is marked noinstr and so can't accommodate the function
> being outlined. Previously this didn't cause issues because the compiler
> inlined the function. However, newer Clang compilers are deciding to
> outline it.
> 
> So mark the function __always_inline to force it to be inlined. This
> would leave the similar function tdx_tdr_pa() looking a bit asymmetric
> and odd, as it is marked inline but actually doesn't need to be inlined.
> So somewhat opportunistically remove the inline from tdx_tdr_pa() so that
> it is clear that it does not need to be inlined, unlike tdx_tdvpr_pa().
> 
> tdx_tdvpr_pa() uses page_to_phys() which can make further calls to
> outlines functions, but not on x86 following commit cba5d9b3e99d
> ("x86/mm/64: Make SPARSEMEM_VMEMMAP the only memory model").
> 
> Fixes: 69e23faf82b4 ("x86/virt/tdx: Add SEAMCALL wrapper to enter/exit TDX guest")
> Reported-by: kernel test robot <lkp@...el.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202505240530.5KktQ5mX-lkp@intel.com/
> Suggested-by: Sean Christopherson <seanjc@...gle.com>
> Signed-off-by: Rick Edgecombe <rick.p.edgecombe@...el.com>
> Reviewed-by: Kai Huang <kai.huang@...el.com>

Reviewed-by: Xiaoyao Li <Xiaoyao.li@...el.com>

> ---
> Previous discussion here:
> https://lore.kernel.org/kvm/20250526204523.562665-1-pbonzini@redhat.com/
> 
> FWIW, I'm ok with the flatten version of the fix too, but posting this
> just to speed things along in case.
> 
> And note, for full correctness, this and the flatten fix will depend on
> the queued tip commit:
> https://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git/commit/?id=cba5d9b3e99d6268d7909a65c2bd78f4d195aead
> 
> ---
>   arch/x86/virt/vmx/tdx/tdx.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/arch/x86/virt/vmx/tdx/tdx.c b/arch/x86/virt/vmx/tdx/tdx.c
> index f5e2a937c1e7..626cc2f37dec 100644
> --- a/arch/x86/virt/vmx/tdx/tdx.c
> +++ b/arch/x86/virt/vmx/tdx/tdx.c
> @@ -1496,12 +1496,12 @@ void tdx_guest_keyid_free(unsigned int keyid)
>   }
>   EXPORT_SYMBOL_GPL(tdx_guest_keyid_free);
>   
> -static inline u64 tdx_tdr_pa(struct tdx_td *td)
> +static u64 tdx_tdr_pa(struct tdx_td *td)
>   {
>   	return page_to_phys(td->tdr_page);
>   }
>   
> -static inline u64 tdx_tdvpr_pa(struct tdx_vp *td)
> +static __always_inline u64 tdx_tdvpr_pa(struct tdx_vp *td)
>   {
>   	return page_to_phys(td->tdvpr_page);
>   }


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ