All of lore.kernel.org
 help / color / mirror / Atom feed
* arch/arm64/kvm/va_layout.c:188:6: warning: no previous prototype for 'kvm_patch_vector_branch'
@ 2021-09-03 11:15 ` kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-09-03 11:15 UTC (permalink / raw)
  Cc: kbuild-all, linux-kernel, Thomas Gleixner, Ingo Molnar

[-- Attachment #1: Type: text/plain, Size: 22913 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a9c9a6f741cdaa2fa9ba24a790db8d07295761e3
commit: 63b3f96e1a989846a5a521d4fbef4bc86406929d kvm: Select SCHED_INFO instead of TASK_DELAY_ACCT
date:   4 months ago
config: arm64-buildonly-randconfig-r006-20210902 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=63b3f96e1a989846a5a521d4fbef4bc86406929d
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 63b3f96e1a989846a5a521d4fbef4bc86406929d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> arch/arm64/kvm/va_layout.c:188:6: warning: no previous prototype for 'kvm_patch_vector_branch' [-Wmissing-prototypes]
     188 | void kvm_patch_vector_branch(struct alt_instr *alt,
         |      ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kvm/va_layout.c:286:6: warning: no previous prototype for 'kvm_get_kimage_voffset' [-Wmissing-prototypes]
     286 | void kvm_get_kimage_voffset(struct alt_instr *alt,
         |      ^~~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kvm/va_layout.c:292:6: warning: no previous prototype for 'kvm_compute_final_ctr_el0' [-Wmissing-prototypes]
     292 | void kvm_compute_final_ctr_el0(struct alt_instr *alt,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/handle_exit.c:177:35: warning: initialized field overwritten [-Woverride-init]
     177 |         [ESR_ELx_EC_WFx]        = kvm_handle_wfx,
         |                                   ^~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:177:35: note: (near initialization for 'arm_exit_handlers[1]')
   arch/arm64/kvm/handle_exit.c:178:35: warning: initialized field overwritten [-Woverride-init]
     178 |         [ESR_ELx_EC_CP15_32]    = kvm_handle_cp15_32,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:178:35: note: (near initialization for 'arm_exit_handlers[3]')
   arch/arm64/kvm/handle_exit.c:179:35: warning: initialized field overwritten [-Woverride-init]
     179 |         [ESR_ELx_EC_CP15_64]    = kvm_handle_cp15_64,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:179:35: note: (near initialization for 'arm_exit_handlers[4]')
   arch/arm64/kvm/handle_exit.c:180:35: warning: initialized field overwritten [-Woverride-init]
     180 |         [ESR_ELx_EC_CP14_MR]    = kvm_handle_cp14_32,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:180:35: note: (near initialization for 'arm_exit_handlers[5]')
   arch/arm64/kvm/handle_exit.c:181:35: warning: initialized field overwritten [-Woverride-init]
     181 |         [ESR_ELx_EC_CP14_LS]    = kvm_handle_cp14_load_store,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:181:35: note: (near initialization for 'arm_exit_handlers[6]')
   arch/arm64/kvm/handle_exit.c:182:35: warning: initialized field overwritten [-Woverride-init]
     182 |         [ESR_ELx_EC_CP14_64]    = kvm_handle_cp14_64,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:182:35: note: (near initialization for 'arm_exit_handlers[12]')
   arch/arm64/kvm/handle_exit.c:183:35: warning: initialized field overwritten [-Woverride-init]
     183 |         [ESR_ELx_EC_HVC32]      = handle_hvc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:183:35: note: (near initialization for 'arm_exit_handlers[18]')
   arch/arm64/kvm/handle_exit.c:184:35: warning: initialized field overwritten [-Woverride-init]
     184 |         [ESR_ELx_EC_SMC32]      = handle_smc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:184:35: note: (near initialization for 'arm_exit_handlers[19]')
   arch/arm64/kvm/handle_exit.c:185:35: warning: initialized field overwritten [-Woverride-init]
     185 |         [ESR_ELx_EC_HVC64]      = handle_hvc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:185:35: note: (near initialization for 'arm_exit_handlers[22]')
   arch/arm64/kvm/handle_exit.c:186:35: warning: initialized field overwritten [-Woverride-init]
     186 |         [ESR_ELx_EC_SMC64]      = handle_smc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:186:35: note: (near initialization for 'arm_exit_handlers[23]')
   arch/arm64/kvm/handle_exit.c:187:35: warning: initialized field overwritten [-Woverride-init]
     187 |         [ESR_ELx_EC_SYS64]      = kvm_handle_sys_reg,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:187:35: note: (near initialization for 'arm_exit_handlers[24]')
   arch/arm64/kvm/handle_exit.c:188:35: warning: initialized field overwritten [-Woverride-init]
     188 |         [ESR_ELx_EC_SVE]        = handle_sve,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:188:35: note: (near initialization for 'arm_exit_handlers[25]')
   arch/arm64/kvm/handle_exit.c:189:35: warning: initialized field overwritten [-Woverride-init]
     189 |         [ESR_ELx_EC_IABT_LOW]   = kvm_handle_guest_abort,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:189:35: note: (near initialization for 'arm_exit_handlers[32]')
   arch/arm64/kvm/handle_exit.c:190:35: warning: initialized field overwritten [-Woverride-init]
     190 |         [ESR_ELx_EC_DABT_LOW]   = kvm_handle_guest_abort,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:190:35: note: (near initialization for 'arm_exit_handlers[36]')
   arch/arm64/kvm/handle_exit.c:191:35: warning: initialized field overwritten [-Woverride-init]
     191 |         [ESR_ELx_EC_SOFTSTP_LOW]= kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:191:35: note: (near initialization for 'arm_exit_handlers[50]')
   arch/arm64/kvm/handle_exit.c:192:35: warning: initialized field overwritten [-Woverride-init]
     192 |         [ESR_ELx_EC_WATCHPT_LOW]= kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:192:35: note: (near initialization for 'arm_exit_handlers[52]')
   arch/arm64/kvm/handle_exit.c:193:35: warning: initialized field overwritten [-Woverride-init]
     193 |         [ESR_ELx_EC_BREAKPT_LOW]= kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:193:35: note: (near initialization for 'arm_exit_handlers[48]')
   arch/arm64/kvm/handle_exit.c:194:35: warning: initialized field overwritten [-Woverride-init]
     194 |         [ESR_ELx_EC_BKPT32]     = kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:194:35: note: (near initialization for 'arm_exit_handlers[56]')
   arch/arm64/kvm/handle_exit.c:195:35: warning: initialized field overwritten [-Woverride-init]
     195 |         [ESR_ELx_EC_BRK64]      = kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:195:35: note: (near initialization for 'arm_exit_handlers[60]')
   arch/arm64/kvm/handle_exit.c:196:35: warning: initialized field overwritten [-Woverride-init]
     196 |         [ESR_ELx_EC_FP_ASIMD]   = handle_no_fpsimd,
         |                                   ^~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:196:35: note: (near initialization for 'arm_exit_handlers[7]')
   arch/arm64/kvm/handle_exit.c:197:35: warning: initialized field overwritten [-Woverride-init]
     197 |         [ESR_ELx_EC_PAC]        = kvm_handle_ptrauth,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:197:35: note: (near initialization for 'arm_exit_handlers[9]')
>> arch/arm64/kvm/handle_exit.c:295:24: warning: no previous prototype for 'nvhe_hyp_panic_handler' [-Wmissing-prototypes]
     295 | void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr, u64 elr,
         |                        ^~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/sys_regs.c:1564:20: warning: initialized field overwritten [-Woverride-init]
    1564 |           .reset = reset_pmcr, .reg = PMCR_EL0 },
         |                    ^~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1564:20: note: (near initialization for 'sys_reg_descs[216].reset')
   In file included from include/uapi/linux/posix_types.h:5,
                    from include/uapi/linux/types.h:14,
                    from include/linux/types.h:6,
                    from include/linux/kasan-checks.h:5,
                    from include/asm-generic/rwonce.h:26,
                    from arch/arm64/include/asm/rwonce.h:71,
                    from include/linux/compiler.h:248,
                    from include/linux/build_bug.h:5,
                    from include/linux/bitfield.h:10,
                    from arch/arm64/kvm/sys_regs.c:12:
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1576:45: note: in expansion of macro 'NULL'
    1576 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[222].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1576:45: note: in expansion of macro 'NULL'
    1576 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1578:45: note: in expansion of macro 'NULL'
    1578 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[223].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1578:45: note: in expansion of macro 'NULL'
    1578 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1582:50: note: in expansion of macro 'NULL'
    1582 |           .access = access_pmu_evtyper, .reset = NULL },
         |                                                  ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[225].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1582:50: note: in expansion of macro 'NULL'
    1582 |           .access = access_pmu_evtyper, .reset = NULL },
         |                                                  ^~~~
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1584:49: note: in expansion of macro 'NULL'
    1584 |           .access = access_pmu_evcntr, .reset = NULL },
         |                                                 ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[226].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1584:49: note: in expansion of macro 'NULL'
    1584 |           .access = access_pmu_evcntr, .reset = NULL },
         |                                                 ^~~~
   arch/arm64/kvm/sys_regs.c:1590:20: warning: initialized field overwritten [-Woverride-init]
    1590 |           .reset = reset_val, .reg = PMUSERENR_EL0, .val = 0 },
         |                    ^~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1590:20: note: (near initialization for 'sys_reg_descs[227].reset')
   arch/arm64/kvm/sys_regs.c:1745:20: warning: initialized field overwritten [-Woverride-init]
    1745 |           .reset = reset_val, .reg = PMCCFILTR_EL0, .val = 0 },
         |                    ^~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1745:20: note: (near initialization for 'sys_reg_descs[369].reset')
--
>> arch/arm64/kvm/hyp/vhe/switch.c:215:17: warning: no previous prototype for 'hyp_panic' [-Wmissing-prototypes]
     215 | void __noreturn hyp_panic(void)
         |                 ^~~~~~~~~
>> arch/arm64/kvm/hyp/vhe/switch.c:225:17: warning: no previous prototype for 'kvm_unexpected_el2_exception' [-Wmissing-prototypes]
     225 | asmlinkage void kvm_unexpected_el2_exception(void)
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/switch.c:264:17: warning: no previous prototype for 'hyp_panic' [-Wmissing-prototypes]
     264 | void __noreturn hyp_panic(void)
         |                 ^~~~~~~~~
>> arch/arm64/kvm/hyp/nvhe/switch.c:286:17: warning: no previous prototype for 'kvm_unexpected_el2_exception' [-Wmissing-prototypes]
     286 | asmlinkage void kvm_unexpected_el2_exception(void)
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/hyp-main.c:233:6: warning: no previous prototype for 'handle_trap' [-Wmissing-prototypes]
     233 | void handle_trap(struct kvm_cpu_context *host_ctxt)
         |      ^~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/psci-relay.c:203:28: warning: no previous prototype for 'kvm_host_psci_cpu_entry' [-Wmissing-prototypes]
     203 | asmlinkage void __noreturn kvm_host_psci_cpu_entry(bool is_cpu_on)
         |                            ^~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/setup.c:146:17: warning: no previous prototype for '__pkvm_init_finalise' [-Wmissing-prototypes]
     146 | void __noreturn __pkvm_init_finalise(void)
         |                 ^~~~~~~~~~~~~~~~~~~~


vim +/kvm_patch_vector_branch +188 arch/arm64/kvm/va_layout.c

71dcb8be6d29cf Marc Zyngier  2018-02-27  187  
71dcb8be6d29cf Marc Zyngier  2018-02-27 @188  void kvm_patch_vector_branch(struct alt_instr *alt,
71dcb8be6d29cf Marc Zyngier  2018-02-27  189  			     __le32 *origptr, __le32 *updptr, int nr_inst)
71dcb8be6d29cf Marc Zyngier  2018-02-27  190  {
71dcb8be6d29cf Marc Zyngier  2018-02-27  191  	u64 addr;
71dcb8be6d29cf Marc Zyngier  2018-02-27  192  	u32 insn;
71dcb8be6d29cf Marc Zyngier  2018-02-27  193  
b881cdce77b48b Will Deacon   2020-11-13  194  	BUG_ON(nr_inst != 4);
71dcb8be6d29cf Marc Zyngier  2018-02-27  195  
c4792b6dbc5070 Will Deacon   2020-11-13  196  	if (!cpus_have_const_cap(ARM64_SPECTRE_V3A) || WARN_ON_ONCE(has_vhe()))
71dcb8be6d29cf Marc Zyngier  2018-02-27  197  		return;
71dcb8be6d29cf Marc Zyngier  2018-02-27  198  
71dcb8be6d29cf Marc Zyngier  2018-02-27  199  	/*
71dcb8be6d29cf Marc Zyngier  2018-02-27  200  	 * Compute HYP VA by using the same computation as kern_hyp_va()
71dcb8be6d29cf Marc Zyngier  2018-02-27  201  	 */
d084ecc5c72811 David Brazdil 2020-12-02  202  	addr = __early_kern_hyp_va((u64)kvm_ksym_ref(__kvm_hyp_vector));
71dcb8be6d29cf Marc Zyngier  2018-02-27  203  
71dcb8be6d29cf Marc Zyngier  2018-02-27  204  	/* Use PC[10:7] to branch to the same vector in KVM */
71dcb8be6d29cf Marc Zyngier  2018-02-27  205  	addr |= ((u64)origptr & GENMASK_ULL(10, 7));
71dcb8be6d29cf Marc Zyngier  2018-02-27  206  
71dcb8be6d29cf Marc Zyngier  2018-02-27  207  	/*
3dbf100b0b10e9 James Morse   2019-06-18  208  	 * Branch over the preamble in order to avoid the initial store on
3dbf100b0b10e9 James Morse   2019-06-18  209  	 * the stack (which we already perform in the hardening vectors).
71dcb8be6d29cf Marc Zyngier  2018-02-27  210  	 */
3dbf100b0b10e9 James Morse   2019-06-18  211  	addr += KVM_VECTOR_PREAMBLE;
71dcb8be6d29cf Marc Zyngier  2018-02-27  212  
71dcb8be6d29cf Marc Zyngier  2018-02-27  213  	/* movz x0, #(addr & 0xffff) */
71dcb8be6d29cf Marc Zyngier  2018-02-27  214  	insn = aarch64_insn_gen_movewide(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  215  					 (u16)addr,
71dcb8be6d29cf Marc Zyngier  2018-02-27  216  					 0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  217  					 AARCH64_INSN_VARIANT_64BIT,
71dcb8be6d29cf Marc Zyngier  2018-02-27  218  					 AARCH64_INSN_MOVEWIDE_ZERO);
71dcb8be6d29cf Marc Zyngier  2018-02-27  219  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  220  
71dcb8be6d29cf Marc Zyngier  2018-02-27  221  	/* movk x0, #((addr >> 16) & 0xffff), lsl #16 */
71dcb8be6d29cf Marc Zyngier  2018-02-27  222  	insn = aarch64_insn_gen_movewide(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  223  					 (u16)(addr >> 16),
71dcb8be6d29cf Marc Zyngier  2018-02-27  224  					 16,
71dcb8be6d29cf Marc Zyngier  2018-02-27  225  					 AARCH64_INSN_VARIANT_64BIT,
71dcb8be6d29cf Marc Zyngier  2018-02-27  226  					 AARCH64_INSN_MOVEWIDE_KEEP);
71dcb8be6d29cf Marc Zyngier  2018-02-27  227  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  228  
71dcb8be6d29cf Marc Zyngier  2018-02-27  229  	/* movk x0, #((addr >> 32) & 0xffff), lsl #32 */
71dcb8be6d29cf Marc Zyngier  2018-02-27  230  	insn = aarch64_insn_gen_movewide(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  231  					 (u16)(addr >> 32),
71dcb8be6d29cf Marc Zyngier  2018-02-27  232  					 32,
71dcb8be6d29cf Marc Zyngier  2018-02-27  233  					 AARCH64_INSN_VARIANT_64BIT,
71dcb8be6d29cf Marc Zyngier  2018-02-27  234  					 AARCH64_INSN_MOVEWIDE_KEEP);
71dcb8be6d29cf Marc Zyngier  2018-02-27  235  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  236  
71dcb8be6d29cf Marc Zyngier  2018-02-27  237  	/* br x0 */
71dcb8be6d29cf Marc Zyngier  2018-02-27  238  	insn = aarch64_insn_gen_branch_reg(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  239  					   AARCH64_INSN_BRANCH_NOLINK);
71dcb8be6d29cf Marc Zyngier  2018-02-27  240  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  241  }
1db9d9ded77138 Marc Zyngier  2020-10-21  242  
1db9d9ded77138 Marc Zyngier  2020-10-21  243  static void generate_mov_q(u64 val, __le32 *origptr, __le32 *updptr, int nr_inst)
1db9d9ded77138 Marc Zyngier  2020-10-21  244  {
1db9d9ded77138 Marc Zyngier  2020-10-21  245  	u32 insn, oinsn, rd;
1db9d9ded77138 Marc Zyngier  2020-10-21  246  
1db9d9ded77138 Marc Zyngier  2020-10-21  247  	BUG_ON(nr_inst != 4);
1db9d9ded77138 Marc Zyngier  2020-10-21  248  
1db9d9ded77138 Marc Zyngier  2020-10-21  249  	/* Compute target register */
1db9d9ded77138 Marc Zyngier  2020-10-21  250  	oinsn = le32_to_cpu(*origptr);
1db9d9ded77138 Marc Zyngier  2020-10-21  251  	rd = aarch64_insn_decode_register(AARCH64_INSN_REGTYPE_RD, oinsn);
1db9d9ded77138 Marc Zyngier  2020-10-21  252  
1db9d9ded77138 Marc Zyngier  2020-10-21  253  	/* movz rd, #(val & 0xffff) */
1db9d9ded77138 Marc Zyngier  2020-10-21  254  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  255  					 (u16)val,
1db9d9ded77138 Marc Zyngier  2020-10-21  256  					 0,
1db9d9ded77138 Marc Zyngier  2020-10-21  257  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  258  					 AARCH64_INSN_MOVEWIDE_ZERO);
1db9d9ded77138 Marc Zyngier  2020-10-21  259  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  260  
1db9d9ded77138 Marc Zyngier  2020-10-21  261  	/* movk rd, #((val >> 16) & 0xffff), lsl #16 */
1db9d9ded77138 Marc Zyngier  2020-10-21  262  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  263  					 (u16)(val >> 16),
1db9d9ded77138 Marc Zyngier  2020-10-21  264  					 16,
1db9d9ded77138 Marc Zyngier  2020-10-21  265  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  266  					 AARCH64_INSN_MOVEWIDE_KEEP);
1db9d9ded77138 Marc Zyngier  2020-10-21  267  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  268  
1db9d9ded77138 Marc Zyngier  2020-10-21  269  	/* movk rd, #((val >> 32) & 0xffff), lsl #32 */
1db9d9ded77138 Marc Zyngier  2020-10-21  270  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  271  					 (u16)(val >> 32),
1db9d9ded77138 Marc Zyngier  2020-10-21  272  					 32,
1db9d9ded77138 Marc Zyngier  2020-10-21  273  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  274  					 AARCH64_INSN_MOVEWIDE_KEEP);
1db9d9ded77138 Marc Zyngier  2020-10-21  275  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  276  
1db9d9ded77138 Marc Zyngier  2020-10-21  277  	/* movk rd, #((val >> 48) & 0xffff), lsl #48 */
1db9d9ded77138 Marc Zyngier  2020-10-21  278  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  279  					 (u16)(val >> 48),
1db9d9ded77138 Marc Zyngier  2020-10-21  280  					 48,
1db9d9ded77138 Marc Zyngier  2020-10-21  281  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  282  					 AARCH64_INSN_MOVEWIDE_KEEP);
1db9d9ded77138 Marc Zyngier  2020-10-21  283  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  284  }
1db9d9ded77138 Marc Zyngier  2020-10-21  285  
68b824e428c5fb Marc Zyngier  2020-10-24 @286  void kvm_get_kimage_voffset(struct alt_instr *alt,
68b824e428c5fb Marc Zyngier  2020-10-24  287  			    __le32 *origptr, __le32 *updptr, int nr_inst)
68b824e428c5fb Marc Zyngier  2020-10-24  288  {
68b824e428c5fb Marc Zyngier  2020-10-24  289  	generate_mov_q(kimage_voffset, origptr, updptr, nr_inst);
68b824e428c5fb Marc Zyngier  2020-10-24  290  }
755db23420a1ce Marc Zyngier  2021-03-22  291  
755db23420a1ce Marc Zyngier  2021-03-22 @292  void kvm_compute_final_ctr_el0(struct alt_instr *alt,

:::::: The code at line 188 was first introduced by commit
:::::: 71dcb8be6d29cffff3f4a4463232f38786e97797 arm64: KVM: Allow far branches from vector slots to the main vectors

:::::: TO: Marc Zyngier <marc.zyngier@arm.com>
:::::: CC: Marc Zyngier <marc.zyngier@arm.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 41888 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

* arch/arm64/kvm/va_layout.c:188:6: warning: no previous prototype for 'kvm_patch_vector_branch'
@ 2021-09-03 11:15 ` kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-09-03 11:15 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 23250 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   a9c9a6f741cdaa2fa9ba24a790db8d07295761e3
commit: 63b3f96e1a989846a5a521d4fbef4bc86406929d kvm: Select SCHED_INFO instead of TASK_DELAY_ACCT
date:   4 months ago
config: arm64-buildonly-randconfig-r006-20210902 (attached as .config)
compiler: aarch64-linux-gcc (GCC) 11.2.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=63b3f96e1a989846a5a521d4fbef4bc86406929d
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 63b3f96e1a989846a5a521d4fbef4bc86406929d
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=arm64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

