lkml.org 
[lkml]   [2022]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH v2 43/59] x86/paravirt: Make struct paravirt_call_site unconditionally available
    From: Thomas Gleixner <tglx@linutronix.de>

    For the upcoming call thunk patching it's less ifdeffery when the data
    structure is unconditionally available. The code can then be trivially
    fenced off with IS_ENABLED().

    Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
    Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
    ---
    arch/x86/include/asm/paravirt.h | 4 ++--
    arch/x86/include/asm/paravirt_types.h | 20 ++++++++++++--------
    2 files changed, 14 insertions(+), 10 deletions(-)

    --- a/arch/x86/include/asm/paravirt.h
    +++ b/arch/x86/include/asm/paravirt.h
    @@ -4,13 +4,13 @@
    /* Various instructions on x86 need to be replaced for
    * para-virtualization: those hooks are defined here. */

    +#include <asm/paravirt_types.h>
    +
    #ifdef CONFIG_PARAVIRT
    #include <asm/pgtable_types.h>
    #include <asm/asm.h>
    #include <asm/nospec-branch.h>

    -#include <asm/paravirt_types.h>
    -
    #ifndef __ASSEMBLY__
    #include <linux/bug.h>
    #include <linux/types.h>
    --- a/arch/x86/include/asm/paravirt_types.h
    +++ b/arch/x86/include/asm/paravirt_types.h
    @@ -2,6 +2,17 @@
    #ifndef _ASM_X86_PARAVIRT_TYPES_H
    #define _ASM_X86_PARAVIRT_TYPES_H

    +#ifndef __ASSEMBLY__
    +/* These all sit in the .parainstructions section to tell us what to patch. */
    +struct paravirt_patch_site {
    + u8 *instr; /* original instructions */
    + u8 type; /* type of this instruction */
    + u8 len; /* length of original instruction */
    +};
    +#endif
    +
    +#ifdef CONFIG_PARAVIRT
    +
    /* Bitmask of what can be clobbered: usually at least eax. */
    #define CLBR_EAX (1 << 0)
    #define CLBR_ECX (1 << 1)
    @@ -584,16 +595,9 @@ unsigned long paravirt_ret0(void);

    #define paravirt_nop ((void *)_paravirt_nop)

    -/* These all sit in the .parainstructions section to tell us what to patch. */
    -struct paravirt_patch_site {
    - u8 *instr; /* original instructions */
    - u8 type; /* type of this instruction */
    - u8 len; /* length of original instruction */
    -};
    -
    extern struct paravirt_patch_site __parainstructions[],
    __parainstructions_end[];

    #endif /* __ASSEMBLY__ */
    -
    +#endif /* CONFIG_PARAVIRT */
    #endif /* _ASM_X86_PARAVIRT_TYPES_H */

    \
     
     \ /
      Last update: 2022-09-02 16:30    [W:4.045 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site