lkml.org 
[lkml]   [2022]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v2 29/44] cpuidle,tdx: Make tdx noinstr clean
    vmlinux.o: warning: objtool: __halt+0x2c: call to hcall_func.constprop.0() leaves .noinstr.text section
    vmlinux.o: warning: objtool: __halt+0x3f: call to __tdx_hypercall() leaves .noinstr.text section
    vmlinux.o: warning: objtool: __tdx_hypercall+0x66: call to __tdx_hypercall_failed() leaves .noinstr.text section

    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    ---
    arch/x86/boot/compressed/vmlinux.lds.S | 1 +
    arch/x86/coco/tdx/tdcall.S | 2 ++
    arch/x86/coco/tdx/tdx.c | 5 +++--
    3 files changed, 6 insertions(+), 2 deletions(-)

    --- a/arch/x86/boot/compressed/vmlinux.lds.S
    +++ b/arch/x86/boot/compressed/vmlinux.lds.S
    @@ -34,6 +34,7 @@ SECTIONS
    _text = .; /* Text */
    *(.text)
    *(.text.*)
    + *(.noinstr.text)
    _etext = . ;
    }
    .rodata : {
    --- a/arch/x86/coco/tdx/tdcall.S
    +++ b/arch/x86/coco/tdx/tdcall.S
    @@ -31,6 +31,8 @@
    TDX_R12 | TDX_R13 | \
    TDX_R14 | TDX_R15 )

    +.section .noinstr.text, "ax"
    +
    /*
    * __tdx_module_call() - Used by TDX guests to request services from
    * the TDX module (does not include VMM services) using TDCALL instruction.
    --- a/arch/x86/coco/tdx/tdx.c
    +++ b/arch/x86/coco/tdx/tdx.c
    @@ -53,8 +53,9 @@ static inline u64 _tdx_hypercall(u64 fn,
    }

    /* Called from __tdx_hypercall() for unrecoverable failure */
    -void __tdx_hypercall_failed(void)
    +noinstr void __tdx_hypercall_failed(void)
    {
    + instrumentation_begin();
    panic("TDVMCALL failed. TDX module bug?");
    }

    @@ -64,7 +65,7 @@ void __tdx_hypercall_failed(void)
    * Reusing the KVM EXIT_REASON macros makes it easier to connect the host and
    * guest sides of these calls.
    */
    -static u64 hcall_func(u64 exit_reason)
    +static __always_inline u64 hcall_func(u64 exit_reason)
    {
    return exit_reason;
    }

    \
     
     \ /
      Last update: 2022-09-19 12:23    [W:5.891 / U:2.352 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site