Kernel
  Threads by month 
                
            - ----- 2025 -----
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- 20965 discussions
                    
                        Three features related:
 - add a switch to enable hungtask check for io, patch 1-2
 - add a config to control hierarchical throttle, patch 3-4
 - support enable/disable blk-mq debugfs dynamically, patch 5-11
Christoph Hellwig (2):
  block: serialize all debugfs operations using q->debugfs_mutex
  block: remove per-disk debugfs files in blk_unregister_queue
Yu Kuai (9):
  block: add a switch to enable hungtask check for io
  block: disable BLK_IO_HUNG_TASK_CHECK by default
  blk-throttle: add a config to control hierarchical throttle in cgroup
    v1
  blk-throttle: fix missing prefix "CONFIG_"
  block: protect blk_mq_debugfs_register/unregister_hctx() with
    'debugfs_mutex'
  block: shutdown blktrace in blk_release_queue()
  block: support enable/disable blk-mq debugfs dynamically
  block: fix kabi broken in struct request_queue
  block: support to disable debugfs by default
 arch/arm64/configs/openeuler_defconfig |  2 +
 arch/x86/configs/openeuler_defconfig   |  2 +
 block/Kconfig                          | 31 +++++++++
 block/bio.c                            |  2 +-
 block/blk-core.c                       | 13 +++-
 block/blk-exec.c                       |  2 +-
 block/blk-mq-debugfs.c                 | 87 ++++++++++++++++++++++----
 block/blk-mq-debugfs.h                 |  5 --
 block/blk-mq-sched.c                   | 11 ++++
 block/blk-mq.c                         | 12 ++++
 block/blk-rq-qos.c                     |  2 -
 block/blk-rq-qos.h                     |  7 ++-
 block/blk-sysfs.c                      | 82 ++++++++++++++++++++----
 block/blk-throttle.c                   | 17 ++++-
 block/blk.h                            |  1 +
 include/linux/blkdev.h                 |  8 ++-
 kernel/trace/blktrace.c                |  3 -
 17 files changed, 245 insertions(+), 42 deletions(-)
-- 
2.39.2
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            12
                            
                          
                          
                            
    
                          
                        
                     
                        
                    
                        
                            
                                
                            
                            [PATCH OLK-5.10 v2] rcu: shorten the critical section that rnp->lock protects in rcu_dump_cpu_stacks
                        
                        
by Wei Li 20 May '24
                    by Wei Li 20 May '24
20 May '24
                    
                        From: Zheng Zengkai <zhengzengkai(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7MQJB
--------------------------------
Concurrent ltp stress testcases cause a hardlockup issue in KunPeng920:
------------[ cut here ]------------
[ 2301.316914] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[ 2301.320386]  try_charge+0x2c8/0x600
[ 2301.325566] rcu:     69-...0: (23 ticks this GP) idle=fb2/1/0x4000000000000000 softirq=39368/39368 fqs=5591
[ 2301.335766]  (detected by 29, t=15006 jiffies, g=91585, q=3635521)
[ 2301.345458] Sending NMI from CPU 29 to CPUs 69:
------------[ cut here ]------------
[ 2379.033470] NMI watchdog: Watchdog detected hard LOCKUP on cpu 69
[ 2379.033523] CPU: 69 PID: 2143608 Comm: memcg_test_1 Kdump: loaded Tainted: G        W         5.10.0-sp2-lockdepdbg+ #45
[ 2379.033524] Hardware name: Huawei TaiShan 5280 V2/BC82AMDDA, BIOS 1.93 10/13/2022
[ 2379.033525] pstate: 00400089 (nzcv daIf +PAN -UAO -TCO BTYPE=--)
[ 2379.033525] pc : native_queued_spin_lock_slowpath+0x264/0x330
[ 2379.033526] lr : rcu_iw_handler+0xc4/0x130
[ 2379.033527] sp : ffff80001022be60
[ 2379.033528] x29: ffff80001022be60 x28: ffff2f6c7cc44d00
[ 2379.033529] x27: ffff2f6b81ee21a8 x26: ffff80001022c000
[ 2379.033530] x25: ffff800010228000 x24: ffffd913b32a6000
[ 2379.033532] x23: 0000000000000000 x22: ffffd913b3aa4000
[ 2379.033533] x21: ffffd913b32ba5f0 x20: ffff2f6b7ffa37c0
[ 2379.033534] x19: ffffd913b365c440 x18: 0000000000000060
[ 2379.033535] x17: 0000000000000000 x16: 0000000000000000
[ 2379.033537] x15: ffffffffffffffff x14: ffff8000bcb9b4f0
[ 2379.033538] x13: 00000000fffffffd x12: 0000000000000040
[ 2379.033539] x11: ffff2f63806bada0 x10: ffff2f63806bada2
[ 2379.033541] x9 : 0000000000000000 x8 : 0000000000000000
[ 2379.033542] x7 : ffff2f6b7ffa3740 x6 : ffffd913b2f67740
[ 2379.033543] x5 : ffff2f6b7ffa3740 x4 : 0000000001180101
[ 2379.033544] x3 : ffffd913b365c440 x2 : 0000000000000118
[ 2379.033545] x1 : 0000000001180000 x0 : 0000000000000000
[ 2379.033547] Call trace:
[ 2379.033547]  native_queued_spin_lock_slowpath+0x264/0x330
[ 2379.033548]  irq_work_single+0x38/0x9c
[ 2379.033548]  flush_smp_call_function_queue+0x144/0x26c
[ 2379.033549]  generic_smp_call_function_single_interrupt+0x1c/0x30
[ 2379.033550]  do_handle_IPI+0x84/0x2e4
[ 2379.033550]  ipi_handler+0x24/0x3c
[ 2379.033551]  handle_percpu_devid_fasteoi_ipi+0x84/0x14c
[ 2379.033552]  __handle_domain_irq+0x84/0xf0
[ 2379.033553]  gic_handle_irq+0x78/0x2c0
[ 2379.033553]  el1_irq+0xb8/0x140
[ 2379.033554]  dump_stack+0xe8/0x140
[ 2379.033554]  dump_header+0x50/0x19c
[ 2379.033555]  out_of_memory+0x338/0x380
[ 2379.033556]  mem_cgroup_out_of_memory+0x128/0x144
[ 2379.033557]  mem_cgroup_oom+0x188/0x250
[ 2379.033557]  try_charge+0x2c8/0x600
[ 2379.033558]  mem_cgroup_charge+0x128/0x424
[ 2379.033559]  wp_page_copy+0xc8/0xb40
[ 2379.033559]  do_wp_page+0x228/0x594
[ 2379.033560]  handle_pte_fault+0x1f8/0x21c
[ 2379.033561]  __handle_mm_fault+0x1b0/0x380
[ 2379.033561]  handle_mm_fault+0xf4/0x250
[ 2379.033562]  do_page_fault+0x188/0x454
[ 2379.033563]  do_mem_abort+0x48/0xb0
[ 2379.033563]  el0_da+0x44/0x80
[ 2379.033564]  el0_sync_handler+0x88/0xb4
[ 2379.033564]  el0_sync+0x160/0x180
cpu29                                   cpu69
rcu_dump_cpu_stacks() grab rnp->lock
  nmi_trigger_cpumask_backtrace()
    arm64_send_ipi()
                                        do_handle_IPI
                                          flush_smp_call_function_queue
                                            rcu_iw_handler spin rnp->lock
                                              deadlock
                                            nmi_cpu_backtrace
    wait for 10s or backtrace_mask clear
For arm64 w/o NMI-triggered stack traces, IPI backtrace feature is used,
while in rcu_dump_cpu_stacks(), raw_spin_lock_irqsave_rcu_node() will
grab the rcu_node->lock to protect the rcu_node data used in the
for_each_leaf_node_possible_cpu loop, while the process of backtrace
for the rcu stalled cpu may be longer than expected, causing potential
concurrent issue while someone contending for the same rcu_node->lock.
Like the call trace shown above, rcu_node->lock will not be released
until all the stalled cpus' backtrace finished in nmi_cpu_backtrace()
or 10s timeout in nmi_trigger_cpumask_backtrace(), if there are pending
IPI callbacks in the smp call_single_queue ahead of the ipi_cpu_backtrace
callback contending for the same rcu_node->lock, deadlock will be
inevitable.
To avoid such problems, shorten the critical section that rcu_node->lock
protects to avoid waiting for the backtrace process finish.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Fixes: 81ad62c3883e ("arm64: Fix the ipi backtrace warning when softlockup")
Signed-off-by: Wei Li <liwei391(a)huawei.com>
---
 kernel/rcu/tree_stall.h | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h
index e9d8b6dbde7c..35624190c6f2 100644
--- a/kernel/rcu/tree_stall.h
+++ b/kernel/rcu/tree_stall.h
@@ -334,10 +334,12 @@ static void rcu_dump_cpu_stacks(void)
 		raw_spin_lock_irqsave_rcu_node(rnp, flags);
 		for_each_leaf_node_possible_cpu(rnp, cpu)
 			if (rnp->qsmask & leaf_node_cpu_bit(rnp, cpu)) {
+				raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
 				if (cpu_is_offline(cpu))
 					pr_err("Offline CPU %d blocking current GP.\n", cpu);
 				else
 					dump_cpu_task(cpu);
+				raw_spin_lock_irqsave_rcu_node(rnp, flags);
 			}
 		raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
 	}
-- 
2.25.1
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            1
                            
                          
                          
                            
    
                          
                        
                    
                    
                        Patchset of CVE-2024-26907.
v2:
  - Add new bugfix.
Alexey Dobriyan (1):
  uapi: stddef.h: Fix __DECLARE_FLEX_ARRAY for C++
Dmitry Antipov (1):
  uapi: propagate __struct_group() attributes to the container union
Kees Cook (3):
  stddef: Introduce struct_group() helper macro
  stddef: Introduce DECLARE_FLEX_ARRAY() helper
  kernel-doc: fix struct_group_tagged() parsing
Leon Romanovsky (1):
  RDMA/mlx5: Fix fortify source warning while accessing Eth segment
Tadeusz Struk (1):
  uapi/linux/stddef.h: Add include guards
 drivers/infiniband/hw/mlx5/wr.c |  2 +-
 include/linux/mlx5/qp.h         |  5 ++-
 include/linux/stddef.h          | 61 +++++++++++++++++++++++++++++++++
 include/uapi/linux/stddef.h     | 48 ++++++++++++++++++++++++++
 scripts/kernel-doc              | 11 +++++-
 5 files changed, 124 insertions(+), 3 deletions(-)
-- 
2.25.1
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            8
                            
                          
                          
                            
    
                          
                        
                     
                        
                    
                        
                            
                                
                            
                            [PATCH OLK-5.10] rcu: shorten the critical section that rnp->lock protects in rcu_dump_cpu_stacks
                        
                        
by Wei Li 20 May '24
                    by Wei Li 20 May '24