>> arch/arm64/kvm/va_layout.c:188:6: warning: no previous prototype for 'kvm_patch_vector_branch' [-Wmissing-prototypes]
     188 | void kvm_patch_vector_branch(struct alt_instr *alt,
         |      ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kvm/va_layout.c:286:6: warning: no previous prototype for 'kvm_get_kimage_voffset' [-Wmissing-prototypes]
     286 | void kvm_get_kimage_voffset(struct alt_instr *alt,
         |      ^~~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kvm/va_layout.c:292:6: warning: no previous prototype for 'kvm_compute_final_ctr_el0' [-Wmissing-prototypes]
     292 | void kvm_compute_final_ctr_el0(struct alt_instr *alt,
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/handle_exit.c:177:35: warning: initialized field overwritten [-Woverride-init]
     177 |         [ESR_ELx_EC_WFx]        = kvm_handle_wfx,
         |                                   ^~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:177:35: note: (near initialization for 'arm_exit_handlers[1]')
   arch/arm64/kvm/handle_exit.c:178:35: warning: initialized field overwritten [-Woverride-init]
     178 |         [ESR_ELx_EC_CP15_32]    = kvm_handle_cp15_32,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:178:35: note: (near initialization for 'arm_exit_handlers[3]')
   arch/arm64/kvm/handle_exit.c:179:35: warning: initialized field overwritten [-Woverride-init]
     179 |         [ESR_ELx_EC_CP15_64]    = kvm_handle_cp15_64,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:179:35: note: (near initialization for 'arm_exit_handlers[4]')
   arch/arm64/kvm/handle_exit.c:180:35: warning: initialized field overwritten [-Woverride-init]
     180 |         [ESR_ELx_EC_CP14_MR]    = kvm_handle_cp14_32,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:180:35: note: (near initialization for 'arm_exit_handlers[5]')
   arch/arm64/kvm/handle_exit.c:181:35: warning: initialized field overwritten [-Woverride-init]
     181 |         [ESR_ELx_EC_CP14_LS]    = kvm_handle_cp14_load_store,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:181:35: note: (near initialization for 'arm_exit_handlers[6]')
   arch/arm64/kvm/handle_exit.c:182:35: warning: initialized field overwritten [-Woverride-init]
     182 |         [ESR_ELx_EC_CP14_64]    = kvm_handle_cp14_64,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:182:35: note: (near initialization for 'arm_exit_handlers[12]')
   arch/arm64/kvm/handle_exit.c:183:35: warning: initialized field overwritten [-Woverride-init]
     183 |         [ESR_ELx_EC_HVC32]      = handle_hvc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:183:35: note: (near initialization for 'arm_exit_handlers[18]')
   arch/arm64/kvm/handle_exit.c:184:35: warning: initialized field overwritten [-Woverride-init]
     184 |         [ESR_ELx_EC_SMC32]      = handle_smc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:184:35: note: (near initialization for 'arm_exit_handlers[19]')
   arch/arm64/kvm/handle_exit.c:185:35: warning: initialized field overwritten [-Woverride-init]
     185 |         [ESR_ELx_EC_HVC64]      = handle_hvc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:185:35: note: (near initialization for 'arm_exit_handlers[22]')
   arch/arm64/kvm/handle_exit.c:186:35: warning: initialized field overwritten [-Woverride-init]
     186 |         [ESR_ELx_EC_SMC64]      = handle_smc,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:186:35: note: (near initialization for 'arm_exit_handlers[23]')
   arch/arm64/kvm/handle_exit.c:187:35: warning: initialized field overwritten [-Woverride-init]
     187 |         [ESR_ELx_EC_SYS64]      = kvm_handle_sys_reg,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:187:35: note: (near initialization for 'arm_exit_handlers[24]')
   arch/arm64/kvm/handle_exit.c:188:35: warning: initialized field overwritten [-Woverride-init]
     188 |         [ESR_ELx_EC_SVE]        = handle_sve,
         |                                   ^~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:188:35: note: (near initialization for 'arm_exit_handlers[25]')
   arch/arm64/kvm/handle_exit.c:189:35: warning: initialized field overwritten [-Woverride-init]
     189 |         [ESR_ELx_EC_IABT_LOW]   = kvm_handle_guest_abort,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:189:35: note: (near initialization for 'arm_exit_handlers[32]')
   arch/arm64/kvm/handle_exit.c:190:35: warning: initialized field overwritten [-Woverride-init]
     190 |         [ESR_ELx_EC_DABT_LOW]   = kvm_handle_guest_abort,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:190:35: note: (near initialization for 'arm_exit_handlers[36]')
   arch/arm64/kvm/handle_exit.c:191:35: warning: initialized field overwritten [-Woverride-init]
     191 |         [ESR_ELx_EC_SOFTSTP_LOW]= kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:191:35: note: (near initialization for 'arm_exit_handlers[50]')
   arch/arm64/kvm/handle_exit.c:192:35: warning: initialized field overwritten [-Woverride-init]
     192 |         [ESR_ELx_EC_WATCHPT_LOW]= kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:192:35: note: (near initialization for 'arm_exit_handlers[52]')
   arch/arm64/kvm/handle_exit.c:193:35: warning: initialized field overwritten [-Woverride-init]
     193 |         [ESR_ELx_EC_BREAKPT_LOW]= kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:193:35: note: (near initialization for 'arm_exit_handlers[48]')
   arch/arm64/kvm/handle_exit.c:194:35: warning: initialized field overwritten [-Woverride-init]
     194 |         [ESR_ELx_EC_BKPT32]     = kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:194:35: note: (near initialization for 'arm_exit_handlers[56]')
   arch/arm64/kvm/handle_exit.c:195:35: warning: initialized field overwritten [-Woverride-init]
     195 |         [ESR_ELx_EC_BRK64]      = kvm_handle_guest_debug,
         |                                   ^~~~~~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:195:35: note: (near initialization for 'arm_exit_handlers[60]')
   arch/arm64/kvm/handle_exit.c:196:35: warning: initialized field overwritten [-Woverride-init]
     196 |         [ESR_ELx_EC_FP_ASIMD]   = handle_no_fpsimd,
         |                                   ^~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:196:35: note: (near initialization for 'arm_exit_handlers[7]')
   arch/arm64/kvm/handle_exit.c:197:35: warning: initialized field overwritten [-Woverride-init]
     197 |         [ESR_ELx_EC_PAC]        = kvm_handle_ptrauth,
         |                                   ^~~~~~~~~~~~~~~~~~
   arch/arm64/kvm/handle_exit.c:197:35: note: (near initialization for 'arm_exit_handlers[9]')
>> arch/arm64/kvm/handle_exit.c:295:24: warning: no previous prototype for 'nvhe_hyp_panic_handler' [-Wmissing-prototypes]
     295 | void __noreturn __cold nvhe_hyp_panic_handler(u64 esr, u64 spsr, u64 elr,
         |                        ^~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/sys_regs.c:1564:20: warning: initialized field overwritten [-Woverride-init]
    1564 |           .reset = reset_pmcr, .reg = PMCR_EL0 },
         |                    ^~~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1564:20: note: (near initialization for 'sys_reg_descs[216].reset')
   In file included from include/uapi/linux/posix_types.h:5,
                    from include/uapi/linux/types.h:14,
                    from include/linux/types.h:6,
                    from include/linux/kasan-checks.h:5,
                    from include/asm-generic/rwonce.h:26,
                    from arch/arm64/include/asm/rwonce.h:71,
                    from include/linux/compiler.h:248,
                    from include/linux/build_bug.h:5,
                    from include/linux/bitfield.h:10,
                    from arch/arm64/kvm/sys_regs.c:12:
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1576:45: note: in expansion of macro 'NULL'
    1576 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[222].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1576:45: note: in expansion of macro 'NULL'
    1576 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1578:45: note: in expansion of macro 'NULL'
    1578 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[223].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1578:45: note: in expansion of macro 'NULL'
    1578 |           .access = access_pmceid, .reset = NULL },
         |                                             ^~~~
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1582:50: note: in expansion of macro 'NULL'
    1582 |           .access = access_pmu_evtyper, .reset = NULL },
         |                                                  ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[225].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1582:50: note: in expansion of macro 'NULL'
    1582 |           .access = access_pmu_evtyper, .reset = NULL },
         |                                                  ^~~~
