From: kernel test robot <lkp@intel.com>
To: cros-kernel-buildreports@googlegroups.com
Cc: oe-kbuild-all@lists.linux.dev
Subject: [android-common:android16-6.12-desktop 12/12] arch/arm64/kvm/hyp/include/nvhe/modules.h:38:6: warning: no previous prototype for function 'module_handle_guest_smc'
Date: Tue, 31 Mar 2026 02:04:13 +0800 [thread overview]
Message-ID: <202603310214.1moh0oes-lkp@intel.com> (raw)
Hi Nikita,
FYI, the error/warning still remains.
tree: https://android.googlesource.com/kernel/common android16-6.12-desktop
head: 5857da52e68bd4d3b2f252eaf18d07a92addaa4b
commit: 128144da229a1de12ebe5bca87f607aa348c6ba9 [12/12] ANDROID: KVM: arm64: Add smc64 trap handling for protected guests
config: arm64-randconfig-001-20260330 (https://download.01.org/0day-ci/archive/20260331/202603310214.1moh0oes-lkp@intel.com/config)
compiler: clang version 23.0.0git (https://github.com/llvm/llvm-project 2cd67b8b69f78e3f95918204320c3075a74ba16c)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260331/202603310214.1moh0oes-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202603310214.1moh0oes-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from arch/arm64/kvm/hyp/nvhe/mm.c:17:
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h:49:42: warning: declaration of 'struct pkvm_sglist_page' will not be visible outside of this function [-Wvisibility]
49 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages);
| ^
In file included from arch/arm64/kvm/hyp/nvhe/mm.c:19:
arch/arm64/kvm/hyp/include/nvhe/modules.h:36:6: warning: no previous prototype for function 'module_handle_host_perm_fault' [-Wmissing-prototypes]
36 | bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr) { return false; }
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:36:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
36 | bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr) { return false; }
| ^
| static
arch/arm64/kvm/hyp/include/nvhe/modules.h:37:6: warning: no previous prototype for function 'module_handle_host_smc' [-Wmissing-prototypes]
37 | bool module_handle_host_smc(struct user_pt_regs *regs) { return false; }
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:37:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
37 | bool module_handle_host_smc(struct user_pt_regs *regs) { return false; }
| ^
| static
>> arch/arm64/kvm/hyp/include/nvhe/modules.h:38:6: warning: no previous prototype for function 'module_handle_guest_smc' [-Wmissing-prototypes]
38 | bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:38:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
38 | bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
| ^
| static
4 warnings generated.
--
In file included from arch/arm64/kvm/hyp/nvhe/mem_protect.c:21:
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h:49:42: warning: declaration of 'struct pkvm_sglist_page' will not be visible outside of this function [-Wvisibility]
49 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages);
| ^
In file included from arch/arm64/kvm/hyp/nvhe/mem_protect.c:23:
arch/arm64/kvm/hyp/include/nvhe/modules.h:36:6: warning: no previous prototype for function 'module_handle_host_perm_fault' [-Wmissing-prototypes]
36 | bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr) { return false; }
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:36:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
36 | bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr) { return false; }
| ^
| static
arch/arm64/kvm/hyp/include/nvhe/modules.h:37:6: warning: no previous prototype for function 'module_handle_host_smc' [-Wmissing-prototypes]
37 | bool module_handle_host_smc(struct user_pt_regs *regs) { return false; }
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:37:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
37 | bool module_handle_host_smc(struct user_pt_regs *regs) { return false; }
| ^
| static
>> arch/arm64/kvm/hyp/include/nvhe/modules.h:38:6: warning: no previous prototype for function 'module_handle_guest_smc' [-Wmissing-prototypes]
38 | bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:38:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
38 | bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
| ^
| static
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: warning: declaration of 'struct pkvm_sglist_page' will not be visible outside of this function [-Wvisibility]
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:5: error: conflicting types for '__pkvm_host_donate_sglist_hyp'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h:49:5: note: previous declaration is here
49 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages);
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2366:70: error: invalid application of 'sizeof' to an incomplete type 'struct pkvm_sglist_page'
2366 | WARN_ON(__hyp_check_page_state_range((u64)sglist, nr_pages * sizeof(*sglist),
| ^~~~~~~~~
include/asm-generic/bug.h:123:25: note: expanded from macro 'WARN_ON'
123 | int __ret_warn_on = !!(condition); \
| ^~~~~~~~~
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2370:36: error: subscript of pointer to incomplete type 'struct pkvm_sglist_page'
2370 | u64 phys = hyp_pfn_to_phys(sglist[p].pfn);
| ~~~~~~^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2373:43: error: subscript of pointer to incomplete type 'struct pkvm_sglist_page'
2373 | if (check_shl_overflow(PAGE_SIZE, sglist[p].order, &size)) {
| ~~~~~~^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2373:43: error: subscript of pointer to incomplete type 'struct pkvm_sglist_page'
2373 | if (check_shl_overflow(PAGE_SIZE, sglist[p].order, &size)) {
| ~~~~~~^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2395:36: error: subscript of pointer to incomplete type 'struct pkvm_sglist_page'
2395 | size_t size = PAGE_SIZE << sglist[p].order;
| ~~~~~~^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2396:36: error: subscript of pointer to incomplete type 'struct pkvm_sglist_page'
2396 | u64 phys = hyp_pfn_to_phys(sglist[p].pfn);
| ~~~~~~^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2408:34: error: subscript of pointer to incomplete type 'struct pkvm_sglist_page'
2408 | phys = hyp_pfn_to_phys(sglist[p].pfn);
| ~~~~~~^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2409:31: error: subscript of pointer to incomplete type 'struct pkvm_sglist_page'
2409 | size = PAGE_SIZE << sglist[p].order;
| ~~~~~~^
arch/arm64/kvm/hyp/nvhe/mem_protect.c:2357:42: note: forward declaration of 'struct pkvm_sglist_page'
2357 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages)
| ^
5 warnings and 9 errors generated.
--
In file included from arch/arm64/kvm/hyp/nvhe/hyp-main.c:24:
arch/arm64/kvm/hyp/include/nvhe/mem_protect.h:49:42: warning: declaration of 'struct pkvm_sglist_page' will not be visible outside of this function [-Wvisibility]
49 | int __pkvm_host_donate_sglist_hyp(struct pkvm_sglist_page *sglist, size_t nr_pages);
| ^
In file included from arch/arm64/kvm/hyp/nvhe/hyp-main.c:25:
arch/arm64/kvm/hyp/include/nvhe/modules.h:36:6: warning: no previous prototype for function 'module_handle_host_perm_fault' [-Wmissing-prototypes]
36 | bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr) { return false; }
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:36:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
36 | bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr) { return false; }
| ^
| static
arch/arm64/kvm/hyp/include/nvhe/modules.h:37:6: warning: no previous prototype for function 'module_handle_host_smc' [-Wmissing-prototypes]
37 | bool module_handle_host_smc(struct user_pt_regs *regs) { return false; }
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:37:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
37 | bool module_handle_host_smc(struct user_pt_regs *regs) { return false; }
| ^
| static
>> arch/arm64/kvm/hyp/include/nvhe/modules.h:38:6: warning: no previous prototype for function 'module_handle_guest_smc' [-Wmissing-prototypes]
38 | bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
| ^
arch/arm64/kvm/hyp/include/nvhe/modules.h:38:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
38 | bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
| ^
| static
arch/arm64/kvm/hyp/nvhe/hyp-main.c:77:6: warning: no previous prototype for function '__pkvm_unmask_serror' [-Wmissing-prototypes]
77 | void __pkvm_unmask_serror(void)
| ^
arch/arm64/kvm/hyp/nvhe/hyp-main.c:77:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
77 | void __pkvm_unmask_serror(void)
| ^
| static
arch/arm64/kvm/hyp/nvhe/hyp-main.c:463:22: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
463 | [ESR_ELx_EC_WFx] = handle_pvm_entry_wfx,
| ^~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:462:28: note: previous initialization is here
462 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:464:24: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
464 | [ESR_ELx_EC_HVC64] = handle_pvm_entry_hvc64,
| ^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:462:28: note: previous initialization is here
462 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:465:24: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
465 | [ESR_ELx_EC_SYS64] = handle_pvm_entry_sys64,
| ^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:462:28: note: previous initialization is here
462 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:466:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
466 | [ESR_ELx_EC_IABT_LOW] = handle_pvm_entry_iabt,
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:462:28: note: previous initialization is here
462 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:467:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
467 | [ESR_ELx_EC_DABT_LOW] = handle_pvm_entry_dabt,
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:462:28: note: previous initialization is here
462 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:472:22: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
472 | [ESR_ELx_EC_WFx] = handle_pvm_exit_wfx,
| ^~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:471:28: note: previous initialization is here
471 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:473:24: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
473 | [ESR_ELx_EC_HVC64] = handle_pvm_exit_hvc64,
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:471:28: note: previous initialization is here
471 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:474:24: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
474 | [ESR_ELx_EC_SYS64] = handle_pvm_exit_sys64,
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:471:28: note: previous initialization is here
471 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:475:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
475 | [ESR_ELx_EC_IABT_LOW] = handle_pvm_exit_iabt,
| ^~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:471:28: note: previous initialization is here
471 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
8 | #define NULL ((void *)0)
| ^~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:476:27: warning: initializer overrides prior initialization of this subobject [-Winitializer-overrides]
476 | [ESR_ELx_EC_DABT_LOW] = handle_pvm_exit_dabt,
| ^~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/hyp/nvhe/hyp-main.c:471:28: note: previous initialization is here
471 | [0 ... ESR_ELx_EC_MAX] = NULL,
| ^~~~
vim +/module_handle_guest_smc +38 arch/arm64/kvm/hyp/include/nvhe/modules.h
16
17 #ifdef CONFIG_MODULES
18 int __pkvm_init_module(void *host_mod);
19 int __pkvm_register_hcall(unsigned long hfn_hyp_va);
20 int handle_host_dynamic_hcall(struct user_pt_regs *regs, int id);
21 void __pkvm_close_module_registration(void);
22 bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr);
23 bool module_handle_host_smc(struct user_pt_regs *regs);
24 bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
25 pkvm_handle_t handle);
26 #else
27 static inline int __pkvm_init_module(void *module_init) { return -EOPNOTSUPP; }
28 static inline int
29 __pkvm_register_hcall(unsigned long hfn_hyp_va) { return -EOPNOTSUPP; }
30 static inline int
31 handle_host_dynamic_hcall(struct kvm_cpu_context *host_ctxt, int id)
32 {
33 return HCALL_UNHANDLED;
34 }
35 static inline void __pkvm_close_module_registration(void) { }
36 bool module_handle_host_perm_fault(struct user_pt_regs *regs, u64 esr, u64 addr) { return false; }
37 bool module_handle_host_smc(struct user_pt_regs *regs) { return false; }
> 38 bool module_handle_guest_smc(struct arm_smccc_1_2_regs *regs, struct arm_smccc_1_2_regs *res,
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-03-30 18:04 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202603310214.1moh0oes-lkp@intel.com \
--to=lkp@intel.com \
--cc=cros-kernel-buildreports@googlegroups.com \
--cc=oe-kbuild-all@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.