20 May '24
                    
                        From: Zheng Zengkai <zhengzengkai(a)huawei.com>
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/I7MQJB
--------------------------------
Concurrent ltp stress testcases cause a hardlockup issue in KunPeng920:
------------[ cut here ]------------
[ 2301.316914] rcu: INFO: rcu_sched detected stalls on CPUs/tasks:
[ 2301.320386]  try_charge+0x2c8/0x600
[ 2301.325566] rcu:     69-...0: (23 ticks this GP) idle=fb2/1/0x4000000000000000 softirq=39368/39368 fqs=5591
[ 2301.335766]  (detected by 29, t=15006 jiffies, g=91585, q=3635521)
[ 2301.345458] Sending NMI from CPU 29 to CPUs 69:
------------[ cut here ]------------
[ 2379.033470] NMI watchdog: Watchdog detected hard LOCKUP on cpu 69
[ 2379.033523] CPU: 69 PID: 2143608 Comm: memcg_test_1 Kdump: loaded Tainted: G        W         5.10.0-sp2-lockdepdbg+ #45
[ 2379.033524] Hardware name: Huawei TaiShan 5280 V2/BC82AMDDA, BIOS 1.93 10/13/2022
[ 2379.033525] pstate: 00400089 (nzcv daIf +PAN -UAO -TCO BTYPE=--)
[ 2379.033525] pc : native_queued_spin_lock_slowpath+0x264/0x330
[ 2379.033526] lr : rcu_iw_handler+0xc4/0x130
[ 2379.033527] sp : ffff80001022be60
[ 2379.033528] x29: ffff80001022be60 x28: ffff2f6c7cc44d00
[ 2379.033529] x27: ffff2f6b81ee21a8 x26: ffff80001022c000
[ 2379.033530] x25: ffff800010228000 x24: ffffd913b32a6000
[ 2379.033532] x23: 0000000000000000 x22: ffffd913b3aa4000
[ 2379.033533] x21: ffffd913b32ba5f0 x20: ffff2f6b7ffa37c0
[ 2379.033534] x19: ffffd913b365c440 x18: 0000000000000060
[ 2379.033535] x17: 0000000000000000 x16: 0000000000000000
[ 2379.033537] x15: ffffffffffffffff x14: ffff8000bcb9b4f0
[ 2379.033538] x13: 00000000fffffffd x12: 0000000000000040
[ 2379.033539] x11: ffff2f63806bada0 x10: ffff2f63806bada2
[ 2379.033541] x9 : 0000000000000000 x8 : 0000000000000000
[ 2379.033542] x7 : ffff2f6b7ffa3740 x6 : ffffd913b2f67740
[ 2379.033543] x5 : ffff2f6b7ffa3740 x4 : 0000000001180101
[ 2379.033544] x3 : ffffd913b365c440 x2 : 0000000000000118
[ 2379.033545] x1 : 0000000001180000 x0 : 0000000000000000
[ 2379.033547] Call trace:
[ 2379.033547]  native_queued_spin_lock_slowpath+0x264/0x330
[ 2379.033548]  irq_work_single+0x38/0x9c
[ 2379.033548]  flush_smp_call_function_queue+0x144/0x26c
[ 2379.033549]  generic_smp_call_function_single_interrupt+0x1c/0x30
[ 2379.033550]  do_handle_IPI+0x84/0x2e4
[ 2379.033550]  ipi_handler+0x24/0x3c
[ 2379.033551]  handle_percpu_devid_fasteoi_ipi+0x84/0x14c
[ 2379.033552]  __handle_domain_irq+0x84/0xf0
[ 2379.033553]  gic_handle_irq+0x78/0x2c0
[ 2379.033553]  el1_irq+0xb8/0x140
[ 2379.033554]  dump_stack+0xe8/0x140
[ 2379.033554]  dump_header+0x50/0x19c
[ 2379.033555]  out_of_memory+0x338/0x380
[ 2379.033556]  mem_cgroup_out_of_memory+0x128/0x144
[ 2379.033557]  mem_cgroup_oom+0x188/0x250
[ 2379.033557]  try_charge+0x2c8/0x600
[ 2379.033558]  mem_cgroup_charge+0x128/0x424
[ 2379.033559]  wp_page_copy+0xc8/0xb40
[ 2379.033559]  do_wp_page+0x228/0x594
[ 2379.033560]  handle_pte_fault+0x1f8/0x21c
[ 2379.033561]  __handle_mm_fault+0x1b0/0x380
[ 2379.033561]  handle_mm_fault+0xf4/0x250
[ 2379.033562]  do_page_fault+0x188/0x454
[ 2379.033563]  do_mem_abort+0x48/0xb0
[ 2379.033563]  el0_da+0x44/0x80
[ 2379.033564]  el0_sync_handler+0x88/0xb4
[ 2379.033564]  el0_sync+0x160/0x180
cpu29                                   cpu69
rcu_dump_cpu_stacks() grab rnp->lock
  nmi_trigger_cpumask_backtrace()
    arm64_send_ipi()
                                        do_handle_IPI
                                          flush_smp_call_function_queue
                                            rcu_iw_handler spin rnp->lock
                                              deadlock
                                            nmi_cpu_backtrace
    wait for 10s or backtrace_mask clear
For arm64 w/o NMI-triggered stack traces, IPI backtrace feature is used,
while in rcu_dump_cpu_stacks(), raw_spin_lock_irqsave_rcu_node() will
grab the rcu_node->lock to protect the rcu_node data used in the
for_each_leaf_node_possible_cpu loop, while the process of backtrace
for the rcu stalled cpu may be longer than expected, causing potential
concurrent issue while someone contending for the same rcu_node->lock.
Like the call trace shown above, rcu_node->lock will not be released
until all the stalled cpus' backtrace finished in nmi_cpu_backtrace()
or 10s timeout in nmi_trigger_cpumask_backtrace(), if there are pending
IPI callbacks in the smp call_single_queue ahead of the ipi_cpu_backtrace
callback contending for the same rcu_node->lock, deadlock will be
inevitable.
To avoid such problems, shorten the critical section that rcu_node->lock
protects to avoid waiting for the backtrace process finish.
Signed-off-by: Zheng Zengkai <zhengzengkai(a)huawei.com>
Signed-off-by: Wei Li <liwei391(a)huawei.com>
---
 kernel/rcu/tree_stall.h | 2 ++
 1 file changed, 2 insertions(+)
diff --git a/kernel/rcu/tree_stall.h b/kernel/rcu/tree_stall.h
index e9d8b6dbde7c..35624190c6f2 100644
--- a/kernel/rcu/tree_stall.h
+++ b/kernel/rcu/tree_stall.h
@@ -334,10 +334,12 @@ static void rcu_dump_cpu_stacks(void)
 		raw_spin_lock_irqsave_rcu_node(rnp, flags);
 		for_each_leaf_node_possible_cpu(rnp, cpu)
 			if (rnp->qsmask & leaf_node_cpu_bit(rnp, cpu)) {
+				raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
 				if (cpu_is_offline(cpu))
 					pr_err("Offline CPU %d blocking current GP.\n", cpu);
 				else
 					dump_cpu_task(cpu);
+				raw_spin_lock_irqsave_rcu_node(rnp, flags);
 			}
 		raw_spin_unlock_irqrestore_rcu_node(rnp, flags);
 	}
-- 
2.25.1
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            1
                            
                          
                          
                            
    
                          
                        
                     
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-6.6] BUILD REGRESSION 4da472bba5924d1d422b595ae7497935ee678de0
                        
                        
by kernel test robot 18 May '24
                    by kernel test robot 18 May '24
18 May '24
                    
                        tree/branch: https://gitee.com/openeuler/kernel.git OLK-6.6
branch HEAD: 4da472bba5924d1d422b595ae7497935ee678de0  !7527  ext4 iomap performance optimize
Error/Warning ids grouped by kconfigs:
gcc_recent_errors
`-- arm64-defconfig
    `-- arch-arm64-kvm-vgic-vgic-mmio.c:warning:variable-is_pending-set-but-not-used