>> include/linux/stddef.h:8:14: warning: initialized field overwritten [-Woverride-init]
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1584:49: note: in expansion of macro 'NULL'
    1584 |           .access = access_pmu_evcntr, .reset = NULL },
         |                                                 ^~~~
   include/linux/stddef.h:8:14: note: (near initialization for 'sys_reg_descs[226].reset')
       8 | #define NULL ((void *)0)
         |              ^
   arch/arm64/kvm/sys_regs.c:1584:49: note: in expansion of macro 'NULL'
    1584 |           .access = access_pmu_evcntr, .reset = NULL },
         |                                                 ^~~~
   arch/arm64/kvm/sys_regs.c:1590:20: warning: initialized field overwritten [-Woverride-init]
    1590 |           .reset = reset_val, .reg = PMUSERENR_EL0, .val = 0 },
         |                    ^~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1590:20: note: (near initialization for 'sys_reg_descs[227].reset')
   arch/arm64/kvm/sys_regs.c:1745:20: warning: initialized field overwritten [-Woverride-init]
    1745 |           .reset = reset_val, .reg = PMCCFILTR_EL0, .val = 0 },
         |                    ^~~~~~~~~
   arch/arm64/kvm/sys_regs.c:1745:20: note: (near initialization for 'sys_reg_descs[369].reset')
