All of lore.kernel.org
 help / color / mirror / Atom feed
* [avpatel:riscv_trace_support_v5 90/108] arch/riscv/kernel/hw_breakpoint.c:39:23: error: storage size of 'ret' isn't known
@ 2026-08-19  5:44 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-08-19  5:44 UTC (permalink / raw)
  To: Himanshu Chauhan; +Cc: oe-kbuild-all, Anup Patel

tree:   https://github.com/avpatel/linux.git riscv_trace_support_v5
head:   e58ea3f194d326370813c549a76ecdfa211a4768
commit: 0025d27a4993089614a6fbb077d85987380e4c0c [90/108] riscv: Introduce support for hardware break/watchpoints
config: riscv-randconfig-r073-20260819 (https://download.01.org/0day-ci/archive/20260819/202608191320.mIv4ytKv-lkp@intel.com/config)
compiler: riscv32-linux-gcc (GCC) 16.1.0
smatch: v0.5.0-9187-g5189e3fb
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260819/202608191320.mIv4ytKv-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/202608191320.mIv4ytKv-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from arch/riscv/kernel/hw_breakpoint.c:17:
   arch/riscv/include/asm/sbi.h:799:5: warning: no previous prototype for 'sbi_mpxy_read_attrs' [-Wmissing-prototypes]
     799 | int sbi_mpxy_read_attrs(u32 channel_id, u32 base_attrid, u32 attr_count,
         |     ^~~~~~~~~~~~~~~~~~~
   arch/riscv/include/asm/sbi.h:805:5: warning: no previous prototype for 'sbi_mpxy_write_attrs' [-Wmissing-prototypes]
     805 | int sbi_mpxy_write_attrs(u32 channel_id, u32 base_attrid, u32 attr_count,
         |     ^~~~~~~~~~~~~~~~~~~~
   arch/riscv/include/asm/sbi.h:811:5: warning: no previous prototype for 'sbi_mpxy_send_message_with_resp' [-Wmissing-prototypes]
     811 | int sbi_mpxy_send_message_with_resp(u32 channel_id, u32 msg_id,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/include/asm/sbi.h:819:5: warning: no previous prototype for 'sbi_mpxy_send_message_without_resp' [-Wmissing-prototypes]
     819 | int sbi_mpxy_send_message_without_resp(u32 channel_id, u32 msg_id,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/include/asm/sbi.h:826:39: warning: 'struct sbi_mpxy_notification_data' declared inside parameter list will not be visible outside of this definition or declaration
     826 |                                struct sbi_mpxy_notification_data *notif_data,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/include/asm/sbi.h:825:5: warning: no previous prototype for 'sbi_mpxy_get_notifications' [-Wmissing-prototypes]
     825 | int sbi_mpxy_get_notifications(u32 channel_id,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_smp_setup_sbi_shmem':
>> arch/riscv/kernel/hw_breakpoint.c:39:23: error: storage size of 'ret' isn't known
      39 |         struct sbiret ret;
         |                       ^~~
   In file included from include/asm-generic/percpu.h:9,
                    from ./arch/riscv/include/generated/asm/percpu.h:1,
                    from include/linux/alloc_tag.h:12,
                    from include/linux/percpu.h:5,
                    from include/asm-generic/local64.h:5,
                    from ./arch/riscv/include/generated/asm/local64.h:1,
                    from include/linux/perf_event.h:26,
                    from include/linux/hw_breakpoint.h:5,
                    from arch/riscv/kernel/hw_breakpoint.c:8:
>> include/linux/percpu-defs.h:221:59: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     221 |         const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL;    \
         |                                                           ^
   include/linux/percpu-defs.h:264:9: note: in expansion of macro '__verify_pcpu_ptr'
     264 |         __verify_pcpu_ptr(ptr);                                         \
         |         ^~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:41:22: note: in expansion of macro 'per_cpu_ptr'
      41 |         dbtr_shmem = per_cpu_ptr(sbi_dbtr_shmem, cpu);
         |                      ^~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:49:15: error: implicit declaration of function 'sbi_ecall' [-Wimplicit-function-declaration]
      49 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_SETUP_SHMEM,
         |               ^~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:49:25: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
      49 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_SETUP_SHMEM,
         |                         ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:49:25: note: each undeclared identifier is reported only once for each function it appears in
>> arch/riscv/kernel/hw_breakpoint.c:49:39: error: 'SBI_EXT_DBTR_SETUP_SHMEM' undeclared (first use in this function)
      49 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_SETUP_SHMEM,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:55:24: error: implicit declaration of function 'sbi_err_map_linux_errno' [-Wimplicit-function-declaration]
      55 |                 return sbi_err_map_linux_errno(ret.error);
         |                        ^~~~~~~~~~~~~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:39:23: warning: unused variable 'ret' [-Wunused-variable]
      39 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_smp_teardown_sbi_shmem':
   arch/riscv/kernel/hw_breakpoint.c:65:23: error: storage size of 'ret' isn't known
      65 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c:68:25: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
      68 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_SETUP_SHMEM,
         |                         ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:68:39: error: 'SBI_EXT_DBTR_SETUP_SHMEM' undeclared (first use in this function)
      68 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_SETUP_SHMEM,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:69:25: error: 'SBI_SHMEM_DISABLE' undeclared (first use in this function); did you mean 'PR_SPEC_DISABLE'?
      69 |                         SBI_SHMEM_DISABLE, SBI_SHMEM_DISABLE, 0, 0, 0, 0);
         |                         ^~~~~~~~~~~~~~~~~
         |                         PR_SPEC_DISABLE
   arch/riscv/kernel/hw_breakpoint.c:65:23: warning: unused variable 'ret' [-Wunused-variable]
      65 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'init_sbi_dbtr':
   arch/riscv/kernel/hw_breakpoint.c:83:23: error: storage size of 'ret' isn't known
      83 |         struct sbiret ret;
         |                       ^~~
>> arch/riscv/kernel/hw_breakpoint.c:85:13: error: implicit declaration of function 'sbi_probe_extension' [-Wimplicit-function-declaration]
      85 |         if (sbi_probe_extension(SBI_EXT_DBTR) <= 0) {
         |             ^~~~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:85:33: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
      85 |         if (sbi_probe_extension(SBI_EXT_DBTR) <= 0) {
         |                                 ^~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:91:39: error: 'SBI_EXT_DBTR_NUM_TRIGGERS' undeclared (first use in this function)
      91 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_NUM_TRIGGERS,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:83:23: warning: unused variable 'ret' [-Wunused-variable]
      83 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'hw_breakpoint_handler':
>> arch/riscv/kernel/hw_breakpoint.c:379:39: error: storage size of 'sret' isn't known
     379 |                         struct sbiret sret;
         |                                       ^~~~
>> include/linux/percpu-defs.h:221:59: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     221 |         const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL;    \
         |                                                           ^
   include/linux/percpu-defs.h:264:9: note: in expansion of macro '__verify_pcpu_ptr'
     264 |         __verify_pcpu_ptr(ptr);                                         \
         |         ^~~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:268:33: note: in expansion of macro 'per_cpu_ptr'
     268 | #define raw_cpu_ptr(ptr)        per_cpu_ptr(ptr, 0)
         |                                 ^~~~~~~~~~~
   include/linux/percpu-defs.h:269:33: note: in expansion of macro 'raw_cpu_ptr'
     269 | #define this_cpu_ptr(ptr)       raw_cpu_ptr(ptr)
         |                                 ^~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:394:33: note: in expansion of macro 'this_cpu_ptr'
     394 |                         shmem = this_cpu_ptr(sbi_dbtr_shmem);
         |                                 ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:395:42: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
     395 |                         sret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_READ,
         |                                          ^~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:395:56: error: 'SBI_EXT_DBTR_TRIG_READ' undeclared (first use in this function)
     395 |                         sret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_READ,
         |                                                        ^~~~~~~~~~~~~~~~~~~~~~
   In file included from include/linux/byteorder/little_endian.h:5,
                    from arch/riscv/include/uapi/asm/byteorder.h:10,
                    from include/uapi/linux/perf_event.h:20,
                    from include/linux/perf_event.h:17:
>> arch/riscv/kernel/hw_breakpoint.c:398:57: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     398 |                                 tdata1 = le_to_cpu(shmem->data.tdata1);
         |                                                         ^~
   include/uapi/linux/byteorder/little_endian.h:35:51: note: in definition of macro '__le32_to_cpu'
      35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
         |                                                   ^
   arch/riscv/include/asm/hw_breakpoint.h:23:19: note: in expansion of macro 'le32_to_cpu'
      23 | #define le_to_cpu le32_to_cpu
         |                   ^~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:398:42: note: in expansion of macro 'le_to_cpu'
     398 |                                 tdata1 = le_to_cpu(shmem->data.tdata1);
         |                                          ^~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:379:39: warning: unused variable 'sret' [-Wunused-variable]
     379 |                         struct sbiret sret;
         |                                       ^~~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_install_hw_breakpoint':
>> include/linux/percpu-defs.h:221:59: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     221 |         const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL;    \
         |                                                           ^
   include/linux/percpu-defs.h:264:9: note: in expansion of macro '__verify_pcpu_ptr'
     264 |         __verify_pcpu_ptr(ptr);                                         \
         |         ^~~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:268:33: note: in expansion of macro 'per_cpu_ptr'
     268 | #define raw_cpu_ptr(ptr)        per_cpu_ptr(ptr, 0)
         |                                 ^~~~~~~~~~~
   include/linux/percpu-defs.h:269:33: note: in expansion of macro 'raw_cpu_ptr'
     269 | #define this_cpu_ptr(ptr)       raw_cpu_ptr(ptr)
         |                                 ^~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:444:45: note: in expansion of macro 'this_cpu_ptr'
     444 |         union sbi_dbtr_shmem_entry *shmem = this_cpu_ptr(sbi_dbtr_shmem);
         |                                             ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:449:23: error: storage size of 'ret' isn't known
     449 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c:455:22: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     455 |         xmit = &shmem->data;
         |                      ^~
   arch/riscv/kernel/hw_breakpoint.c:456:22: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     456 |         recv = &shmem->id;
         |                      ^~
>> arch/riscv/kernel/hw_breakpoint.c:457:13: error: invalid use of undefined type 'struct sbi_dbtr_data_msg'
     457 |         xmit->tdata1 = cpu_to_le(bp->tdata1);
         |             ^~
   arch/riscv/kernel/hw_breakpoint.c:458:13: error: invalid use of undefined type 'struct sbi_dbtr_data_msg'
     458 |         xmit->tdata2 = cpu_to_le(bp->tdata2);
         |             ^~
   arch/riscv/kernel/hw_breakpoint.c:459:13: error: invalid use of undefined type 'struct sbi_dbtr_data_msg'
     459 |         xmit->tdata3 = cpu_to_le(bp->tdata3);
         |             ^~
   arch/riscv/kernel/hw_breakpoint.c:461:25: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
     461 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_INSTALL,
         |                         ^~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:461:39: error: 'SBI_EXT_DBTR_TRIG_INSTALL' undeclared (first use in this function)
     461 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_INSTALL,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:470:29: error: invalid use of undefined type 'struct sbi_dbtr_id_msg'
     470 |         idx = le_to_cpu(recv->idx);
         |                             ^~
   include/uapi/linux/byteorder/little_endian.h:35:51: note: in definition of macro '__le32_to_cpu'
      35 | #define __le32_to_cpu(x) ((__force __u32)(__le32)(x))
         |                                                   ^
   arch/riscv/include/asm/hw_breakpoint.h:23:19: note: in expansion of macro 'le32_to_cpu'
      23 | #define le_to_cpu le32_to_cpu
         |                   ^~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:470:15: note: in expansion of macro 'le_to_cpu'
     470 |         idx = le_to_cpu(recv->idx);
         |               ^~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:449:23: warning: unused variable 'ret' [-Wunused-variable]
     449 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_uninstall_hw_breakpoint':
   arch/riscv/kernel/hw_breakpoint.c:496:23: error: storage size of 'ret' isn't known
     496 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c:516:25: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
     516 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_UNINSTALL,
         |                         ^~~~~~~~~~~~
>> arch/riscv/kernel/hw_breakpoint.c:516:39: error: 'SBI_EXT_DBTR_TRIG_UNINSTALL' undeclared (first use in this function)
     516 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_UNINSTALL,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:496:23: warning: unused variable 'ret' [-Wunused-variable]
     496 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_enable_hw_breakpoint':
   arch/riscv/kernel/hw_breakpoint.c:531:23: error: storage size of 'ret' isn't known
     531 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c:550:25: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
     550 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_ENABLE,
         |                         ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:550:39: error: 'SBI_EXT_DBTR_TRIG_ENABLE' undeclared (first use in this function)
     550 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_ENABLE,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:531:23: warning: unused variable 'ret' [-Wunused-variable]
     531 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_update_hw_breakpoint':
   include/linux/percpu-defs.h:221:59: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     221 |         const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL;    \
         |                                                           ^
   include/linux/percpu-defs.h:264:9: note: in expansion of macro '__verify_pcpu_ptr'
     264 |         __verify_pcpu_ptr(ptr);                                         \
         |         ^~~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:268:33: note: in expansion of macro 'per_cpu_ptr'
     268 | #define raw_cpu_ptr(ptr)        per_cpu_ptr(ptr, 0)
         |                                 ^~~~~~~~~~~
   include/linux/percpu-defs.h:269:33: note: in expansion of macro 'raw_cpu_ptr'
     269 | #define this_cpu_ptr(ptr)       raw_cpu_ptr(ptr)
         |                                 ^~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:567:45: note: in expansion of macro 'this_cpu_ptr'
     567 |         union sbi_dbtr_shmem_entry *shmem = this_cpu_ptr(sbi_dbtr_shmem);
         |                                             ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:570:23: error: storage size of 'ret' isn't known
     570 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c:588:22: error: invalid use of undefined type 'union sbi_dbtr_shmem_entry'
     588 |         xmit = &shmem->data;
         |                      ^~
   arch/riscv/kernel/hw_breakpoint.c:589:13: error: invalid use of undefined type 'struct sbi_dbtr_data_msg'
     589 |         xmit->tdata1 = cpu_to_le(bp->tdata1);
         |             ^~
   arch/riscv/kernel/hw_breakpoint.c:590:13: error: invalid use of undefined type 'struct sbi_dbtr_data_msg'
     590 |         xmit->tdata2 = cpu_to_le(bp->tdata2);
         |             ^~
   arch/riscv/kernel/hw_breakpoint.c:591:13: error: invalid use of undefined type 'struct sbi_dbtr_data_msg'
     591 |         xmit->tdata3 = cpu_to_le(bp->tdata3);
         |             ^~
   arch/riscv/kernel/hw_breakpoint.c:593:25: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
     593 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_UPDATE,
         |                         ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:593:39: error: 'SBI_EXT_DBTR_TRIG_UPDATE' undeclared (first use in this function)
     593 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_UPDATE,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:570:23: warning: unused variable 'ret' [-Wunused-variable]
     570 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_disable_hw_breakpoint':
   arch/riscv/kernel/hw_breakpoint.c:606:23: error: storage size of 'ret' isn't known
     606 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c:621:25: error: 'SBI_EXT_DBTR' undeclared (first use in this function)
     621 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_DISABLE,
         |                         ^~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:621:39: error: 'SBI_EXT_DBTR_TRIG_DISABLE' undeclared (first use in this function)
     621 |         ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_TRIG_DISABLE,
         |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:606:23: warning: unused variable 'ret' [-Wunused-variable]
     606 |         struct sbiret ret;
         |                       ^~~
   arch/riscv/kernel/hw_breakpoint.c: In function 'arch_hw_breakpoint_init':
   arch/riscv/kernel/hw_breakpoint.c:655:47: error: invalid application of 'sizeof' to incomplete type 'union sbi_dbtr_shmem_entry'
     655 |         sbi_dbtr_shmem = __alloc_percpu(sizeof(*sbi_dbtr_shmem) * dbtr_total_num,
         |                                               ^
   include/linux/alloc_tag.h:256:16: note: in definition of macro 'alloc_hooks_tag'
     256 |         typeof(_do_alloc) _res;                                         \
         |                ^~~~~~~~~
   include/linux/percpu.h:143:9: note: in expansion of macro 'alloc_hooks'
     143 |         alloc_hooks(pcpu_alloc_noprof(_size, _align, false, GFP_KERNEL))
         |         ^~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:655:26: note: in expansion of macro '__alloc_percpu'
     655 |         sbi_dbtr_shmem = __alloc_percpu(sizeof(*sbi_dbtr_shmem) * dbtr_total_num,
         |                          ^~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:655:47: error: invalid application of 'sizeof' to incomplete type 'union sbi_dbtr_shmem_entry'
     655 |         sbi_dbtr_shmem = __alloc_percpu(sizeof(*sbi_dbtr_shmem) * dbtr_total_num,
         |                                               ^
   include/linux/alloc_tag.h:260:24: note: in definition of macro 'alloc_hooks_tag'
     260 |                 _res = _do_alloc;                                       \
         |                        ^~~~~~~~~
   include/linux/percpu.h:143:9: note: in expansion of macro 'alloc_hooks'
     143 |         alloc_hooks(pcpu_alloc_noprof(_size, _align, false, GFP_KERNEL))
         |         ^~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:655:26: note: in expansion of macro '__alloc_percpu'
     655 |         sbi_dbtr_shmem = __alloc_percpu(sizeof(*sbi_dbtr_shmem) * dbtr_total_num,
         |                          ^~~~~~~~~~~~~~
   arch/riscv/kernel/hw_breakpoint.c:655:47: error: invalid application of 'sizeof' to incomplete type 'union sbi_dbtr_shmem_entry'
     655 |         sbi_dbtr_shmem = __alloc_percpu(sizeof(*sbi_dbtr_shmem) * dbtr_total_num,
         |                                               ^
   include/linux/alloc_tag.h:263:24: note: in definition of macro 'alloc_hooks_tag'


vim +39 arch/riscv/kernel/hw_breakpoint.c

    34	
    35	static int arch_smp_setup_sbi_shmem(unsigned int cpu)
    36	{
    37		union sbi_dbtr_shmem_entry *dbtr_shmem;
    38		phys_addr_t shmem_pa;
  > 39		struct sbiret ret;
    40	
    41		dbtr_shmem = per_cpu_ptr(sbi_dbtr_shmem, cpu);
    42		if (!dbtr_shmem) {
    43			pr_err("Invalid per-cpu shared memory for debug triggers\n");
    44			return -ENODEV;
    45		}
    46	
    47		shmem_pa = per_cpu_ptr_to_phys(dbtr_shmem);
    48	
  > 49		ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_SETUP_SHMEM,
    50				MEM_LO(shmem_pa), MEM_HI(shmem_pa), 0, 0, 0, 0);
    51	
    52		if (ret.error) {
    53			pr_warn("%s: failed to setup shared memory. error: %ld\n",
    54				__func__, ret.error);
  > 55			return sbi_err_map_linux_errno(ret.error);
    56		}
    57	
    58		pr_info("CPU %d: HW Breakpoint shared memory registered.\n", cpu);
    59	
    60		return 0;
    61	}
    62	
    63	static int arch_smp_teardown_sbi_shmem(unsigned int cpu)
    64	{
    65		struct sbiret ret;
    66	
    67		/* Disable shared memory */
    68		ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_SETUP_SHMEM,
  > 69				SBI_SHMEM_DISABLE, SBI_SHMEM_DISABLE, 0, 0, 0, 0);
    70	
    71		if (ret.error)
    72			pr_warn("%s: failed to disable shared memory. error: %ld\n",
    73				__func__, ret.error);
    74		else
    75			pr_info("CPU %d: HW Breakpoint shared memory disabled.\n", cpu);
    76	
    77		return 0;
    78	}
    79	
    80	static void init_sbi_dbtr(void)
    81	{
    82		unsigned long tdata1;
    83		struct sbiret ret;
    84	
  > 85		if (sbi_probe_extension(SBI_EXT_DBTR) <= 0) {
    86			pr_warn("SBI_EXT_DBTR is not supported\n");
    87			dbtr_total_num = 0;
    88			goto done;
    89		}
    90	
  > 91		ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_NUM_TRIGGERS,
    92				0, 0, 0, 0, 0, 0);
    93		if (ret.error) {
    94			pr_warn("Failed to detect triggers\n");
    95			dbtr_total_num = 0;
    96			goto done;
    97		}
    98	
    99		tdata1 = 0;
   100		tdata1 = RISCV_DBTR_SET_TDATA1_TYPE(tdata1, RISCV_DBTR_TRIG_MCONTROL6);
   101	
   102		ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_NUM_TRIGGERS,
   103				tdata1, 0, 0, 0, 0, 0);
   104		if (ret.error) {
   105			pr_warn("Failed to detect mcontrol6 triggers\n");
   106		} else if (!ret.value) {
   107			pr_warn("Type 6 triggers not available\n");
   108		} else {
   109			dbtr_total_num = ret.value;
   110			dbtr_type = RISCV_DBTR_TRIG_MCONTROL6;
   111			pr_warn("Mcontrol6 trigger available.\n");
   112			goto done;
   113		}
   114	
   115		/* fallback to type 2 triggers if type 6 is not available */
   116	
   117		tdata1 = 0;
   118		tdata1 = RISCV_DBTR_SET_TDATA1_TYPE(tdata1, RISCV_DBTR_TRIG_MCONTROL);
   119	
   120		ret = sbi_ecall(SBI_EXT_DBTR, SBI_EXT_DBTR_NUM_TRIGGERS,
   121				tdata1, 0, 0, 0, 0, 0);
   122		if (ret.error) {
   123			pr_warn("Failed to detect mcontrol triggers\n");
   124		} else if (!ret.value) {
   125			pr_warn("Type 2 triggers not available\n");
   126		} else {
   127			dbtr_total_num = ret.value;
   128			dbtr_type = RISCV_DBTR_TRIG_MCONTROL;
   129			goto done;
   130		}
   131	
   132	done:
   133		dbtr_init = 1;
   134	}
   135	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-19  5:45 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-19  5:44 [avpatel:riscv_trace_support_v5 90/108] arch/riscv/kernel/hw_breakpoint.c:39:23: error: storage size of 'ret' isn't known 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.