clang_recent_errors
|-- arm64-allmodconfig
|   |-- arch-arm64-kvm-vgic-vgic-mmio.c:warning:variable-is_pending-set-but-not-used
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_after_bond_active
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_after_bond_deactive
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_after_bond_modify
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_before_bond_active
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_before_bond_deactive
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_before_bond_modify
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_bond_before_active_check
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_bond_destroy
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_bond_init_slave
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_bond_netdev_event
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_bond_service_proc
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_bond_tracker_get
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_deatch_bond
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_detach_nic_bond_work
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_get_bond_dev
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_get_bond_dev_by_name
|   |-- drivers-infiniband-hw-hiroce3-bond-roce_bond_common.c:warning:no-previous-prototype-for-function-roce3_queue_bond_work
|   |-- drivers-infiniband-hw-hiroce3-cq-roce_cq.h:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-infiniband-hw-hiroce3-cq-roce_cq_destroy.c:warning:no-previous-prototype-for-function-roce3_cq_hw2sw
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_mtt.c:warning:no-previous-prototype-for-function-hmm_cleanup_mtt_table
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_mtt.c:warning:no-previous-prototype-for-function-hmm_init_mtt_table
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_mtt.c:warning:no-previous-prototype-for-function-hmm_rdma_mtt_alloc
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_mtt.c:warning:no-previous-prototype-for-function-hmm_rdma_mtt_free
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_mtt.c:warning:no-previous-prototype-for-function-hmm_rdma_write_mtt
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_mw_mr.c:warning:no-previous-prototype-for-function-hmm_rdma_disable_mr_mpt
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_mw_mr.c:warning:no-previous-prototype-for-function-hmm_rdma_enable_mr_mpt
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_comp_res.c:warning:no-previous-prototype-for-function-hmm_rdma_mpt_free
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_mr.c:warning:no-previous-prototype-for-function-hmm_alloc_mr
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_mr.c:warning:no-previous-prototype-for-function-hmm_free_tpt
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_mr.c:warning:no-previous-prototype-for-function-hmm_umem_write_mtt
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_umem.c:warning:Excess-function-parameter-context-description-in-hmm_umem_get
|   |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_umem.c:warning:Function-parameter-or-member-device-not-described-in-hmm_umem_get
|   |-- drivers-infiniband-hw-hiroce3-include-rdma-rdma_context_format.h:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-infiniband-hw-hiroce3-include-rdma-rdma_ext_ctx_format.h:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-infiniband-hw-hiroce3-include-rdma-roce_dif_format.h:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-infiniband-hw-hiroce3-include-rdma-roce_verbs_cmd.h:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-infiniband-hw-hiroce3-mr-roce_mr.c:warning:no-previous-prototype-for-function-roce3_check_mr_status
|   |-- drivers-infiniband-hw-hiroce3-rdma-rdma_comp.h:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-infiniband-hw-hiroce3-roce.h:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-infiniband-hw-hiroce3-roce_main.c:warning:no-previous-prototype-for-function-roce3_event
|   |-- drivers-infiniband-hw-hiroce3-roce_main.c:warning:no-previous-prototype-for-function-roce3_need_proc_bond_event
|   |-- drivers-infiniband-hw-hiroce3-roce_main.c:warning:no-previous-prototype-for-function-roce3_need_proc_link_event
|   |-- drivers-infiniband-hw-hiroce3-roce_sysfs.c:warning:the-current-pragma-pack-alignment-value-is-modified-in-the-included-file
|   |-- drivers-net-ethernet-bzwx-nce-comm-txrx.c:warning:no-previous-prototype-for-function-ne6x_alloc_rx_buffers
|   |-- drivers-net-ethernet-bzwx-nce-comm-txrx.c:warning:no-previous-prototype-for-function-ne6x_fill_jumbo_sgl
|   |-- drivers-net-ethernet-bzwx-nce-comm-txrx.c:warning:no-previous-prototype-for-function-ne6x_fill_tx_desc
|   |-- drivers-net-ethernet-bzwx-nce-comm-txrx.c:warning:no-previous-prototype-for-function-ne6x_fill_tx_priv_tag
|   |-- drivers-net-ethernet-bzwx-nce-comm-txrx.c:warning:no-previous-prototype-for-function-ne6x_unmap_and_free_tx_resource
|   |-- drivers-net-ethernet-bzwx-nce-comm-txrx.c:warning:no-previous-prototype-for-function-ne6x_xmit_jumbo
|   |-- drivers-net-ethernet-bzwx-nce-comm-txrx.c:warning:no-previous-prototype-for-function-ne6x_xmit_simple
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_arfs.c:warning:no-previous-prototype-for-function-ne6x_arfs_add_flow_rules
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_arfs.c:warning:no-previous-prototype-for-function-ne6x_arfs_del_flow_rules
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_arfs.c:warning:no-previous-prototype-for-function-ne6x_dev_add_fster_rules
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_arfs.c:warning:no-previous-prototype-for-function-ne6x_dev_del_fster_rules
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_arfs.c:warning:no-previous-prototype-for-function-ne6x_get_irq_num
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-getparam
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-my_atoi
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-my_isdigit
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-my_strtok
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_apb_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_apb_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_clean_queue
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_clr_table
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_erase_norflash
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_get_fru_info
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_get_mac
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_mem_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_mem_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_meter_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_read_norflash
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_set_dev_type_to_eeprom
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_set_hw_flag_eeprom
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_set_mac_to_eeprom
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_arfs_cnt
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_cq
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_cqdesc_states
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_cqring
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_pcie_drop_counter
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_queue
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_ring
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_rxdesc_states
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_rxq
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_rxring
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_txdesc_states
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_txq
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_txring
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_show_txtail
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_soc_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_soc_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_tab_delete
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_tab_insert
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_tab_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_tab_search
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_tab_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_templ_help
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_templ_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_templ_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_update_adpt_speed
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_debugfs.c:warning:no-previous-prototype-for-function-ne6x_dbg_write_norflash
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ext_toeplitz_key
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_crc32_init
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_get_eeprom
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_get_speed
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_proto_recv
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_proto_send
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_set_mac_inloop
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_spd_verify
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_transform_vf_stat_format
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_dev.c:warning:no-previous-prototype-for-function-ne6x_dev_update_status
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_interrupt.c:warning:no-previous-prototype-for-function-ne6x_adpt_request_irq_intx
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_interrupt.c:warning:no-previous-prototype-for-function-ne6x_adpt_request_irq_msix
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_interrupt.c:warning:no-previous-prototype-for-function-ne6x_msix_clean_vf_mbx
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_adjust_adpt_port_max_queue
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_adpt_release
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_aq_get_phy_capabilities
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_aq_get_vf_link_status
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_clean_rx_ring
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_clean_tx_ring
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_exit_module
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_free_cq_resources
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_free_rx_resources
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_free_tx_resources
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_hw_init
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_init_module
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_link_speed_to_rate
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_pf_init
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_print_link_message
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:no-previous-prototype-for-function-ne6x_set_vf_port_vlan
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_main.c:warning:variable-tx_linearize-set-but-not-used
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_procfs.c:warning:no-previous-prototype-for-function-ne6x_proc_i2c_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-_ne6x_reg_perform
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-_reg_apb_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-_reg_apb_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_axi_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_axi_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_get_user_data_template
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_lock
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_mem_read
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_mem_write
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_perform
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_polling
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_send
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_set_user_data_template
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_table_update
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_reg.c:warning:no-previous-prototype-for-function-ne6x_reg_unlock
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_adpt_close_vf
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_adpt_release_vf
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_adpt_setup_vf
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_clear_vf_status
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_conv_link_speed_to_virtchnl
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_free_vfs
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_is_reset_in_progress
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_mbx_deinit_snapshot
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_mbx_init_snapshot
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_reset_vf
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_sdk_send_msg_to_vf
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_send_init_mbx_mesg
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_set_vf_bw_for_max_vpnum
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_set_vf_state_qs_dis
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_status_to_errno
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_vc_notify_vf_link_state
|   |-- drivers-net-ethernet-bzwx-nce-ne6x-ne6x_virtchnl_pf.c:warning:no-previous-prototype-for-function-ne6x_vc_set_default_allowlist
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_debugfs.c:warning:no-previous-prototype-for-function-ne6xvf_showqueue
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_debugfs.c:warning:no-previous-prototype-for-function-ne6xvf_showring
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_ethtool.c:warning:unannotated-fall-through-between-switch-labels
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-nce_get_vsi_stats_struct
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_add_vlan_list
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_asq_done
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_configure_queues
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_del_vlan_list
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_down
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_init_interrupt_scheme
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_init_sdk_mbx
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_irq_enable_queues
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_is_remove_in_progress
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_pdev_to_adapter
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_process_config
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_promiscuous_mode_changed
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_main.c:warning:no-previous-prototype-for-function-ne6xvf_replace_primary_mac
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_virtchnl.c:warning:no-previous-prototype-for-function-ne6xvf_sdk_send_msg_to_pf
|   |-- drivers-net-ethernet-bzwx-nce-ne6x_vf-ne6xvf_virtchnl.c:warning:no-previous-prototype-for-function-ne6xvf_vf_parse_hw_config
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-bat_table-not-described-in-cqm_cla_table_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-buf_node_child-not-described-in-cqm_cla_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-buf_node_child-not-described-in-cqm_cla_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-buf_node_child-not-described-in-cqm_cla_update
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-buf_node_parent-not-described-in-cqm_cla_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-buf_node_parent-not-described-in-cqm_cla_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-buf_node_parent-not-described-in-cqm_cla_update
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-child_index-not-described-in-cqm_cla_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-child_index-not-described-in-cqm_cla_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-child_index-not-described-in-cqm_cla_update
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_table-not-described-in-cqm_cla_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_table-not-described-in-cqm_cla_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_table-not-described-in-cqm_cla_get_lock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_table-not-described-in-cqm_cla_get_unlock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_table-not-described-in-cqm_cla_put
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_table-not-described-in-cqm_cla_xyz
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_update_mode-not-described-in-cqm_cla_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cla_update_mode-not-described-in-cqm_cla_update
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-count-not-described-in-cqm_cla_get_lock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-count-not-described-in-cqm_cla_get_unlock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-count-not-described-in-cqm_cla_put
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_bat_fill_cla
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_bat_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_bat_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_bat_update
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_get_lock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_get_unlock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_put
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_update
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_cla_xyz
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-entry_numb-not-described-in-cqm_cla_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-entry_type-not-described-in-cqm_cla_table_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-index-not-described-in-cqm_cla_get_lock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-index-not-described-in-cqm_cla_get_unlock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-index-not-described-in-cqm_cla_put
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-pa-not-described-in-cqm_cla_get_lock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:Function-parameter-or-member-pa-not-described-in-cqm_cla_get_unlock
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bat_fill_cla()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bat_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bat_uninit()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bat_update()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_alloc()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_free()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_get_lock()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_get_unlock()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_put()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_table_get()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_uninit()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_update()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cla_xyz()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:error:a-randomized-struct-can-only-be-initialized-with-a-designated-initializer
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:error:invalid-application-of-sizeof-to-an-incomplete-type-const-struct-free_memory
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:error:invalid-application-of-sizeof-to-an-incomplete-type-const-struct-malloc_memory
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-bloomfilter_init_cmd
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_bloomfilter_cmd
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_bloomfilter_dec
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_bloomfilter_inc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_bloomfilter_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_bloomfilter_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-func_id-not-described-in-cqm_bloomfilter_cmd
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-func_id-not-described-in-cqm_bloomfilter_dec
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-func_id-not-described-in-cqm_bloomfilter_inc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-id-not-described-in-cqm_bloomfilter_cmd
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-id-not-described-in-cqm_bloomfilter_dec
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-id-not-described-in-cqm_bloomfilter_inc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-k_flag-not-described-in-cqm_bloomfilter_cmd
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:Function-parameter-or-member-op-not-described-in-cqm_bloomfilter_cmd
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-bloomfilter_init_cmd()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bloomfilter_cmd()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bloomfilter_dec()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bloomfilter_inc()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bloomfilter_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bloomfilter.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bloomfilter_uninit()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-buf_in-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-buf_in-not-described-in-cqm_lb_send_cmd_box_async
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-buf_in-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-buf_in-not-described-in-cqm_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-buf_out-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-buf_out-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-channel-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-channel-not-described-in-cqm_lb_send_cmd_box_async
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-channel-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-channel-not-described-in-cqm_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-cmd-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-cmd-not-described-in-cqm_lb_send_cmd_box_async
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-cmd-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-cmd-not-described-in-cqm_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-cmd_buf-not-described-in-cqm_cmd_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-cos_id-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-cos_id-not-described-in-cqm_lb_send_cmd_box_async
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_cmd_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_cmd_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_lb_send_cmd_box_async
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-mod-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-mod-not-described-in-cqm_lb_send_cmd_box_async
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-mod-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-mod-not-described-in-cqm_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-out_param-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-out_param-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-out_param-not-described-in-cqm_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-timeout-not-described-in-cqm_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-timeout-not-described-in-cqm_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:Function-parameter-or-member-timeout-not-described-in-cqm_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cmd_alloc()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_cmd_free()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_lb_send_cmd_box()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_lb_send_cmd_box_async()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_send_cmd_box()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_send_cmd_imm()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:no-previous-prototype-for-function-cqm3_cmd_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:no-previous-prototype-for-function-cqm3_cmd_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:no-previous-prototype-for-function-cqm3_lb_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:no-previous-prototype-for-function-cqm3_lb_send_cmd_box_async
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:no-previous-prototype-for-function-cqm3_send_cmd_box
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_cmd.c:warning:no-previous-prototype-for-function-cqm3_send_cmd_imm
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db-not-described-in-cqm_ring_hardware_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db-not-described-in-cqm_ring_hardware_db_fc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db-not-described-in-cqm_ring_hardware_db_update_pri
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db_addr-not-described-in-cqm_db_addr_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db_addr-not-described-in-cqm_db_addr_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db_count-not-described-in-cqm_ring_direct_wqe_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db_count-not-described-in-cqm_ring_hardware_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db_count-not-described-in-cqm_ring_hardware_db_fc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db_count-not-described-in-cqm_ring_hardware_db_update_pri
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-db_record-not-described-in-cqm_ring_software_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-direct_wqe-not-described-in-cqm_ring_direct_wqe_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-dwqe_addr-not-described-in-cqm_db_addr_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-dwqe_addr-not-described-in-cqm_db_addr_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_db_addr_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_db_addr_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_db_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_db_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_get_db_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_ring_direct_wqe_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_ring_hardware_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_ring_hardware_db_fc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_ring_hardware_db_update_pri
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-object-not-described-in-cqm_ring_software_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-pagenum-not-described-in-cqm_ring_hardware_db_fc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_get_db_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_ring_direct_wqe_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_ring_hardware_db
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_ring_hardware_db_fc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_ring_hardware_db_update_pri
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_db_addr_alloc()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_db_addr_free()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_db_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_db_uninit()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_get_db_addr()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_ring_direct_wqe_db()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_ring_hardware_db()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_ring_hardware_db_fc()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_ring_hardware_db_update_pri()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_ring_software_db()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:no-previous-prototype-for-function-cqm3_db_addr_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_db.c:warning:no-previous-prototype-for-function-cqm3_get_hardware_db_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ceqe_data-not-described-in-cqm_ecq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ceqe_data-not-described-in-cqm_nocq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ceqe_data-not-described-in-cqm_scq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_fake_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-cqm_handle-not-described-in-cqm_fake_mem_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-data-not-described-in-cqm_aeq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-event-not-described-in-cqm_aeq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_aeq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_capability_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_ecq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_event_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_event_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_mem_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_mem_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_nocq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_scq_callback
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_service_register
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_service_unregister
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_uninit
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-service_template-not-described-in-cqm_service_register
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_service_unregister
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_aeq_callback()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_capability_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_ecq_callback()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_event_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_event_uninit()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_fake_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_fake_mem_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_mem_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_mem_uninit()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_nocq_callback()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_scq_callback()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_service_register()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_service_unregister()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_uninit()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-bh-not-described-in-cqm_object_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-common-not-described-in-cqm_object_share_recv_queue_add_container
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-container_number-not-described-in-cqm_object_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-container_size-not-described-in-cqm_object_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-container_size-not-described-in-cqm_object_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_function_hash_buf_clear
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_function_timer_clear
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_gid_base
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_fc_srq_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_nonrdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_rdma_table_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_object_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-ex_handle-not-described-in-cqm_timer_base
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-function_id-not-described-in-cqm_function_timer_clear
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-global_funcid-not-described-in-cqm_function_hash_buf_clear
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-index-not-described-in-cqm_object_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-index-not-described-in-cqm_object_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-index_base-not-described-in-cqm_object_rdma_table_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-index_number-not-described-in-cqm_object_rdma_table_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-init_rq_num-not-described-in-cqm_object_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-low2bit_align_en-not-described-in-cqm_object_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object-not-described-in-cqm_object_delete
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object-not-described-in-cqm_object_funcid
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object-not-described-in-cqm_object_offset_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object-not-described-in-cqm_object_put
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object-not-described-in-cqm_object_resize_alloc_new
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object-not-described-in-cqm_object_resize_free_new
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object-not-described-in-cqm_object_resize_free_old
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_priv-not-described-in-cqm_object_fc_srq_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_priv-not-described-in-cqm_object_nonrdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_priv-not-described-in-cqm_object_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_priv-not-described-in-cqm_object_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_priv-not-described-in-cqm_object_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_size-not-described-in-cqm_object_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_size-not-described-in-cqm_object_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_size-not-described-in-cqm_object_resize_alloc_new
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_fc_srq_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_nonrdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_rdma_table_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-object_type-not-described-in-cqm_object_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-offset-not-described-in-cqm_object_offset_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-paddr-not-described-in-cqm_object_offset_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-room_header_alloc-not-described-in-cqm_object_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_object_fc_srq_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_object_nonrdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_object_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_object_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_object_rdma_table_get
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_object_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-service_type-not-described-in-cqm_object_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-wqe_number-not-described-in-cqm_object_fc_srq_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-wqe_number-not-described-in-cqm_object_nonrdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-wqe_size-not-described-in-cqm_object_fc_srq_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-wqe_size-not-described-in-cqm_object_nonrdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-wqe_size-not-described-in-cqm_object_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-wqe_size-not-described-in-cqm_object_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:Function-parameter-or-member-xid-not-described-in-cqm_object_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_function_hash_buf_clear()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_function_timer_clear()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_gid_base()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_delete()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_fc_srq_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_funcid()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_get()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_nonrdma_queue_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_offset_addr()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_put()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_qpc_mpt_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_rdma_queue_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_rdma_table_get()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_recv_queue_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_resize_alloc_new()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_resize_free_new()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_resize_free_old()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_share_recv_queue_add_container()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_share_recv_queue_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_timer_base()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:no-previous-prototype-for-function-cqm3_dtoe_free_srq_bitmap_index
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object.c:warning:no-previous-prototype-for-function-cqm3_dtoe_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-buf-not-described-in-cqm_linkwqe_fill
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-cla_table-not-described-in-cqm_qpc_mpt_bitmap_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-common-not-described-in-cqm_container_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-container_addr-not-described-in-cqm_container_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-link-not-described-in-cqm_container_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-link_mode-not-described-in-cqm_linkwqe_fill
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-low2bit_align_en-not-described-in-cqm_qpc_mpt_bitmap_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-low2bit_align_en-not-described-in-cqm_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_container_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_nonrdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_nonrdma_queue_delete
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_qpc_mpt_bitmap_alloc
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_qpc_mpt_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_qpc_mpt_delete
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_rdma_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_rdma_queue_delete
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_rdma_table_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_rdma_table_delete
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_rdma_table_offset_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_share_recv_queue_create
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_share_recv_queue_delete
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_srq_container_init
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-object-not-described-in-cqm_srq_used_rq_delete
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-offset-not-described-in-cqm_rdma_table_offset_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-paddr-not-described-in-cqm_rdma_table_offset_addr
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-srq_head_container-not-described-in-cqm_container_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-srq_tail_container-not-described-in-cqm_container_free
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-tail-not-described-in-cqm_linkwqe_fill
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-wqe_number-not-described-in-cqm_linkwqe_fill
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-wqe_per_buf-not-described-in-cqm_linkwqe_fill
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:Function-parameter-or-member-wqe_size-not-described-in-cqm_linkwqe_fill
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_container_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_container_free()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_linkwqe_fill()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_nonrdma_queue_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_nonrdma_queue_delete()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_qpc_mpt_bitmap_alloc()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_qpc_mpt_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_qpc_mpt_delete()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_rdma_queue_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_rdma_queue_delete()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_rdma_table_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_rdma_table_delete()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_rdma_table_offset_addr()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_share_recv_queue_create()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_share_recv_queue_delete()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_srq_container_init()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_object_intern.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_srq_used_rq_delete()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_hw_cfg.c:warning:expecting-prototype-for-hinic_set_vf_dev_cap().-Prototype-was-for-hinic3_init_vf_dev_cap()-instead
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_hwif.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_hwif.c:warning:no-previous-prototype-for-function-hinic3_global_func_id_get
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_hwif.c:warning:no-previous-prototype-for-function-hinic3_global_func_id_hw
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-__mbox_to_host
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-__ppf_process_mbox_msg
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-comm_ppf_mbox_handler
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-get_slave_func_netdev_state
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-hilink_ppf_mbox_handler
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-hinic3_get_master_host_mbox_enable
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-hinic3_nic_ppf_mbox_handler
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-hinic3_ppf_process_mbox_msg
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-hinic3_register_slave_ppf
|   |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-set_slave_func_nic_state
|   `-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:warning:no-previous-prototype-for-function-sw_func_ppf_mbox_handler
|-- arm64-randconfig-003-20240518
|   `-- ld.lld:error:undefined-symbol:__memcpy_mc
`-- x86_64-allnoconfig
    |-- drivers-infiniband-hw-hiroce3-host-hmm-hmm_umem.c:linux-version.h-not-needed.
    |-- drivers-infiniband-hw-hiroce3-roce.h:linux-version.h-not-needed.
    |-- drivers-net-ethernet-huawei-hinic3-bond-hinic3_bond.c:linux-version.h-not-needed.
    `-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_multi_host_mgmt.c:hinic3_hwif.h-is-included-more-than-once.