--
>> arch/arm64/kvm/hyp/vhe/switch.c:215:17: warning: no previous prototype for 'hyp_panic' [-Wmissing-prototypes]
     215 | void __noreturn hyp_panic(void)
         |                 ^~~~~~~~~
>> arch/arm64/kvm/hyp/vhe/switch.c:225:17: warning: no previous prototype for 'kvm_unexpected_el2_exception' [-Wmissing-prototypes]
     225 | asmlinkage void kvm_unexpected_el2_exception(void)
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/switch.c:264:17: warning: no previous prototype for 'hyp_panic' [-Wmissing-prototypes]
     264 | void __noreturn hyp_panic(void)
         |                 ^~~~~~~~~
>> arch/arm64/kvm/hyp/nvhe/switch.c:286:17: warning: no previous prototype for 'kvm_unexpected_el2_exception' [-Wmissing-prototypes]
     286 | asmlinkage void kvm_unexpected_el2_exception(void)
         |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/hyp-main.c:233:6: warning: no previous prototype for 'handle_trap' [-Wmissing-prototypes]
     233 | void handle_trap(struct kvm_cpu_context *host_ctxt)
         |      ^~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/psci-relay.c:203:28: warning: no previous prototype for 'kvm_host_psci_cpu_entry' [-Wmissing-prototypes]
     203 | asmlinkage void __noreturn kvm_host_psci_cpu_entry(bool is_cpu_on)
         |                            ^~~~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kvm/hyp/nvhe/setup.c:146:17: warning: no previous prototype for '__pkvm_init_finalise' [-Wmissing-prototypes]
     146 | void __noreturn __pkvm_init_finalise(void)
         |                 ^~~~~~~~~~~~~~~~~~~~