elapsed time: 728m
configs tested: 41
configs skipped: 142
tested configs:
arm64                            allmodconfig   clang
arm64                             allnoconfig   gcc  
arm64                               defconfig   gcc  
arm64                 randconfig-001-20240518   clang
arm64                 randconfig-002-20240518   gcc  
arm64                 randconfig-003-20240518   clang
arm64                 randconfig-004-20240518   clang
loongarch                        alldefconfig   gcc  
loongarch                        allmodconfig   gcc  
loongarch                         allnoconfig   gcc  
loongarch                           defconfig   gcc  
loongarch             randconfig-001-20240518   gcc  
loongarch             randconfig-002-20240518   gcc  
x86_64                            allnoconfig   clang
x86_64                           allyesconfig   clang
x86_64       buildonly-randconfig-001-20240518   gcc  
x86_64       buildonly-randconfig-002-20240518   clang
x86_64       buildonly-randconfig-003-20240518   clang
x86_64       buildonly-randconfig-004-20240518   clang
x86_64       buildonly-randconfig-005-20240518   clang
x86_64       buildonly-randconfig-006-20240518   clang
x86_64                              defconfig   gcc  
x86_64                randconfig-001-20240518   clang
x86_64                randconfig-002-20240518   clang
x86_64                randconfig-003-20240518   gcc  
x86_64                randconfig-004-20240518   gcc  
x86_64                randconfig-005-20240518   gcc  
x86_64                randconfig-006-20240518   clang
x86_64                randconfig-011-20240518   gcc  
x86_64                randconfig-012-20240518   gcc  
x86_64                randconfig-013-20240518   clang
x86_64                randconfig-014-20240518   gcc  
x86_64                randconfig-015-20240518   clang
x86_64                randconfig-016-20240518   clang
x86_64                randconfig-071-20240518   clang
x86_64                randconfig-072-20240518   clang
x86_64                randconfig-073-20240518   gcc  
x86_64                randconfig-074-20240518   clang
x86_64                randconfig-075-20240518   gcc  
x86_64                randconfig-076-20240518   gcc  
x86_64                          rhel-8.3-rust   clang
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                    
                        Patchset of CVE-2024-26907.
Alexey Dobriyan (1):
  uapi: stddef.h: Fix __DECLARE_FLEX_ARRAY for C++
Kees Cook (2):
  stddef: Introduce struct_group() helper macro
  stddef: Introduce DECLARE_FLEX_ARRAY() helper
Leon Romanovsky (1):
  RDMA/mlx5: Fix fortify source warning while accessing Eth segment
Tadeusz Struk (1):
  uapi/linux/stddef.h: Add include guards
 drivers/infiniband/hw/mlx5/wr.c |  2 +-
 include/linux/mlx5/qp.h         |  5 ++-
 include/linux/stddef.h          | 61 +++++++++++++++++++++++++++++++++
 include/uapi/linux/stddef.h     | 48 ++++++++++++++++++++++++++
 scripts/kernel-doc              | 10 +++++-
 5 files changed, 123 insertions(+), 3 deletions(-)
-- 
2.25.1
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            6
                            
                          
                          
                            
    
                          
                        
                    
                    
                        virtcca inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I9Q85J
--------------------------------
Add TSI interface for Confidential VMs:
1. Add smc call for Confidential cVMs
2. Add TSI interface driver
Signed-off-by: Shengjie Li <lishengjie12(a)huawei.com>
---
 arch/arm64/include/asm/tsi.h          |  18 ++
 arch/arm64/include/asm/tsi_cmds.h     |  79 ++++++++
 arch/arm64/include/asm/tsi_smc.h      |  81 +++++++++
 arch/arm64/include/uapi/asm/tsi_tmm.h |  73 ++++++++
 arch/arm64/kernel/Makefile            |   2 +-
 arch/arm64/kernel/setup.c             |  11 ++
 arch/arm64/kernel/tsi.c               |  45 +++++
 arch/arm64/kernel/tsi_tmm.c           | 253 ++++++++++++++++++++++++++
 8 files changed, 561 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm64/include/asm/tsi.h
 create mode 100644 arch/arm64/include/asm/tsi_cmds.h
 create mode 100644 arch/arm64/include/asm/tsi_smc.h
 create mode 100644 arch/arm64/include/uapi/asm/tsi_tmm.h
 create mode 100644 arch/arm64/kernel/tsi.c
 create mode 100644 arch/arm64/kernel/tsi_tmm.c
diff --git a/arch/arm64/include/asm/tsi.h b/arch/arm64/include/asm/tsi.h
new file mode 100644
index 0000000000..13dee2ddd4
--- /dev/null
+++ b/arch/arm64/include/asm/tsi.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_TSI_H_
+#define __ASM_TSI_H_
+
+#include <linux/jump_label.h>
+
+extern struct static_key_false tsi_present;
+
+void arm64_setup_memory(void);
+
+void __init arm64_tsi_init(void);
+
+static inline bool is_cvm_world(void)
+{
+	return static_branch_unlikely(&tsi_present);
+}
+
+#endif /* __ASM_TSI_H_ */
diff --git a/arch/arm64/include/asm/tsi_cmds.h b/arch/arm64/include/asm/tsi_cmds.h
new file mode 100644
index 0000000000..e46ecdb37c
--- /dev/null
+++ b/arch/arm64/include/asm/tsi_cmds.h
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_TSI_CMDS_H_
+#define __ASM_TSI_CMDS_H_
+
+#include <linux/arm-smccc.h>
+#include <asm/tsi_smc.h>
+#include <asm/tsi_tmm.h>
+
+static inline unsigned long tsi_get_version(void)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_ABI_VERSION, &res);
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_measurement_extend(struct cvm_measurement_extend *cvm_meas_ext)
+{
+
+	struct arm_smccc_res res;
+	unsigned char value[MAX_MEASUREMENT_SIZE];
+
+	memcpy(value, &cvm_meas_ext->value, sizeof(cvm_meas_ext->value));
+
+	arm_smccc_1_1_smc(SMC_TSI_MEASUREMENT_EXTEND, cvm_meas_ext->index,
+		cvm_meas_ext->size, virt_to_phys(value), &res);
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_measurement_read(struct cvm_measurement *cvm_meas)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_MEASUREMENT_READ, cvm_meas->index, &res);
+
+	memcpy(cvm_meas->value, &res.a1, sizeof(cvm_meas->value));
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_attestation_token_init(struct cvm_attestation_cmd *attest_cmd)
+{
+	struct arm_smccc_res res;
+	unsigned char challenge[CHALLENGE_SIZE];
+
+	memcpy(challenge, attest_cmd->challenge, sizeof(attest_cmd->challenge));
+
+	arm_smccc_1_1_smc(SMC_TSI_ATTESTATION_TOKEN_INIT, virt_to_phys(challenge), &res);
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_attestation_token_continue(struct cvm_attestation_cmd *attest_cmd)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_ATTESTATION_TOKEN_CONTINUE, virt_to_phys(attest_cmd->granule_ipa),
+		attest_cmd->offset, attest_cmd->size, &res);
+
+	attest_cmd->num_wr_bytes = res.a1;
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_get_device_cert(unsigned char *device_cert,
+	unsigned long *device_cert_size)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_DEVICE_CERT, virt_to_phys(device_cert), *device_cert_size, &res);
+
+	*device_cert_size = res.a1;
+
+	return res.a0;
+}
+
+#endif  /* __ASM_TSI_CMDS_H_ */
diff --git a/arch/arm64/include/asm/tsi_smc.h b/arch/arm64/include/asm/tsi_smc.h
new file mode 100644
index 0000000000..9353e3befe
--- /dev/null
+++ b/arch/arm64/include/asm/tsi_smc.h
@@ -0,0 +1,81 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_TSI_SMC_H_
+#define __ASM_TSI_SMC_H_
+
+#define SMC_TSI_CALL_BASE           0xC4000000
+#define TSI_ABI_VERSION_MAJOR       1
+#define TSI_ABI_VERSION_MINOR       0
+#define TSI_ABI_VERSION             ((TSI_ABI_VERSION_MAJOR << 16) | \
+									TSI_ABI_VERSION_MINOR)
+
+#define TSI_ABI_VERSION_GET_MAJOR(_version) ((_version) >> 16)
+#define TSI_ABI_VERSION_GET_MINOR(_version) ((_version) & 0xFFFF)
+
+#define TSI_SUCCESS             0
+#define TSI_ERROR_INPUT         1
+#define TSI_ERROR_STATE         2
+#define TSI_INCOMPLETE          3
+
+#define SMC_TSI_FID(_x)                        (SMC_TSI_CALL_BASE + (_x))
+#define SMC_TSI_ABI_VERSION                    SMC_TSI_FID(0x190)
+
+/*
+ * arg1 == Index, which measurements slot to read
+ * ret0 == Status / error
+ * ret1 == Measurement value, bytes:  0 -  7
+ * ret2 == Measurement value, bytes:  8 - 15
+ * ret3 == Measurement value, bytes: 16 - 23
+ * ret4 == Measurement value, bytes: 24 - 31
+ * ret5 == Measurement value, bytes: 32 - 39
+ * ret6 == Measurement value, bytes: 40 - 47
+ * ret7 == Measurement value, bytes: 48 - 55
+ * ret8 == Measurement value, bytes: 56 - 63
+ */
+#define SMC_TSI_MEASUREMENT_READ           SMC_TSI_FID(0x192)
+
+/*
+ * arg1  == Index, which measurements slot to extend
+ * arg2  == Size of realm measurement in bytes, max 64 bytes
+ * arg3  == Measurement value, bytes:  0 -  7
+ * arg4  == Measurement value, bytes:  8 - 15
+ * arg5  == Measurement value, bytes: 16 - 23
+ * arg6  == Measurement value, bytes: 24 - 31
+ * arg7  == Measurement value, bytes: 32 - 39
+ * arg8  == Measurement value, bytes: 40 - 47
+ * arg9  == Measurement value, bytes: 48 - 55
+ * arg10 == Measurement value, bytes: 56 - 63
+ * ret0  == Status / error
+ */
+#define SMC_TSI_MEASUREMENT_EXTEND         SMC_TSI_FID(0x193)
+
+/*
+ * arg1: Challenge value, bytes:  0 -  7
+ * arg2: Challenge value, bytes:  8 - 15
+ * arg3: Challenge value, bytes: 16 - 23
+ * arg4: Challenge value, bytes: 24 - 31
+ * arg5: Challenge value, bytes: 32 - 39
+ * arg6: Challenge value, bytes: 40 - 47
+ * arg7: Challenge value, bytes: 48 - 55
+ * arg8: Challenge value, bytes: 56 - 63
+ * ret0: Status / error
+ * ret1: Upper bound on attestation token size in bytes
+ */
+#define SMC_TSI_ATTESTATION_TOKEN_INIT        SMC_TSI_FID(0x194)
+
+/*
+ * arg1: IPA of the Granule to which the token will be written
+ * arg2: Offset within Granule to start of buffer in bytes
+ * arg3: Size of buffer in bytes
+ * ret0: Status / error
+ * ret1: Number of bytes written to buffer
+ */
+#define SMC_TSI_ATTESTATION_TOKEN_CONTINUE  SMC_TSI_FID(0x195)
+
+/*
+ * arg1 == struct realm_config addr
+ * ret0 == Status / error
+ */
+#define SMC_TSI_DEVICE_CERT                 SMC_TSI_FID(0x196)
+
+
+#endif  /* __ASM_TSI_SMC_H_ */
diff --git a/arch/arm64/include/uapi/asm/tsi_tmm.h b/arch/arm64/include/uapi/asm/tsi_tmm.h
new file mode 100644
index 0000000000..04264f77e3
--- /dev/null
+++ b/arch/arm64/include/uapi/asm/tsi_tmm.h
@@ -0,0 +1,73 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+#ifndef __ASM_TSI_TMM_H_
+#define __ASM_TSI_TMM_H_
+
+#include <linux/ioctl.h>
+
+#define TSI_MAGIC 'T'
+
+/* Measurement slot reserved for RIM */
+#define RIM_MEASUREMENT_SLOT       (0U)
+
+/* Maximum number of measurements */
+#define MEASUREMENT_SLOT_NR        (5U)
+
+/* Size in bytes of the SHA256 measurement */
+#define SHA256_SIZE                (32U)
+
+/* Size in bytes of the SHA512 measurement */
+#define SHA512_SIZE                (64U)
+
+/*
+ * Size in bytes of the largest measurement type that can be supported.
+ * This macro needs to be updated accordingly if new algorithms are supported.
+ */
+#define MAX_MEASUREMENT_SIZE       SHA512_SIZE
+#define MAX_DEV_CERT_SIZE          4096
+
+#define MAX_TOKEN_GRANULE_PAGE     (10U)
+#define CHALLENGE_SIZE             (64U)
+
+struct cvm_attester {
+	int dev_fd;
+};
+
+struct cvm_measurement {
+	int index;
+	unsigned char value[MAX_MEASUREMENT_SIZE];
+};
+
+struct cvm_tsi_version {
+	int major;
+	int minor;
+};
+
+struct cvm_measurement_extend {
+	unsigned long index;
+	unsigned long size;
+	unsigned char value[MAX_MEASUREMENT_SIZE];
+};
+
+struct cvm_attestation_cmd {
+	unsigned char challenge[CHALLENGE_SIZE]; /* input: challenge value */
+	unsigned long token_size; /* return: challenge value */
+	void *granule_head;
+	void *granule_ipa;  /* IPA of the Granule to which the token will be written */
+	unsigned long granule_count;
+	unsigned long offset; /* Offset within Granule to start of buffer in bytes */
+	unsigned long size;  /* Size of buffer in bytes */
+	unsigned long num_wr_bytes; /* Number of bytes written to buffer */
+};
+
+struct cca_device_cert {
+	unsigned long size;
+	unsigned char value[MAX_DEV_CERT_SIZE];
+};
+
+#define TMM_GET_TSI_VERSION _IOR(TSI_MAGIC, 0, struct cvm_tsi_version)
+
+#define TMM_GET_ATTESTATION_TOKEN _IOWR(TSI_MAGIC, 1, struct cvm_attestation_cmd)
+
+#define TMM_GET_DEVICE_CERT _IOR(TSI_MAGIC, 2, struct cca_device_cert)
+
+#endif  /* __ASM_TSI_TMM_H_ */
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 4c6eb5e78e..781c2216a2 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -73,7 +73,7 @@ obj-$(CONFIG_ARM64_PTR_AUTH)		+= pointer_auth.o
 obj-$(CONFIG_SHADOW_CALL_STACK)		+= scs.o
 obj-$(CONFIG_ARM64_MTE)			+= mte.o
 obj-$(CONFIG_MPAM)			+= mpam/
-obj-$(CONFIG_CVM_GUEST)			+= cvm_guest.o
+obj-$(CONFIG_CVM_GUEST)			+= cvm_guest.o tsi.o tsi_tmm.o
 
 obj-y					+= vdso/ probes/
 obj-$(CONFIG_COMPAT_VDSO)		+= vdso32/
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index c687866612..22c0284cbd 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -43,6 +43,11 @@
 #include <asm/cpu_ops.h>
 #include <asm/kasan.h>
 #include <asm/numa.h>
+
+#ifdef CONFIG_CVM_GUEST
+#include <asm/tsi.h>
+#endif
+
 #include <asm/sections.h>
 #include <asm/setup.h>
 #include <asm/smp_plat.h>
@@ -384,6 +389,12 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
 	 * cpufeature code and early parameters.
 	 */
 	jump_label_init();