vim +/kvm_patch_vector_branch +188 arch/arm64/kvm/va_layout.c

71dcb8be6d29cf Marc Zyngier  2018-02-27  187  
71dcb8be6d29cf Marc Zyngier  2018-02-27 @188  void kvm_patch_vector_branch(struct alt_instr *alt,
71dcb8be6d29cf Marc Zyngier  2018-02-27  189  			     __le32 *origptr, __le32 *updptr, int nr_inst)
71dcb8be6d29cf Marc Zyngier  2018-02-27  190  {
71dcb8be6d29cf Marc Zyngier  2018-02-27  191  	u64 addr;
71dcb8be6d29cf Marc Zyngier  2018-02-27  192  	u32 insn;
71dcb8be6d29cf Marc Zyngier  2018-02-27  193  
b881cdce77b48b Will Deacon   2020-11-13  194  	BUG_ON(nr_inst != 4);
71dcb8be6d29cf Marc Zyngier  2018-02-27  195  
c4792b6dbc5070 Will Deacon   2020-11-13  196  	if (!cpus_have_const_cap(ARM64_SPECTRE_V3A) || WARN_ON_ONCE(has_vhe()))
71dcb8be6d29cf Marc Zyngier  2018-02-27  197  		return;
71dcb8be6d29cf Marc Zyngier  2018-02-27  198  
71dcb8be6d29cf Marc Zyngier  2018-02-27  199  	/*
71dcb8be6d29cf Marc Zyngier  2018-02-27  200  	 * Compute HYP VA by using the same computation as kern_hyp_va()
71dcb8be6d29cf Marc Zyngier  2018-02-27  201  	 */
d084ecc5c72811 David Brazdil 2020-12-02  202  	addr = __early_kern_hyp_va((u64)kvm_ksym_ref(__kvm_hyp_vector));
71dcb8be6d29cf Marc Zyngier  2018-02-27  203  
71dcb8be6d29cf Marc Zyngier  2018-02-27  204  	/* Use PC[10:7] to branch to the same vector in KVM */
71dcb8be6d29cf Marc Zyngier  2018-02-27  205  	addr |= ((u64)origptr & GENMASK_ULL(10, 7));
71dcb8be6d29cf Marc Zyngier  2018-02-27  206  
71dcb8be6d29cf Marc Zyngier  2018-02-27  207  	/*
3dbf100b0b10e9 James Morse   2019-06-18  208  	 * Branch over the preamble in order to avoid the initial store on
3dbf100b0b10e9 James Morse   2019-06-18  209  	 * the stack (which we already perform in the hardening vectors).
71dcb8be6d29cf Marc Zyngier  2018-02-27  210  	 */
3dbf100b0b10e9 James Morse   2019-06-18  211  	addr += KVM_VECTOR_PREAMBLE;
71dcb8be6d29cf Marc Zyngier  2018-02-27  212  
71dcb8be6d29cf Marc Zyngier  2018-02-27  213  	/* movz x0, #(addr & 0xffff) */
71dcb8be6d29cf Marc Zyngier  2018-02-27  214  	insn = aarch64_insn_gen_movewide(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  215  					 (u16)addr,
71dcb8be6d29cf Marc Zyngier  2018-02-27  216  					 0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  217  					 AARCH64_INSN_VARIANT_64BIT,
71dcb8be6d29cf Marc Zyngier  2018-02-27  218  					 AARCH64_INSN_MOVEWIDE_ZERO);
71dcb8be6d29cf Marc Zyngier  2018-02-27  219  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  220  
71dcb8be6d29cf Marc Zyngier  2018-02-27  221  	/* movk x0, #((addr >> 16) & 0xffff), lsl #16 */
71dcb8be6d29cf Marc Zyngier  2018-02-27  222  	insn = aarch64_insn_gen_movewide(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  223  					 (u16)(addr >> 16),
71dcb8be6d29cf Marc Zyngier  2018-02-27  224  					 16,
71dcb8be6d29cf Marc Zyngier  2018-02-27  225  					 AARCH64_INSN_VARIANT_64BIT,
71dcb8be6d29cf Marc Zyngier  2018-02-27  226  					 AARCH64_INSN_MOVEWIDE_KEEP);
71dcb8be6d29cf Marc Zyngier  2018-02-27  227  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  228  
71dcb8be6d29cf Marc Zyngier  2018-02-27  229  	/* movk x0, #((addr >> 32) & 0xffff), lsl #32 */
71dcb8be6d29cf Marc Zyngier  2018-02-27  230  	insn = aarch64_insn_gen_movewide(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  231  					 (u16)(addr >> 32),
71dcb8be6d29cf Marc Zyngier  2018-02-27  232  					 32,
71dcb8be6d29cf Marc Zyngier  2018-02-27  233  					 AARCH64_INSN_VARIANT_64BIT,
71dcb8be6d29cf Marc Zyngier  2018-02-27  234  					 AARCH64_INSN_MOVEWIDE_KEEP);
71dcb8be6d29cf Marc Zyngier  2018-02-27  235  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  236  
71dcb8be6d29cf Marc Zyngier  2018-02-27  237  	/* br x0 */
71dcb8be6d29cf Marc Zyngier  2018-02-27  238  	insn = aarch64_insn_gen_branch_reg(AARCH64_INSN_REG_0,
71dcb8be6d29cf Marc Zyngier  2018-02-27  239  					   AARCH64_INSN_BRANCH_NOLINK);
71dcb8be6d29cf Marc Zyngier  2018-02-27  240  	*updptr++ = cpu_to_le32(insn);
71dcb8be6d29cf Marc Zyngier  2018-02-27  241  }
1db9d9ded77138 Marc Zyngier  2020-10-21  242  
1db9d9ded77138 Marc Zyngier  2020-10-21  243  static void generate_mov_q(u64 val, __le32 *origptr, __le32 *updptr, int nr_inst)
1db9d9ded77138 Marc Zyngier  2020-10-21  244  {
1db9d9ded77138 Marc Zyngier  2020-10-21  245  	u32 insn, oinsn, rd;
1db9d9ded77138 Marc Zyngier  2020-10-21  246  
1db9d9ded77138 Marc Zyngier  2020-10-21  247  	BUG_ON(nr_inst != 4);
1db9d9ded77138 Marc Zyngier  2020-10-21  248  
1db9d9ded77138 Marc Zyngier  2020-10-21  249  	/* Compute target register */
1db9d9ded77138 Marc Zyngier  2020-10-21  250  	oinsn = le32_to_cpu(*origptr);
1db9d9ded77138 Marc Zyngier  2020-10-21  251  	rd = aarch64_insn_decode_register(AARCH64_INSN_REGTYPE_RD, oinsn);
1db9d9ded77138 Marc Zyngier  2020-10-21  252  
1db9d9ded77138 Marc Zyngier  2020-10-21  253  	/* movz rd, #(val & 0xffff) */
1db9d9ded77138 Marc Zyngier  2020-10-21  254  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  255  					 (u16)val,
1db9d9ded77138 Marc Zyngier  2020-10-21  256  					 0,
1db9d9ded77138 Marc Zyngier  2020-10-21  257  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  258  					 AARCH64_INSN_MOVEWIDE_ZERO);
1db9d9ded77138 Marc Zyngier  2020-10-21  259  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  260  
1db9d9ded77138 Marc Zyngier  2020-10-21  261  	/* movk rd, #((val >> 16) & 0xffff), lsl #16 */
1db9d9ded77138 Marc Zyngier  2020-10-21  262  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  263  					 (u16)(val >> 16),
1db9d9ded77138 Marc Zyngier  2020-10-21  264  					 16,
1db9d9ded77138 Marc Zyngier  2020-10-21  265  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  266  					 AARCH64_INSN_MOVEWIDE_KEEP);
1db9d9ded77138 Marc Zyngier  2020-10-21  267  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  268  
1db9d9ded77138 Marc Zyngier  2020-10-21  269  	/* movk rd, #((val >> 32) & 0xffff), lsl #32 */
1db9d9ded77138 Marc Zyngier  2020-10-21  270  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  271  					 (u16)(val >> 32),
1db9d9ded77138 Marc Zyngier  2020-10-21  272  					 32,
1db9d9ded77138 Marc Zyngier  2020-10-21  273  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  274  					 AARCH64_INSN_MOVEWIDE_KEEP);
1db9d9ded77138 Marc Zyngier  2020-10-21  275  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  276  
1db9d9ded77138 Marc Zyngier  2020-10-21  277  	/* movk rd, #((val >> 48) & 0xffff), lsl #48 */
1db9d9ded77138 Marc Zyngier  2020-10-21  278  	insn = aarch64_insn_gen_movewide(rd,
1db9d9ded77138 Marc Zyngier  2020-10-21  279  					 (u16)(val >> 48),
1db9d9ded77138 Marc Zyngier  2020-10-21  280  					 48,
1db9d9ded77138 Marc Zyngier  2020-10-21  281  					 AARCH64_INSN_VARIANT_64BIT,
1db9d9ded77138 Marc Zyngier  2020-10-21  282  					 AARCH64_INSN_MOVEWIDE_KEEP);
1db9d9ded77138 Marc Zyngier  2020-10-21  283  	*updptr++ = cpu_to_le32(insn);
1db9d9ded77138 Marc Zyngier  2020-10-21  284  }
1db9d9ded77138 Marc Zyngier  2020-10-21  285  
68b824e428c5fb Marc Zyngier  2020-10-24 @286  void kvm_get_kimage_voffset(struct alt_instr *alt,
68b824e428c5fb Marc Zyngier  2020-10-24  287  			    __le32 *origptr, __le32 *updptr, int nr_inst)
68b824e428c5fb Marc Zyngier  2020-10-24  288  {
68b824e428c5fb Marc Zyngier  2020-10-24  289  	generate_mov_q(kimage_voffset, origptr, updptr, nr_inst);
68b824e428c5fb Marc Zyngier  2020-10-24  290  }
755db23420a1ce Marc Zyngier  2021-03-22  291  
755db23420a1ce Marc Zyngier  2021-03-22 @292  void kvm_compute_final_ctr_el0(struct alt_instr *alt,

:::::: The code at line 188 was first introduced by commit
:::::: 71dcb8be6d29cffff3f4a4463232f38786e97797 arm64: KVM: Allow far branches from vector slots to the main vectors

:::::: TO: Marc Zyngier <marc.zyngier@arm.com>
:::::: CC: Marc Zyngier <marc.zyngier@arm.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 41888 bytes --]

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2021-09-03 11:15 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-03 11:15 arch/arm64/kvm/va_layout.c:188:6: warning: no previous prototype for 'kvm_patch_vector_branch' kernel test robot
2021-09-03 11:15 ` kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.