+
+#ifdef CONFIG_CVM_GUEST
+	/* Init TSI after jump_labels are active */
+	arm64_tsi_init();
+#endif
+
 	parse_early_param();
 
 	/*
diff --git a/arch/arm64/kernel/tsi.c b/arch/arm64/kernel/tsi.c
new file mode 100644
index 0000000000..40da8a8aec
--- /dev/null
+++ b/arch/arm64/kernel/tsi.c
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <linux/jump_label.h>
+#include <linux/memblock.h>
+#include <linux/swiotlb.h>
+#include <linux/cc_platform.h>
+#include <asm/tsi_tmm.h>
+#include <asm/tsi_cmds.h>
+#include <asm/tsi.h>
+
+unsigned long prot_ns_shared;
+EXPORT_SYMBOL(prot_ns_shared);
+
+unsigned int phys_mask_shift = CONFIG_ARM64_PA_BITS;
+
+DEFINE_STATIC_KEY_FALSE_RO(tsi_present);
+
+static bool tsi_version_matches(void)
+{
+	unsigned long ver = tsi_get_version();
+
+	if (ver == SMCCC_RET_NOT_SUPPORTED)
+		return false;
+
+	pr_info("RME: TSI version %lu.%lu advertised\n",
+		TSI_ABI_VERSION_GET_MAJOR(ver),
+		TSI_ABI_VERSION_GET_MINOR(ver));
+
+	return (ver >= TSI_ABI_VERSION &&
+		TSI_ABI_VERSION_GET_MAJOR(ver) == TSI_ABI_VERSION_MAJOR);
+}
+
+
+void arm64_setup_memory(void)
+{
+	if (!static_branch_unlikely(&tsi_present))
+		return;
+}
+
+void __init arm64_tsi_init(void)
+{
+	if (!tsi_version_matches())
+		return;
+
+	static_branch_enable(&tsi_present);
+}
diff --git a/arch/arm64/kernel/tsi_tmm.c b/arch/arm64/kernel/tsi_tmm.c
new file mode 100644
index 0000000000..68fe474c99
--- /dev/null
+++ b/arch/arm64/kernel/tsi_tmm.c
@@ -0,0 +1,253 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <linux/module.h>
+#include <linux/memblock.h>
+#include <linux/slab.h>
+#include <linux/miscdevice.h>
+#include <linux/preempt.h>
+#include <asm/tsi_cmds.h>
+#include <asm/tsi_tmm.h>
+
+#define GRANULE_SIZE PAGE_SIZE
+
+struct attestation_token {
+	void *buf;
+	unsigned long size;
+};
+
+static struct attestation_token token;
+
+static long tmm_tsi_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
+static int tmm_tsi_open(struct inode *inode, struct file *file);
+static int tmm_tsi_release(struct inode *inode, struct file *file);
+static ssize_t tmm_token_read(struct file *file, char __user *user_buffer,
+	size_t size, loff_t *offset);
+
+static int tmm_get_tsi_version(struct cvm_tsi_version *arg);
+static int tmm_get_attestation_token(struct cvm_attestation_cmd *arg,
+	struct attestation_token *attest_token);
+static int tmm_get_device_cert(struct cca_device_cert *arg);
+
+static const struct file_operations tmm_tsi_fops = {
+	.owner          = THIS_MODULE,
+	.open           = tmm_tsi_open,
+	.read           = tmm_token_read,
+	.release        = tmm_tsi_release,
+	.unlocked_ioctl = tmm_tsi_ioctl
+};
+
+static struct miscdevice ioctl_dev = {
+	MISC_DYNAMIC_MINOR,
+	"tsi",
+	&tmm_tsi_fops,
+};
+
+static int __init tmm_tsi_init(void)
+{
+	unsigned long ver;
+	int ret;
+
+	ver = tsi_get_version();
+
+	if (ver == SMCCC_RET_NOT_SUPPORTED) {
+		pr_err("tmm_tsi: SMC return not supported!\n");
+		return -EIO;
+	}
+
+	ret = misc_register(&ioctl_dev);
+	if (ret) {
+		pr_err("tmm_tsi: misc device register failed (%d)!\n", ret);
+		return ret;
+	}
+
+	pr_warn("tmm_tsi: module loaded (version %lu.%lu).\n",
+			TSI_ABI_VERSION_GET_MAJOR(ver),
+			TSI_ABI_VERSION_GET_MINOR(ver));
+
+	return 0;
+}
+
+static void __exit tmm_tsi_exit(void)
+{
+	if (token.buf != NULL)
+		kfree(token.buf);
+	misc_deregister(&ioctl_dev);
+	pr_warn("tmm_tsi: module unloaded.\n");
+}
+
+static long tmm_tsi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	int ret;
+
+	switch (cmd) {
+	case TMM_GET_TSI_VERSION:
+		ret = tmm_get_tsi_version((struct cvm_tsi_version *)arg);
+		break;
+	case TMM_GET_ATTESTATION_TOKEN:
+		ret = tmm_get_attestation_token((struct cvm_attestation_cmd *)arg, &token);
+		break;
+	case TMM_GET_DEVICE_CERT:
+		ret = tmm_get_device_cert((struct cca_device_cert *)arg);
+		break;
+	default:
+		pr_err("tmm_tsi: unknown ioctl command (0x%x)!\n", cmd);
+		return -ENOTTY;
+	}
+
+	return ret;
+}
+
+static int tmm_tsi_open(struct inode *inode, struct file *file)
+{
+	token.buf = NULL;
+	return 0;
+}
+
+static ssize_t tmm_token_read(struct file *file, char __user *user_buffer,
+	size_t size, loff_t *offset)
+{
+	int ret;
+	int to_copy;
+
+	if (*offset >= token.size)
+		return 0;
+
+	to_copy = min((int)size, (int)(token.size - *offset));
+	ret = copy_to_user(user_buffer, token.buf + *offset, to_copy);
+	if (ret) {
+		pr_err("tmm_tsi: copy token to user failed (%d)!\n", ret);
+		return -1;
+	}
+
+	*offset += to_copy;
+	return to_copy;
+}
+
+static int tmm_tsi_release(struct inode *inode, struct file *file)
+{
+	if (token.buf != NULL)
+		kfree(token.buf);
+	return 0;
+}
+
+static int tmm_get_tsi_version(struct cvm_tsi_version *arg)
+{
+	struct cvm_tsi_version ver_measured = {0};
+	unsigned long ver;
+	unsigned long ret;
+
+	ver = tsi_get_version();
+	ver_measured.major = TSI_ABI_VERSION_GET_MAJOR(ver);
+	ver_measured.minor = TSI_ABI_VERSION_GET_MINOR(ver);
+
+	ret = copy_to_user(arg, &ver_measured, sizeof(struct cvm_tsi_version));
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	return 0;
+}
+
+static int tmm_get_attestation_token(struct cvm_attestation_cmd *arg,
+	struct attestation_token *attest_token)
+{
+	unsigned long ret;
+	struct cvm_attestation_cmd cmd = {0};
+
+	ret = copy_from_user(&(cmd.challenge), &(arg->challenge), sizeof(cmd.challenge));
+	if (ret) {
+		pr_err("tmm_tsi: copy data from user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	/* Allocate a large memory */
+	attest_token->buf = kmalloc(GRANULE_SIZE * MAX_TOKEN_GRANULE_PAGE, GFP_KERNEL);
+	if (!attest_token->buf)
+		return -ENOMEM;
+	cmd.granule_head = attest_token->buf;
+	cmd.granule_ipa  = cmd.granule_head;
+
+	/* preempt_disable(); */
+
+	ret = tsi_attestation_token_init(&cmd);
+	if (ret) {
+		pr_err("tmm_tsi: tsi call tsi_attestation_token_init failed (%lu)!\n", ret);
+		return -EIO;
+	}
+
+	do { /* Retrieve one Granule of data per loop iteration */
+		cmd.granule_ipa = cmd.granule_head +
+			(unsigned long)(cmd.granule_count * GRANULE_SIZE);
+		cmd.offset = 0;
+
+		do { /* Retrieve sub-Granule chunk of data per loop iteration */
+			cmd.size = GRANULE_SIZE - cmd.offset;
+			ret = tsi_attestation_token_continue(&cmd);
+			cmd.offset += cmd.num_wr_bytes;
+		} while (ret == TSI_INCOMPLETE && cmd.offset < GRANULE_SIZE);
+
+		cmd.granule_count += 1;
+		if (cmd.granule_count >= MAX_TOKEN_GRANULE_PAGE && ret == TSI_INCOMPLETE) {
+			pr_err("tmm_tsi: macro MAX_TOKEN_GRANULE_PAGE (%d) is too small!\n",
+				MAX_TOKEN_GRANULE_PAGE);
+			return -ENOMEM;
+		}
+
+	} while (ret == TSI_INCOMPLETE);
+
+	/* preempt_enable(); */
+
+	/* Send to user space the total size of the token */
+	cmd.granule_count = cmd.granule_count - 1;
+	cmd.token_size = (unsigned long)(GRANULE_SIZE * cmd.granule_count) + cmd.offset;
+	attest_token->size = cmd.token_size;
+
+	ret = copy_to_user(&(arg->token_size), &(cmd.token_size), sizeof(cmd.token_size));
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	return 0;
+}
+
+static int tmm_get_device_cert(struct cca_device_cert *arg)
+{
+	unsigned long ret;
+	unsigned char *device_cert;
+	unsigned long device_cert_size;
+
+	device_cert_size = MAX_DEV_CERT_SIZE;
+	device_cert = kmalloc(device_cert_size, GFP_KERNEL);
+	if (!device_cert)
+		return -ENOMEM;
+	ret = tsi_get_device_cert(device_cert, &device_cert_size);
+	if (ret != TSI_SUCCESS) {
+		pr_err("tmm_tsi: tsi call tsi_get_device_cert failed (%lu)!\n", ret);
+		kfree(device_cert);
+		return -EIO;
+	}
+
+	ret = copy_to_user(arg->value, device_cert, device_cert_size);
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		kfree(device_cert);
+		return -EFAULT;
+	}
+	kfree(device_cert);
+
+	ret = copy_to_user(&(arg->size), &device_cert_size, sizeof(device_cert_size));
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	return 0;
+}
+
+module_init(tmm_tsi_init);
+module_exit(tmm_tsi_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("HUAWEI TECHNOLOGIES CO., LTD.");
+MODULE_DESCRIPTION("Interacting with TMM through TSI interface from user space.");
-- 
2.37.2.windows.2
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            1
                            
                          
                          
                            
    
                          
                        
                    
                    
                        virtcca inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/I9Q85J
--------------------------------
Add TSI interface for Confidential VMs:
1. Add smc call for Confidential cVMs
2. Add TSI interface driver
Signed-off-by: Shengjie Li <lishengjie12(a)huawei.com>
---
 arch/arm64/include/asm/tsi.h          |  18 ++
 arch/arm64/include/asm/tsi_cmds.h     |  79 ++++++++
 arch/arm64/include/asm/tsi_smc.h      |  81 +++++++++
 arch/arm64/include/uapi/asm/tsi_tmm.h |  73 ++++++++
 arch/arm64/kernel/Makefile            |   2 +-
 arch/arm64/kernel/setup.c             |  11 ++
 arch/arm64/kernel/tsi.c               |  45 +++++
 arch/arm64/kernel/tsi_tmm.c           | 253 ++++++++++++++++++++++++++
 8 files changed, 561 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm64/include/asm/tsi.h
 create mode 100644 arch/arm64/include/asm/tsi_cmds.h
 create mode 100644 arch/arm64/include/asm/tsi_smc.h
 create mode 100644 arch/arm64/include/uapi/asm/tsi_tmm.h
 create mode 100644 arch/arm64/kernel/tsi.c
 create mode 100644 arch/arm64/kernel/tsi_tmm.c
diff --git a/arch/arm64/include/asm/tsi.h b/arch/arm64/include/asm/tsi.h
new file mode 100644
index 0000000000..13dee2ddd4
--- /dev/null
+++ b/arch/arm64/include/asm/tsi.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_TSI_H_
+#define __ASM_TSI_H_
+
+#include <linux/jump_label.h>
+
+extern struct static_key_false tsi_present;
+
+void arm64_setup_memory(void);
+
+void __init arm64_tsi_init(void);
+
+static inline bool is_cvm_world(void)
+{
+	return static_branch_unlikely(&tsi_present);
+}
+
+#endif /* __ASM_TSI_H_ */
diff --git a/arch/arm64/include/asm/tsi_cmds.h b/arch/arm64/include/asm/tsi_cmds.h
new file mode 100644
index 0000000000..e46ecdb37c
--- /dev/null
+++ b/arch/arm64/include/asm/tsi_cmds.h
@@ -0,0 +1,79 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_TSI_CMDS_H_
+#define __ASM_TSI_CMDS_H_
+
+#include <linux/arm-smccc.h>
+#include <asm/tsi_smc.h>
+#include <asm/tsi_tmm.h>
+
+static inline unsigned long tsi_get_version(void)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_ABI_VERSION, &res);
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_measurement_extend(struct cvm_measurement_extend *cvm_meas_ext)
+{
+
+	struct arm_smccc_res res;
+	unsigned char value[MAX_MEASUREMENT_SIZE];
+
+	memcpy(value, &cvm_meas_ext->value, sizeof(cvm_meas_ext->value));
+
+	arm_smccc_1_1_smc(SMC_TSI_MEASUREMENT_EXTEND, cvm_meas_ext->index,
+		cvm_meas_ext->size, virt_to_phys(value), &res);
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_measurement_read(struct cvm_measurement *cvm_meas)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_MEASUREMENT_READ, cvm_meas->index, &res);
+
+	memcpy(cvm_meas->value, &res.a1, sizeof(cvm_meas->value));
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_attestation_token_init(struct cvm_attestation_cmd *attest_cmd)
+{
+	struct arm_smccc_res res;
+	unsigned char challenge[CHALLENGE_SIZE];
+
+	memcpy(challenge, attest_cmd->challenge, sizeof(attest_cmd->challenge));
+
+	arm_smccc_1_1_smc(SMC_TSI_ATTESTATION_TOKEN_INIT, virt_to_phys(challenge), &res);
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_attestation_token_continue(struct cvm_attestation_cmd *attest_cmd)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_ATTESTATION_TOKEN_CONTINUE, virt_to_phys(attest_cmd->granule_ipa),
+		attest_cmd->offset, attest_cmd->size, &res);
+
+	attest_cmd->num_wr_bytes = res.a1;
+
+	return res.a0;
+}
+
+static inline unsigned long tsi_get_device_cert(unsigned char *device_cert,
+	unsigned long *device_cert_size)
+{
+	struct arm_smccc_res res;
+
+	arm_smccc_1_1_smc(SMC_TSI_DEVICE_CERT, virt_to_phys(device_cert), *device_cert_size, &res);
+
+	*device_cert_size = res.a1;
+
+	return res.a0;
+}
+
+#endif  /* __ASM_TSI_CMDS_H_ */
diff --git a/arch/arm64/include/asm/tsi_smc.h b/arch/arm64/include/asm/tsi_smc.h
new file mode 100644
index 0000000000..9353e3befe
--- /dev/null
+++ b/arch/arm64/include/asm/tsi_smc.h
@@ -0,0 +1,81 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_TSI_SMC_H_
+#define __ASM_TSI_SMC_H_
+
+#define SMC_TSI_CALL_BASE           0xC4000000
+#define TSI_ABI_VERSION_MAJOR       1
+#define TSI_ABI_VERSION_MINOR       0
+#define TSI_ABI_VERSION             ((TSI_ABI_VERSION_MAJOR << 16) | \
+									TSI_ABI_VERSION_MINOR)
+
+#define TSI_ABI_VERSION_GET_MAJOR(_version) ((_version) >> 16)
+#define TSI_ABI_VERSION_GET_MINOR(_version) ((_version) & 0xFFFF)
+
+#define TSI_SUCCESS             0
+#define TSI_ERROR_INPUT         1
+#define TSI_ERROR_STATE         2
+#define TSI_INCOMPLETE          3
+
+#define SMC_TSI_FID(_x)                        (SMC_TSI_CALL_BASE + (_x))
+#define SMC_TSI_ABI_VERSION                    SMC_TSI_FID(0x190)
+
+/*
+ * arg1 == Index, which measurements slot to read
+ * ret0 == Status / error
+ * ret1 == Measurement value, bytes:  0 -  7
+ * ret2 == Measurement value, bytes:  8 - 15
+ * ret3 == Measurement value, bytes: 16 - 23
+ * ret4 == Measurement value, bytes: 24 - 31
+ * ret5 == Measurement value, bytes: 32 - 39
+ * ret6 == Measurement value, bytes: 40 - 47
+ * ret7 == Measurement value, bytes: 48 - 55
+ * ret8 == Measurement value, bytes: 56 - 63
+ */
+#define SMC_TSI_MEASUREMENT_READ           SMC_TSI_FID(0x192)
+
+/*
+ * arg1  == Index, which measurements slot to extend
+ * arg2  == Size of realm measurement in bytes, max 64 bytes
+ * arg3  == Measurement value, bytes:  0 -  7
+ * arg4  == Measurement value, bytes:  8 - 15
+ * arg5  == Measurement value, bytes: 16 - 23
+ * arg6  == Measurement value, bytes: 24 - 31
+ * arg7  == Measurement value, bytes: 32 - 39
+ * arg8  == Measurement value, bytes: 40 - 47
+ * arg9  == Measurement value, bytes: 48 - 55
+ * arg10 == Measurement value, bytes: 56 - 63
+ * ret0  == Status / error
+ */
+#define SMC_TSI_MEASUREMENT_EXTEND         SMC_TSI_FID(0x193)
+
+/*
+ * arg1: Challenge value, bytes:  0 -  7
+ * arg2: Challenge value, bytes:  8 - 15
+ * arg3: Challenge value, bytes: 16 - 23
+ * arg4: Challenge value, bytes: 24 - 31
+ * arg5: Challenge value, bytes: 32 - 39
+ * arg6: Challenge value, bytes: 40 - 47
+ * arg7: Challenge value, bytes: 48 - 55
+ * arg8: Challenge value, bytes: 56 - 63
+ * ret0: Status / error
+ * ret1: Upper bound on attestation token size in bytes
+ */
+#define SMC_TSI_ATTESTATION_TOKEN_INIT        SMC_TSI_FID(0x194)
+
+/*
+ * arg1: IPA of the Granule to which the token will be written
+ * arg2: Offset within Granule to start of buffer in bytes
+ * arg3: Size of buffer in bytes
+ * ret0: Status / error
+ * ret1: Number of bytes written to buffer
+ */
+#define SMC_TSI_ATTESTATION_TOKEN_CONTINUE  SMC_TSI_FID(0x195)
+
+/*
+ * arg1 == struct realm_config addr
+ * ret0 == Status / error
+ */
+#define SMC_TSI_DEVICE_CERT                 SMC_TSI_FID(0x196)
+
+
+#endif  /* __ASM_TSI_SMC_H_ */
diff --git a/arch/arm64/include/uapi/asm/tsi_tmm.h b/arch/arm64/include/uapi/asm/tsi_tmm.h
new file mode 100644
index 0000000000..bb8aac68dc
--- /dev/null
+++ b/arch/arm64/include/uapi/asm/tsi_tmm.h
@@ -0,0 +1,73 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+#ifndef __ASM_TSI_TMM_H_
+#define __ASM_TSI_TMM_H_
+
+#include <linux/ioctl.h>
+
+#define TSI_MAGIC 'T'
+
+/* Measurement slot reserved for RIM */
+#define RIM_MEASUREMENT_SLOT       (0U)
+
+/* Maximum number of measurements */
+#define MEASUREMENT_SLOT_NR        (5U)
+
+/* Size in bytes of the SHA256 measurement */
+#define SHA256_SIZE                (32U)
+
+/* Size in bytes of the SHA512 measurement */
+#define SHA512_SIZE                (64U)
+
+/*
+ * Size in bytes of the largest measurement type that can be supported.
+ * This macro needs to be updated accordingly if new algorithms are supported.
+ */
+#define MAX_MEASUREMENT_SIZE       SHA512_SIZE
+#define MAX_DEV_CERT_SIZE          4096
+
+#define MAX_TOKEN_GRANULE_PAGE     (10U)
+#define CHALLENGE_SIZE             (64U)
+
+struct cvm_attester {
+	int dev_fd;
+};
+
+struct cvm_measurement {
+	int index;
+	unsigned char value[MAX_MEASUREMENT_SIZE];
+};
+
+struct cvm_tsi_version {
+	int major;
+	int minor;
+};
+
+struct cvm_measurement_extend {
+	unsigned long index;
+	unsigned long size;
+	unsigned char value[MAX_MEASUREMENT_SIZE];
+};
+
+struct cvm_attestation_cmd {
+	unsigned char challenge[CHALLENGE_SIZE]; /* input: challenge value */
+	unsigned long token_size; /* return: challenge value */
+	void *granule_head;
+	void *granule_ipa;  /* IPA of the Granule to which the token will be written */
+	unsigned long granule_count;
+	unsigned long offset; /* Offset within Granule to start of buffer in bytes */
+	unsigned long size;  /* Size of buffer in bytes */
+	unsigned long num_wr_bytes; /* Number of bytes written to buffer */
+};
+
+struct cca_device_cert {
+	unsigned long size;
+	unsigned char value[MAX_DEV_CERT_SIZE];
+};
+
+#define TMM_GET_TSI_VERSION _IOR(TSI_MAGIC, 0, struct cvm_tsi_version)
+
+#define TMM_GET_ATTESTATION_TOKEN _IOWR(TSI_MAGIC, 1, struct cvm_attestation_cmd)
+
+#define TMM_GET_DEVICE_CERT _IOR(TSI_MAGIC, 2, struct cca_device_cert)
+
+#endif  /* __ASM_TSI_TMM_H_ */
diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile
index 4c6eb5e78e..781c2216a2 100644
--- a/arch/arm64/kernel/Makefile
+++ b/arch/arm64/kernel/Makefile
@@ -73,7 +73,7 @@ obj-$(CONFIG_ARM64_PTR_AUTH)		+= pointer_auth.o
 obj-$(CONFIG_SHADOW_CALL_STACK)		+= scs.o
 obj-$(CONFIG_ARM64_MTE)			+= mte.o
 obj-$(CONFIG_MPAM)			+= mpam/
-obj-$(CONFIG_CVM_GUEST)			+= cvm_guest.o
+obj-$(CONFIG_CVM_GUEST)			+= cvm_guest.o tsi.o tsi_tmm.o
 
 obj-y					+= vdso/ probes/
 obj-$(CONFIG_COMPAT_VDSO)		+= vdso32/
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index c687866612..22c0284cbd 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -43,6 +43,11 @@
 #include <asm/cpu_ops.h>
 #include <asm/kasan.h>
 #include <asm/numa.h>
+
+#ifdef CONFIG_CVM_GUEST
+#include <asm/tsi.h>
+#endif
+
 #include <asm/sections.h>
 #include <asm/setup.h>
 #include <asm/smp_plat.h>
@@ -384,6 +389,12 @@ void __init __no_sanitize_address setup_arch(char **cmdline_p)
 	 * cpufeature code and early parameters.
 	 */
 	jump_label_init();
+
+#ifdef CONFIG_CVM_GUEST
+	/* Init TSI after jump_labels are active */
+	arm64_tsi_init();
+#endif
+
 	parse_early_param();
 
 	/*
diff --git a/arch/arm64/kernel/tsi.c b/arch/arm64/kernel/tsi.c
new file mode 100644
index 0000000000..40da8a8aec
--- /dev/null
+++ b/arch/arm64/kernel/tsi.c
@@ -0,0 +1,45 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <linux/jump_label.h>
+#include <linux/memblock.h>
+#include <linux/swiotlb.h>
+#include <linux/cc_platform.h>
+#include <asm/tsi_tmm.h>
+#include <asm/tsi_cmds.h>
+#include <asm/tsi.h>
+
+unsigned long prot_ns_shared;
+EXPORT_SYMBOL(prot_ns_shared);
+
+unsigned int phys_mask_shift = CONFIG_ARM64_PA_BITS;
+
+DEFINE_STATIC_KEY_FALSE_RO(tsi_present);
+
+static bool tsi_version_matches(void)
+{
+	unsigned long ver = tsi_get_version();
+
+	if (ver == SMCCC_RET_NOT_SUPPORTED)
+		return false;
+
+	pr_info("RME: TSI version %lu.%lu advertised\n",
+		TSI_ABI_VERSION_GET_MAJOR(ver),
+		TSI_ABI_VERSION_GET_MINOR(ver));
+
+	return (ver >= TSI_ABI_VERSION &&
+		TSI_ABI_VERSION_GET_MAJOR(ver) == TSI_ABI_VERSION_MAJOR);
+}
+
+
+void arm64_setup_memory(void)
+{
+	if (!static_branch_unlikely(&tsi_present))
+		return;
+}
+
+void __init arm64_tsi_init(void)
+{
+	if (!tsi_version_matches())
+		return;
+
+	static_branch_enable(&tsi_present);
+}
diff --git a/arch/arm64/kernel/tsi_tmm.c b/arch/arm64/kernel/tsi_tmm.c
new file mode 100644
index 0000000000..68fe474c99
--- /dev/null
+++ b/arch/arm64/kernel/tsi_tmm.c
@@ -0,0 +1,253 @@
+// SPDX-License-Identifier: GPL-2.0-only
+#include <linux/module.h>
+#include <linux/memblock.h>
+#include <linux/slab.h>
+#include <linux/miscdevice.h>
+#include <linux/preempt.h>
+#include <asm/tsi_cmds.h>
+#include <asm/tsi_tmm.h>
+
+#define GRANULE_SIZE PAGE_SIZE
+
+struct attestation_token {
+	void *buf;
+	unsigned long size;
+};
+
+static struct attestation_token token;
+
+static long tmm_tsi_ioctl(struct file *file, unsigned int cmd, unsigned long arg);
+static int tmm_tsi_open(struct inode *inode, struct file *file);
+static int tmm_tsi_release(struct inode *inode, struct file *file);
+static ssize_t tmm_token_read(struct file *file, char __user *user_buffer,
+	size_t size, loff_t *offset);
+
+static int tmm_get_tsi_version(struct cvm_tsi_version *arg);
+static int tmm_get_attestation_token(struct cvm_attestation_cmd *arg,
+	struct attestation_token *attest_token);
+static int tmm_get_device_cert(struct cca_device_cert *arg);
+
+static const struct file_operations tmm_tsi_fops = {
+	.owner          = THIS_MODULE,
+	.open           = tmm_tsi_open,
+	.read           = tmm_token_read,
+	.release        = tmm_tsi_release,
+	.unlocked_ioctl = tmm_tsi_ioctl
+};
+
+static struct miscdevice ioctl_dev = {
+	MISC_DYNAMIC_MINOR,
+	"tsi",
+	&tmm_tsi_fops,
+};
+
+static int __init tmm_tsi_init(void)
+{
+	unsigned long ver;
+	int ret;
+
+	ver = tsi_get_version();
+
+	if (ver == SMCCC_RET_NOT_SUPPORTED) {
+		pr_err("tmm_tsi: SMC return not supported!\n");
+		return -EIO;
+	}
+
+	ret = misc_register(&ioctl_dev);
+	if (ret) {
+		pr_err("tmm_tsi: misc device register failed (%d)!\n", ret);
+		return ret;
+	}
+
+	pr_warn("tmm_tsi: module loaded (version %lu.%lu).\n",
+			TSI_ABI_VERSION_GET_MAJOR(ver),
+			TSI_ABI_VERSION_GET_MINOR(ver));
+
+	return 0;
+}
+
+static void __exit tmm_tsi_exit(void)
+{
+	if (token.buf != NULL)
+		kfree(token.buf);
+	misc_deregister(&ioctl_dev);
+	pr_warn("tmm_tsi: module unloaded.\n");
+}
+
+static long tmm_tsi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+	int ret;
+
+	switch (cmd) {
+	case TMM_GET_TSI_VERSION:
+		ret = tmm_get_tsi_version((struct cvm_tsi_version *)arg);
+		break;
+	case TMM_GET_ATTESTATION_TOKEN:
+		ret = tmm_get_attestation_token((struct cvm_attestation_cmd *)arg, &token);
+		break;
+	case TMM_GET_DEVICE_CERT:
+		ret = tmm_get_device_cert((struct cca_device_cert *)arg);
+		break;
+	default:
+		pr_err("tmm_tsi: unknown ioctl command (0x%x)!\n", cmd);
+		return -ENOTTY;
+	}
+
+	return ret;
+}
+
+static int tmm_tsi_open(struct inode *inode, struct file *file)
+{
+	token.buf = NULL;
+	return 0;
+}
+
+static ssize_t tmm_token_read(struct file *file, char __user *user_buffer,
+	size_t size, loff_t *offset)
+{
+	int ret;
+	int to_copy;
+
+	if (*offset >= token.size)
+		return 0;
+
+	to_copy = min((int)size, (int)(token.size - *offset));
+	ret = copy_to_user(user_buffer, token.buf + *offset, to_copy);
+	if (ret) {
+		pr_err("tmm_tsi: copy token to user failed (%d)!\n", ret);
+		return -1;
+	}
+
+	*offset += to_copy;
+	return to_copy;
+}
+
+static int tmm_tsi_release(struct inode *inode, struct file *file)
+{
+	if (token.buf != NULL)
+		kfree(token.buf);
+	return 0;
+}
+
+static int tmm_get_tsi_version(struct cvm_tsi_version *arg)
+{
+	struct cvm_tsi_version ver_measured = {0};
+	unsigned long ver;
+	unsigned long ret;
+
+	ver = tsi_get_version();
+	ver_measured.major = TSI_ABI_VERSION_GET_MAJOR(ver);
+	ver_measured.minor = TSI_ABI_VERSION_GET_MINOR(ver);
+
+	ret = copy_to_user(arg, &ver_measured, sizeof(struct cvm_tsi_version));
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	return 0;
+}
+
+static int tmm_get_attestation_token(struct cvm_attestation_cmd *arg,
+	struct attestation_token *attest_token)
+{
+	unsigned long ret;
+	struct cvm_attestation_cmd cmd = {0};
+
+	ret = copy_from_user(&(cmd.challenge), &(arg->challenge), sizeof(cmd.challenge));
+	if (ret) {
+		pr_err("tmm_tsi: copy data from user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	/* Allocate a large memory */
+	attest_token->buf = kmalloc(GRANULE_SIZE * MAX_TOKEN_GRANULE_PAGE, GFP_KERNEL);
+	if (!attest_token->buf)
+		return -ENOMEM;
+	cmd.granule_head = attest_token->buf;
+	cmd.granule_ipa  = cmd.granule_head;
+
+	/* preempt_disable(); */
+
+	ret = tsi_attestation_token_init(&cmd);
+	if (ret) {
+		pr_err("tmm_tsi: tsi call tsi_attestation_token_init failed (%lu)!\n", ret);
+		return -EIO;
+	}
+
+	do { /* Retrieve one Granule of data per loop iteration */
+		cmd.granule_ipa = cmd.granule_head +
+			(unsigned long)(cmd.granule_count * GRANULE_SIZE);
+		cmd.offset = 0;
+
+		do { /* Retrieve sub-Granule chunk of data per loop iteration */
+			cmd.size = GRANULE_SIZE - cmd.offset;
+			ret = tsi_attestation_token_continue(&cmd);
+			cmd.offset += cmd.num_wr_bytes;
+		} while (ret == TSI_INCOMPLETE && cmd.offset < GRANULE_SIZE);
+
+		cmd.granule_count += 1;
+		if (cmd.granule_count >= MAX_TOKEN_GRANULE_PAGE && ret == TSI_INCOMPLETE) {
+			pr_err("tmm_tsi: macro MAX_TOKEN_GRANULE_PAGE (%d) is too small!\n",
+				MAX_TOKEN_GRANULE_PAGE);
+			return -ENOMEM;
+		}
+
+	} while (ret == TSI_INCOMPLETE);
+
+	/* preempt_enable(); */
+
+	/* Send to user space the total size of the token */
+	cmd.granule_count = cmd.granule_count - 1;
+	cmd.token_size = (unsigned long)(GRANULE_SIZE * cmd.granule_count) + cmd.offset;
+	attest_token->size = cmd.token_size;
+
+	ret = copy_to_user(&(arg->token_size), &(cmd.token_size), sizeof(cmd.token_size));
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	return 0;
+}
+
+static int tmm_get_device_cert(struct cca_device_cert *arg)
+{
+	unsigned long ret;
+	unsigned char *device_cert;
+	unsigned long device_cert_size;
+
+	device_cert_size = MAX_DEV_CERT_SIZE;
+	device_cert = kmalloc(device_cert_size, GFP_KERNEL);
+	if (!device_cert)
+		return -ENOMEM;
+	ret = tsi_get_device_cert(device_cert, &device_cert_size);
+	if (ret != TSI_SUCCESS) {
+		pr_err("tmm_tsi: tsi call tsi_get_device_cert failed (%lu)!\n", ret);
+		kfree(device_cert);
+		return -EIO;
+	}
+
+	ret = copy_to_user(arg->value, device_cert, device_cert_size);
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		kfree(device_cert);
+		return -EFAULT;
+	}
+	kfree(device_cert);
+
+	ret = copy_to_user(&(arg->size), &device_cert_size, sizeof(device_cert_size));
+	if (ret) {
+		pr_err("tmm_tsi: copy data to user failed (%lu)!\n", ret);
+		return -EFAULT;
+	}
+
+	return 0;
+}
+
+module_init(tmm_tsi_init);
+module_exit(tmm_tsi_exit);
+
+MODULE_LICENSE("GPL");
+MODULE_AUTHOR("HUAWEI TECHNOLOGIES CO., LTD.");
+MODULE_DESCRIPTION("Interacting with TMM through TSI interface from user space.");
-- 
2.37.2.windows.2
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            1
                            
                          
                          
                            
    
                          
                        
                     
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-6.6 7348/9645] arch/arm64/kernel/cpufeature.c:2209:50: error: use of undeclared identifier 'enable_pseudo_nmi'; did you mean 'enable_percpu_nmi'?
                        
                        
by kernel test robot 18 May '24
                    by kernel test robot 18 May '24
18 May '24
                    
                        tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   82db6deaf0ed47731fce29fb698bbc9b1ff793ac
commit: b8c8255e1d74937638bca666264404952c60395a [7348/9645] arm64: Decouple KVM from CONFIG_ARM64_NMI
config: arm64-randconfig-r052-20240518 (https://download.01.org/0day-ci/archive/20240518/202405180744.AsLBV6aC-lkp@…)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project fa9b1be45088dce1e4b602d451f118128b94237b)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240518/202405180744.AsLBV6aC-lkp@…)
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(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405180744.AsLBV6aC-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
   In file included from arch/arm64/kernel/cpufeature.c:67:
   In file included from include/linux/crash_dump.h:5:
   In file included from include/linux/kexec.h:18:
   In file included from include/linux/crash_core.h:6:
   In file included from include/linux/elfcore.h:11:
   In file included from include/linux/ptrace.h:10:
   In file included from include/linux/pid_namespace.h:7:
   In file included from include/linux/mm.h:2204:
   include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
>> arch/arm64/kernel/cpufeature.c:2209:50: error: use of undeclared identifier 'enable_pseudo_nmi'; did you mean 'enable_percpu_nmi'?
    2209 |         else if (IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) && enable_pseudo_nmi) {
         |                                                         ^~~~~~~~~~~~~~~~~
         |                                                         enable_percpu_nmi
   include/linux/interrupt.h:240:13: note: 'enable_percpu_nmi' declared here
     240 | extern void enable_percpu_nmi(unsigned int irq, unsigned int type);
         |             ^
>> arch/arm64/kernel/cpufeature.c:2209:50: warning: address of function 'enable_percpu_nmi' will always evaluate to 'true' [-Wpointer-bool-conversion]
    2209 |         else if (IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) && enable_pseudo_nmi) {
         |                                                      ~~ ^~~~~~~~~~~~~~~~~
   arch/arm64/kernel/cpufeature.c:2209:50: note: prefix with the address-of operator to silence this warning
    2209 |         else if (IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) && enable_pseudo_nmi) {
         |                                                         ^
         |                                                         &
   2 warnings and 1 error generated.
Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for PGP_PRELOAD
   Depends on [n]: CRYPTO [=y] && ASYMMETRIC_KEY_TYPE [=n]
   Selected by [y]:
   - PGP_PRELOAD_PUBLIC_KEYS [=y] && CRYPTO [=y]
vim +2209 arch/arm64/kernel/cpufeature.c
  2191	
  2192	static bool use_nmi(const struct arm64_cpu_capabilities *entry, int scope)
  2193	{
  2194		if (!has_cpuid_feature(entry, scope))
  2195			return false;
  2196	
  2197		/*
  2198		 * NMI support was not enabled in the kernel, but can still be
  2199		 * used by guests. Let the world know.
  2200		 *
  2201		 * Having both real and pseudo NMIs enabled simultaneously is
  2202		 * likely to cause confusion.  Since pseudo NMIs must be
  2203		 * enabled with an explicit command line option, if the user
  2204		 * has set that option on a system with real NMIs for some
  2205		 * reason assume they know what they're doing.
  2206		 */
  2207		if (!IS_ENABLED(CONFIG_ARM64_NMI))
  2208			pr_info("CONFIG_ARM64_NMI disabled, using NMIs for guests only\n");
> 2209		else if (IS_ENABLED(CONFIG_ARM64_PSEUDO_NMI) && enable_pseudo_nmi) {
  2210			pr_info("Pseudo NMI enabled, not using architected NMI\n");
  2211			return false;
  2212		}
  2213	
  2214		return true;
  2215	}
  2216	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-5.10] BUILD SUCCESS 55b1bcbbf47277fabdef3bbf5c42b3717a0a6cf2
                        
                        
by kernel test robot 18 May '24
                    by kernel test robot 18 May '24
18 May '24
                    
                        tree/branch: https://gitee.com/openeuler/kernel.git OLK-5.10
branch HEAD: 55b1bcbbf47277fabdef3bbf5c42b3717a0a6cf2  !7351  PM / devfreq: Synchronize devfreq_monitor_[start/stop
Warning ids grouped by kconfigs:
clang_recent_errors
`-- x86_64-allnoconfig
    `-- Warning:openEuler-MAINTAINERS-references-a-file-that-doesn-t-exist:Documentation-networking-hinic3.rst
elapsed time: 735m
configs tested: 35
configs skipped: 150
The following configs have been built successfully.
More configs may be tested in the coming days.
tested configs:
arm64                            allmodconfig   clang
arm64                             allnoconfig   gcc  
arm64                               defconfig   gcc  
arm64                 randconfig-001-20240517   clang
arm64                 randconfig-002-20240517   gcc  
arm64                 randconfig-003-20240517   clang
arm64                 randconfig-004-20240517   clang
x86_64                            allnoconfig   clang
x86_64                           allyesconfig   clang
x86_64       buildonly-randconfig-001-20240518   gcc  
x86_64       buildonly-randconfig-002-20240518   clang
x86_64       buildonly-randconfig-003-20240518   clang
x86_64       buildonly-randconfig-004-20240518   clang
x86_64       buildonly-randconfig-005-20240518   clang
x86_64       buildonly-randconfig-006-20240518   clang
x86_64                              defconfig   gcc  
x86_64                randconfig-001-20240518   clang
x86_64                randconfig-002-20240518   clang
x86_64                randconfig-003-20240518   gcc  
x86_64                randconfig-004-20240518   gcc  
x86_64                randconfig-005-20240518   gcc  
x86_64                randconfig-006-20240518   clang
x86_64                randconfig-011-20240518   gcc  
x86_64                randconfig-012-20240518   gcc  
x86_64                randconfig-013-20240518   clang
x86_64                randconfig-014-20240518   gcc  
x86_64                randconfig-015-20240518   clang
x86_64                randconfig-016-20240518   clang
x86_64                randconfig-071-20240518   clang
x86_64                randconfig-072-20240518   clang
x86_64                randconfig-073-20240518   gcc  
x86_64                randconfig-074-20240518   clang
x86_64                randconfig-075-20240518   gcc  
x86_64                randconfig-076-20240518   gcc  
x86_64                          rhel-8.3-rust   clang
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                     
                        
                     
                        
                    