Kernel
Threads by month
- ----- 2026 -----
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- 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
- 41 participants
- 23589 discussions
[openeuler:OLK-6.6 3542/3542] arch/arm64/kvm/rme.c:740:6: warning: variable 'tmp_page' is used uninitialized whenever 'if' condition is true
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
Hi Steven,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: a74f93b7e7c0d8a2114055ed0c652cc735a7a07b [3542/3542] [backport]rme: populate guest memory region without guest_memfd
config: arm64-randconfig-001-20251215 (https://download.01.org/0day-ci/archive/20251222/202512222225.THn80kvi-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 1335a05ab8bc8339ce24be3a9da89d8c3f4e0571)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512222225.THn80kvi-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/202512222225.THn80kvi-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/arm64/kvm/rme.c:740:6: warning: variable 'tmp_page' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
740 | if (memslot->base_gfn + memslot->npages < end_gfn) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kvm/rme.c:789:14: note: uninitialized use occurs here
789 | __free_page(tmp_page);
| ^~~~~~~~
arch/arm64/kvm/rme.c:740:2: note: remove the 'if' if its condition is always false
740 | if (memslot->base_gfn + memslot->npages < end_gfn) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
741 | ret = -EINVAL;
| ~~~~~~~~~~~~~~
742 | goto out;
| ~~~~~~~~~
743 | }
| ~
arch/arm64/kvm/rme.c:734:6: warning: variable 'tmp_page' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
734 | if (!memslot) {
| ^~~~~~~~
arch/arm64/kvm/rme.c:789:14: note: uninitialized use occurs here
789 | __free_page(tmp_page);
| ^~~~~~~~
arch/arm64/kvm/rme.c:734:2: note: remove the 'if' if its condition is always false
734 | if (!memslot) {
| ^~~~~~~~~~~~~~~
735 | ret = -EFAULT;
| ~~~~~~~~~~~~~~
736 | goto out;
| ~~~~~~~~~
737 | }
| ~
arch/arm64/kvm/rme.c:726:23: note: initialize the variable 'tmp_page' to silence this warning
726 | struct page *tmp_page;
| ^
| = NULL
arch/arm64/kvm/rme.c:798:16: warning: variable 'data_flags' set but not used [-Wunused-but-set-variable]
798 | unsigned long data_flags = 0;
| ^
3 warnings generated.
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for RESCTRL_FS
Depends on [n]: MISC_FILESYSTEMS [=n] && ARCH_HAS_CPU_RESCTRL [=y]
Selected by [y]:
- ARM64_MPAM [=y]
vim +740 arch/arm64/kvm/rme.c
e216f77846eeb7 Steven Price 2025-06-14 715
e216f77846eeb7 Steven Price 2025-06-14 716 static int populate_region(struct kvm *kvm,
e216f77846eeb7 Steven Price 2025-06-14 717 phys_addr_t ipa_base,
e216f77846eeb7 Steven Price 2025-06-14 718 phys_addr_t ipa_end,
e216f77846eeb7 Steven Price 2025-06-14 719 unsigned long data_flags)
e216f77846eeb7 Steven Price 2025-06-14 720 {
e216f77846eeb7 Steven Price 2025-06-14 721 struct realm *realm = &kvm->arch.realm;
e216f77846eeb7 Steven Price 2025-06-14 722 struct kvm_memory_slot *memslot;
e216f77846eeb7 Steven Price 2025-06-14 723 gfn_t base_gfn, end_gfn;
e216f77846eeb7 Steven Price 2025-06-14 724 int idx;
e216f77846eeb7 Steven Price 2025-06-14 725 phys_addr_t ipa = ipa_base;
a74f93b7e7c0d8 Steven Price 2025-06-14 726 struct page *tmp_page;
e216f77846eeb7 Steven Price 2025-06-14 727 int ret = 0;
e216f77846eeb7 Steven Price 2025-06-14 728
e216f77846eeb7 Steven Price 2025-06-14 729 base_gfn = gpa_to_gfn(ipa_base);
e216f77846eeb7 Steven Price 2025-06-14 730 end_gfn = gpa_to_gfn(ipa_end);
e216f77846eeb7 Steven Price 2025-06-14 731
e216f77846eeb7 Steven Price 2025-06-14 732 idx = srcu_read_lock(&kvm->srcu);
e216f77846eeb7 Steven Price 2025-06-14 733 memslot = gfn_to_memslot(kvm, base_gfn);
e216f77846eeb7 Steven Price 2025-06-14 734 if (!memslot) {
e216f77846eeb7 Steven Price 2025-06-14 735 ret = -EFAULT;
e216f77846eeb7 Steven Price 2025-06-14 736 goto out;
e216f77846eeb7 Steven Price 2025-06-14 737 }
e216f77846eeb7 Steven Price 2025-06-14 738
e216f77846eeb7 Steven Price 2025-06-14 739 /* We require the region to be contained within a single memslot */
e216f77846eeb7 Steven Price 2025-06-14 @740 if (memslot->base_gfn + memslot->npages < end_gfn) {
e216f77846eeb7 Steven Price 2025-06-14 741 ret = -EINVAL;
e216f77846eeb7 Steven Price 2025-06-14 742 goto out;
e216f77846eeb7 Steven Price 2025-06-14 743 }
e216f77846eeb7 Steven Price 2025-06-14 744
a74f93b7e7c0d8 Steven Price 2025-06-14 745 tmp_page = alloc_page(GFP_KERNEL);
a74f93b7e7c0d8 Steven Price 2025-06-14 746 if (!tmp_page) {
a74f93b7e7c0d8 Steven Price 2025-06-14 747 ret = -ENOMEM;
e216f77846eeb7 Steven Price 2025-06-14 748 goto out;
e216f77846eeb7 Steven Price 2025-06-14 749 }
e216f77846eeb7 Steven Price 2025-06-14 750
a74f93b7e7c0d8 Steven Price 2025-06-14 751 mmap_read_lock(current->mm);
a74f93b7e7c0d8 Steven Price 2025-06-14 752
e216f77846eeb7 Steven Price 2025-06-14 753 while (ipa < ipa_end) {
e216f77846eeb7 Steven Price 2025-06-14 754 struct vm_area_struct *vma;
e216f77846eeb7 Steven Price 2025-06-14 755 unsigned long hva;
e216f77846eeb7 Steven Price 2025-06-14 756 struct page *page;
e216f77846eeb7 Steven Price 2025-06-14 757 kvm_pfn_t pfn;
e216f77846eeb7 Steven Price 2025-06-14 758
e216f77846eeb7 Steven Price 2025-06-14 759 hva = gfn_to_hva_memslot(memslot, gpa_to_gfn(ipa));
e216f77846eeb7 Steven Price 2025-06-14 760 vma = vma_lookup(current->mm, hva);
e216f77846eeb7 Steven Price 2025-06-14 761 if (!vma) {
e216f77846eeb7 Steven Price 2025-06-14 762 ret = -EFAULT;
e216f77846eeb7 Steven Price 2025-06-14 763 break;
e216f77846eeb7 Steven Price 2025-06-14 764 }
e216f77846eeb7 Steven Price 2025-06-14 765
a74f93b7e7c0d8 Steven Price 2025-06-14 766 pfn = gfn_to_pfn_memslot(memslot, gpa_to_gfn(ipa));
e216f77846eeb7 Steven Price 2025-06-14 767
e216f77846eeb7 Steven Price 2025-06-14 768 if (is_error_pfn(pfn)) {
e216f77846eeb7 Steven Price 2025-06-14 769 ret = -EFAULT;
e216f77846eeb7 Steven Price 2025-06-14 770 break;
e216f77846eeb7 Steven Price 2025-06-14 771 }
e216f77846eeb7 Steven Price 2025-06-14 772
a74f93b7e7c0d8 Steven Price 2025-06-14 773 page = pfn_to_page(pfn);
e216f77846eeb7 Steven Price 2025-06-14 774
e216f77846eeb7 Steven Price 2025-06-14 775 ret = realm_create_protected_data_page(realm, ipa,
a74f93b7e7c0d8 Steven Price 2025-06-14 776 page,
a74f93b7e7c0d8 Steven Price 2025-06-14 777 tmp_page,
e216f77846eeb7 Steven Price 2025-06-14 778 data_flags);
a74f93b7e7c0d8 Steven Price 2025-06-14 779 if (ret) {
e216f77846eeb7 Steven Price 2025-06-14 780 kvm_release_page_clean(page);
e216f77846eeb7 Steven Price 2025-06-14 781 break;
a74f93b7e7c0d8 Steven Price 2025-06-14 782 }
e216f77846eeb7 Steven Price 2025-06-14 783
e216f77846eeb7 Steven Price 2025-06-14 784 ipa += PAGE_SIZE;
a74f93b7e7c0d8 Steven Price 2025-06-14 785 kvm_release_pfn_dirty(pfn);
e216f77846eeb7 Steven Price 2025-06-14 786 }
e216f77846eeb7 Steven Price 2025-06-14 787 out:
a74f93b7e7c0d8 Steven Price 2025-06-14 788 mmap_read_unlock(current->mm);
a74f93b7e7c0d8 Steven Price 2025-06-14 789 __free_page(tmp_page);
e216f77846eeb7 Steven Price 2025-06-14 790 srcu_read_unlock(&kvm->srcu, idx);
e216f77846eeb7 Steven Price 2025-06-14 791 return ret;
e216f77846eeb7 Steven Price 2025-06-14 792 }
e216f77846eeb7 Steven Price 2025-06-14 793
:::::: The code at line 740 was first introduced by commit
:::::: e216f77846eeb7062baa345cea2be0978dea94cc [v8-19-43]arm64: RME: Allow populating initial contents
:::::: TO: Steven Price <steven.price(a)arm.com>
:::::: CC: Xu Raoqing <xuraoqing(a)huawei.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-5.10 3418/3418] arch/x86/kernel/cpu/common.c:92:16: sparse: sparse: incorrect type in initializer (different address spaces)
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: f4128ae8e6ff03b4c805707fe75d0345797f7f53 [3418/3418] sched: Add cluster scheduler level for x86
config: x86_64-randconfig-121-20251217 (https://download.01.org/0day-ci/archive/20251222/202512222106.0whCMuCB-lkp@…)
compiler: gcc-12 (Debian 12.4.0-5) 12.4.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512222106.0whCMuCB-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/202512222106.0whCMuCB-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> arch/x86/kernel/cpu/common.c:92:16: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got unsigned short * @@
arch/x86/kernel/cpu/common.c:92:16: sparse: expected void const [noderef] __percpu *__vpp_verify
arch/x86/kernel/cpu/common.c:92:16: sparse: got unsigned short *
arch/x86/kernel/cpu/common.c:1901:1: sparse: sparse: symbol 'fixed_percpu_data' redeclared with different type (different address spaces):
arch/x86/kernel/cpu/common.c:1901:1: sparse: struct fixed_percpu_data [addressable] [noderef] [toplevel] __percpu fixed_percpu_data
arch/x86/kernel/cpu/common.c: note: in included file (through arch/x86/include/asm/cpufeature.h, arch/x86/include/asm/thread_info.h, include/linux/thread_bits.h, ...):
arch/x86/include/asm/processor.h:470:1: sparse: note: previously declared as:
arch/x86/include/asm/processor.h:470:1: sparse: struct fixed_percpu_data extern [addressable] [toplevel] fixed_percpu_data
arch/x86/kernel/cpu/common.c:144:43: sparse: sparse: cast truncates bits from constant value (fffff becomes ffff)
arch/x86/kernel/cpu/common.c:145:43: sparse: sparse: cast truncates bits from constant value (fffff becomes ffff)
arch/x86/kernel/cpu/common.c:146:43: sparse: sparse: cast truncates bits from constant value (fffff becomes ffff)
arch/x86/kernel/cpu/common.c:147:43: sparse: sparse: cast truncates bits from constant value (fffff becomes ffff)
arch/x86/kernel/cpu/common.c:148:43: sparse: sparse: cast truncates bits from constant value (fffff becomes ffff)
arch/x86/kernel/cpu/common.c:149:43: sparse: sparse: cast truncates bits from constant value (fffff becomes ffff)
arch/x86/include/asm/processor.h:474:31: sparse: sparse: incorrect type in initializer (different address spaces) @@ expected void const [noderef] __percpu *__vpp_verify @@ got char ( * )[40] @@
arch/x86/include/asm/processor.h:474:31: sparse: expected void const [noderef] __percpu *__vpp_verify
arch/x86/include/asm/processor.h:474:31: sparse: got char ( * )[40]
vim +92 arch/x86/kernel/cpu/common.c
f8b64d08dde271 Borislav Petkov 2018-04-27 89
6f01df96c462b7 Kim Phillips 2021-08-17 90 u16 get_llc_id(unsigned int cpu)
6f01df96c462b7 Kim Phillips 2021-08-17 91 {
6f01df96c462b7 Kim Phillips 2021-08-17 @92 return per_cpu(cpu_llc_id, cpu);
6f01df96c462b7 Kim Phillips 2021-08-17 93 }
6f01df96c462b7 Kim Phillips 2021-08-17 94 EXPORT_SYMBOL_GPL(get_llc_id);
6f01df96c462b7 Kim Phillips 2021-08-17 95
:::::: The code at line 92 was first introduced by commit
:::::: 6f01df96c462b77915b27d404152c47e75e879cf x86/cpu: Add get_llc_id() helper function
:::::: TO: Kim Phillips <kim.phillips(a)amd.com>
:::::: CC: Xie Haocheng <haocheng.xie(a)amd.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-6.6 3542/3542] arch/arm64/kvm/rme.c:799:16: warning: variable 'data_flags' set but not used
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
Hi Steven,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: e216f77846eeb7062baa345cea2be0978dea94cc [3542/3542] [v8-19-43]arm64: RME: Allow populating initial contents
config: arm64-randconfig-001-20251215 (https://download.01.org/0day-ci/archive/20251222/202512222100.DZ0g6W61-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 1335a05ab8bc8339ce24be3a9da89d8c3f4e0571)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512222100.DZ0g6W61-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/202512222100.DZ0g6W61-lkp@intel.com/
All warnings (new ones prefixed by >>):
arch/arm64/kvm/rme.c:742:7: error: call to undeclared function 'kvm_slot_can_be_private'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
742 | if (!kvm_slot_can_be_private(memslot)) {
| ^
arch/arm64/kvm/rme.c:763:9: error: call to undeclared function '__kvm_faultin_pfn'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
763 | pfn = __kvm_faultin_pfn(memslot, gpa_to_gfn(ipa), FOLL_WRITE,
| ^
arch/arm64/kvm/rme.c:771:9: error: call to undeclared function 'kvm_gmem_get_pfn'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
771 | ret = kvm_gmem_get_pfn(kvm, memslot,
| ^
>> arch/arm64/kvm/rme.c:799:16: warning: variable 'data_flags' set but not used [-Wunused-but-set-variable]
799 | unsigned long data_flags = 0;
| ^
1 warning and 3 errors generated.
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for RESCTRL_FS
Depends on [n]: MISC_FILESYSTEMS [=n] && ARCH_HAS_CPU_RESCTRL [=y]
Selected by [y]:
- ARM64_MPAM [=y]
vim +/data_flags +799 arch/arm64/kvm/rme.c
794
795 static int kvm_populate_realm(struct kvm *kvm,
796 struct arm_rme_populate_realm *args)
797 {
798 phys_addr_t ipa_base, ipa_end;
> 799 unsigned long data_flags = 0;
800
801 if (kvm_realm_state(kvm) != REALM_STATE_NEW)
802 return -EPERM;
803
804 if (!IS_ALIGNED(args->base, PAGE_SIZE) ||
805 !IS_ALIGNED(args->size, PAGE_SIZE) ||
806 (args->flags & ~RMI_MEASURE_CONTENT))
807 return -EINVAL;
808
809 ipa_base = args->base;
810 ipa_end = ipa_base + args->size;
811
812 if (ipa_end < ipa_base)
813 return -EINVAL;
814
815 if (args->flags & RMI_MEASURE_CONTENT)
816 data_flags |= RMI_MEASURE_CONTENT;
817
818 /*
819 * Perform the population in parts to ensure locks are not held for too
820 * long
821 */
822 while (ipa_base < ipa_end) {
823 phys_addr_t end = min(ipa_end, ipa_base + SZ_2M);
824
825 int ret = populate_region(kvm, ipa_base, end,
826 args->flags);
827
828 if (ret)
829 return ret;
830
831 ipa_base = end;
832
833 cond_resched();
834 }
835
836 return 0;
837 }
838
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-5.10 3418/3418] drivers/usb/cdns3/drd.c:44:38: sparse: sparse: incorrect type in assignment (different base types)
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: fe4466c05ba70c2e354965de9548eb4ab5db783b [3418/3418] usb: cdns3: Add support for DRD CDNSP
config: x86_64-randconfig-122-20251217 (https://download.01.org/0day-ci/archive/20251222/202512222111.1LJ3T3qn-lkp@…)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512222111.1LJ3T3qn-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/202512222111.1LJ3T3qn-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/usb/cdns3/drd.c:44:38: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [noderef] [usertype] __iomem *override_reg @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:44:38: sparse: expected unsigned int [noderef] [usertype] __iomem *override_reg
drivers/usb/cdns3/drd.c:44:38: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:46:38: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [noderef] [usertype] __iomem *override_reg @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:46:38: sparse: expected unsigned int [noderef] [usertype] __iomem *override_reg
drivers/usb/cdns3/drd.c:46:38: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:48:38: sparse: sparse: incorrect type in assignment (different base types) @@ expected unsigned int [noderef] [usertype] __iomem *override_reg @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:48:38: sparse: expected unsigned int [noderef] [usertype] __iomem *override_reg
drivers/usb/cdns3/drd.c:48:38: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:67:50: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:67:50: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:67:50: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:69:50: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:69:50: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:69:50: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:92:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:92:25: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:92:25: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:102:30: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:102:30: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:102:30: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:135:24: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:135:24: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:135:24: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:145:48: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:145:48: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:145:48: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:161:21: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:161:21: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:161:21: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:169:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:169:15: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:169:15: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:169:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:169:15: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:169:15: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:189:21: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:189:21: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:189:21: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:192:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:192:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:192:9: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:192:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:192:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:192:9: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:211:47: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:211:47: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:211:47: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:220:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:220:15: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:220:15: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:220:15: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:220:15: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:220:15: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:246:21: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:246:21: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:246:21: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:248:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:248:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:248:9: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:248:9: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:248:9: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:248:9: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:266:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:266:25: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:266:25: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:335:26: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:335:26: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:335:26: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:354:25: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:354:25: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:354:25: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:377:27: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct cdns3_otg_legacy_regs *otg_v0_regs @@ got void [noderef] __iomem *[assigned] regs @@
drivers/usb/cdns3/drd.c:377:27: sparse: expected struct cdns3_otg_legacy_regs *otg_v0_regs
drivers/usb/cdns3/drd.c:377:27: sparse: got void [noderef] __iomem *[assigned] regs
drivers/usb/cdns3/drd.c:378:25: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:378:25: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:378:25: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:382:32: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct cdns3_otg_common_regs *otg_regs @@ got void [noderef] __iomem *[assigned] regs @@
drivers/usb/cdns3/drd.c:382:32: sparse: expected struct cdns3_otg_common_regs *otg_regs
drivers/usb/cdns3/drd.c:382:32: sparse: got void [noderef] __iomem *[assigned] regs
drivers/usb/cdns3/drd.c:385:32: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:385:32: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:385:32: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:386:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:386:17: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:386:17: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:390:35: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct cdns3_otg_regs *otg_v1_regs @@ got void [noderef] __iomem *[assigned] regs @@
drivers/usb/cdns3/drd.c:390:35: sparse: expected struct cdns3_otg_regs *otg_v1_regs
drivers/usb/cdns3/drd.c:390:35: sparse: got void [noderef] __iomem *[assigned] regs
drivers/usb/cdns3/drd.c:391:38: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct cdnsp_otg_regs *otg_cdnsp_regs @@ got void [noderef] __iomem *[assigned] regs @@
drivers/usb/cdns3/drd.c:391:38: sparse: expected struct cdnsp_otg_regs *otg_cdnsp_regs
drivers/usb/cdns3/drd.c:391:38: sparse: got void [noderef] __iomem *[assigned] regs
drivers/usb/cdns3/drd.c:395:41: sparse: sparse: restricted __le32 degrades to integer
drivers/usb/cdns3/drd.c:402:40: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:402:40: sparse: expected void volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:402:40: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:406:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
drivers/usb/cdns3/drd.c:406:17: sparse: expected void const volatile [noderef] __iomem *addr
drivers/usb/cdns3/drd.c:406:17: sparse: got restricted __le32 *
drivers/usb/cdns3/drd.c:406:17: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __iomem *addr @@ got restricted __le32 * @@
vim +44 drivers/usb/cdns3/drd.c
22
23 /**
24 * cdns3_set_mode - change mode of OTG Core
25 * @cdns: pointer to context structure
26 * @mode: selected mode from cdns_role
27 *
28 * Returns 0 on success otherwise negative errno
29 */
30 static int cdns3_set_mode(struct cdns3 *cdns, enum usb_dr_mode mode)
31 {
32 u32 __iomem *override_reg;
33 u32 reg;
34
35 switch (mode) {
36 case USB_DR_MODE_PERIPHERAL:
37 break;
38 case USB_DR_MODE_HOST:
39 break;
40 case USB_DR_MODE_OTG:
41 dev_dbg(cdns->dev, "Set controller to OTG mode\n");
42
43 if (cdns->version == CDNSP_CONTROLLER_V2)
> 44 override_reg = &cdns->otg_cdnsp_regs->override;
45 else if (cdns->version == CDNS3_CONTROLLER_V1)
46 override_reg = &cdns->otg_v1_regs->override;
47 else
48 override_reg = &cdns->otg_v0_regs->ctrl1;
49
50 reg = readl(override_reg);
51
52 if (cdns->version != CDNS3_CONTROLLER_V0)
53 reg |= OVERRIDE_IDPULLUP;
54 else
55 reg |= OVERRIDE_IDPULLUP_V0;
56
57 writel(reg, override_reg);
58
59 if (cdns->version == CDNS3_CONTROLLER_V1) {
60 /*
61 * Enable work around feature built into the
62 * controller to address issue with RX Sensitivity
63 * est (EL_17) for USB2 PHY. The issue only occures
64 * for 0x0002450D controller version.
65 */
66 if (cdns->phyrst_a_enable) {
67 reg = readl(&cdns->otg_v1_regs->phyrst_cfg);
68 reg |= PHYRST_CFG_PHYRST_A_ENABLE;
69 writel(reg, &cdns->otg_v1_regs->phyrst_cfg);
70 }
71 }
72
73 /*
74 * Hardware specification says: "ID_VALUE must be valid within
75 * 50ms after idpullup is set to '1" so driver must wait
76 * 50ms before reading this pin.
77 */
78 usleep_range(50000, 60000);
79 break;
80 default:
81 dev_err(cdns->dev, "Unsupported mode of operation %d\n", mode);
82 return -EINVAL;
83 }
84
85 return 0;
86 }
87
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
From: Tong Tiangen <tongtiangen(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitcode.com/openeuler/kernel/issues/7837
-------------------------------
Large memory migration imposes significant overhead on the CPU. This patch
introduces enhancements to the page migration by offloading the copy to
UDMA hardware which based on the DMA engine framework, and a new migration
mode has been introduced, If DMA migration fails, it will fall back to CPU
migration.
DMA migration supports both asynchronous and synchronous modes for
subsequent debugging purposes.
Signed-off-by: Tong Tiangen <tongtiangen(a)huawei.com>
Signed-off-by: Zeng Heng <zengheng4(a)huawei.com>
---
arch/arm64/configs/openeuler_defconfig | 1 +
include/linux/migrate_mode.h | 7 ++
include/linux/mm.h | 8 ++
mm/Kconfig | 12 +++
mm/Makefile | 1 +
mm/migrate.c | 9 ++
mm/migrate_dma.c | 143 +++++++++++++++++++++++++
7 files changed, 181 insertions(+)
create mode 100644 mm/migrate_dma.c
diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig
index c25ac4ff6c2f..08af29cf2776 100644
--- a/arch/arm64/configs/openeuler_defconfig
+++ b/arch/arm64/configs/openeuler_defconfig
@@ -1186,6 +1186,7 @@ CONFIG_COMPACTION=y
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_PAGE_REPORTING=y
CONFIG_MIGRATION=y
+CONFIG_MIGRATE_PAGES_DMA_OFFLOADING=y
CONFIG_DEVICE_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_ARCH_ENABLE_THP_MIGRATION=y
diff --git a/include/linux/migrate_mode.h b/include/linux/migrate_mode.h
index 0f577f932bb4..5283e62b7d1b 100644
--- a/include/linux/migrate_mode.h
+++ b/include/linux/migrate_mode.h
@@ -19,6 +19,13 @@ enum migrate_mode {
MIGRATE_SYNC_NO_COPY,
};
+/*
+ * Actually the macro MIGRATE_ASYNC_DMA_OFFLOADING definition should be
+ * placed within enum migrate_mode, but for KABI compatibility, it is
+ * defined here alone.
+ */
+#define MIGRATE_ASYNC_DMA_OFFLOADING (10)
+
enum migrate_reason {
MR_COMPACTION,
MR_MEMORY_FAILURE,
diff --git a/include/linux/mm.h b/include/linux/mm.h
index c0040a2014c4..036822cb1b9d 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1330,6 +1330,14 @@ void put_pages_list(struct list_head *pages);
void split_page(struct page *page, unsigned int order);
void folio_copy(struct folio *dst, struct folio *src);
int folio_mc_copy(struct folio *dst, struct folio *src);
+#ifdef CONFIG_MIGRATE_PAGES_DMA_OFFLOADING
+int folio_dma_copy(struct folio *dst, struct folio *src);
+#else
+static inline int folio_dma_copy(struct folio *dst, struct folio *src)
+{
+ return -ENODEV;
+}
+#endif
unsigned long nr_free_buffer_pages(void);
diff --git a/mm/Kconfig b/mm/Kconfig
index 4eb0642b71e5..12438e8dff88 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -696,6 +696,18 @@ config MIGRATION
pages as migration can relocate pages to satisfy a huge page
allocation instead of reclaiming.
+config MIGRATE_PAGES_DMA_OFFLOADING
+ bool "Support to use DMA channels for page migration"
+ depends on DMA_ENGINE
+ depends on MIGRATION
+ default y
+ help
+ This config enhances page migration by introducing a new mode
+ that offloads copy operations to UB-DMA hardware based on the
+ DMA engine framework, with automatic fallback to CPU migration
+ if DMA migration fails. DMA migration supports both asynchronous
+ and synchronous modes to facilitate debugging.
+
config DEVICE_MIGRATION
def_bool MIGRATION && ZONE_DEVICE
diff --git a/mm/Makefile b/mm/Makefile
index e45cdeda47b7..dd81f8c33e03 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -92,6 +92,7 @@ obj-$(CONFIG_FAILSLAB) += failslab.o
obj-$(CONFIG_FAIL_PAGE_ALLOC) += fail_page_alloc.o
obj-$(CONFIG_MEMTEST) += memtest.o
obj-$(CONFIG_MIGRATION) += migrate.o
+obj-$(CONFIG_MIGRATE_PAGES_DMA_OFFLOADING) += migrate_dma.o
obj-$(CONFIG_NUMA) += memory-tiers.o
obj-$(CONFIG_DEVICE_MIGRATION) += migrate_device.o
obj-$(CONFIG_TRANSPARENT_HUGEPAGE) += huge_memory.o khugepaged.o
diff --git a/mm/migrate.c b/mm/migrate.c
index 148e55fab012..216f45c9570f 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -583,6 +583,15 @@ static int folio_migrate_mc_copy(struct folio *dst, struct folio *src,
if (mode == MIGRATE_SYNC_NO_COPY)
return 0;
+ if (mode == MIGRATE_ASYNC_DMA_OFFLOADING) {
+ if (folio_test_hugetlb(src) ||
+ folio_test_pmd_mappable(src)) {
+ /* if dma offloading fail, fallback */
+ if (!folio_dma_copy(dst, src))
+ return 0;
+ }
+ }
+
return folio_mc_copy(dst, src);
}
diff --git a/mm/migrate_dma.c b/mm/migrate_dma.c
new file mode 100644
index 000000000000..796cd9a5477e
--- /dev/null
+++ b/mm/migrate_dma.c
@@ -0,0 +1,143 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Support to use DMA channels for page migration.
+ *
+ * Copyright (C) 2025 Huawei Limited
+ */
+
+#define pr_fmt(fmt) "migrate_dma: " fmt
+
+#include <linux/dmaengine.h>
+#include <linux/dma-mapping.h>
+
+/* DMA channel track its transfers done */
+struct dma_channel_work {
+ struct dma_chan *chan;
+ enum dma_status status;
+ struct completion done;
+};
+
+static void folios_dma_copy_completion_callback(void *param,
+ const struct dmaengine_result *result)
+{
+ struct dma_channel_work *chan_work = param;
+
+ if (result) {
+ enum dmaengine_tx_result dma_res = result->result;
+
+ if (dma_res == DMA_TRANS_NOERROR)
+ chan_work->status = DMA_COMPLETE;
+ else
+ chan_work->status = DMA_ERROR;
+ }
+
+ complete(&chan_work->done);
+}
+
+static int process_folio_dma_transfer(struct dma_channel_work *chan_work,
+ struct folio *src, struct folio *dst)
+{
+ struct dma_chan *chan = chan_work->chan;
+ struct device *dev = dmaengine_get_dma_device(chan);
+ enum dma_ctrl_flags flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
+ struct dma_async_tx_descriptor *tx;
+ dma_addr_t src_handle, dst_handle;
+ size_t size = folio_size(src);
+ int ret;
+
+ src_handle = dma_map_page(dev, &src->page, 0, size, DMA_TO_DEVICE);
+ if (dma_mapping_error(dev, src_handle)) {
+ dev_err(dev, "map dma src page error.\n");
+ return -ENOMEM;
+ }
+
+ dst_handle = dma_map_page(dev, &dst->page, 0, size, DMA_FROM_DEVICE);
+ if (dma_mapping_error(dev, dst_handle)) {
+ dev_err(dev, "map dma dst page error.\n");
+ ret = -ENOMEM;
+ goto out_unmap;
+ }
+
+ tx = dmaengine_prep_dma_memcpy(chan, dst_handle, src_handle,
+ size, flags);
+ if (unlikely(!tx)) {
+ dev_err(dev, "prep dma memcpy error.\n");
+ ret = -EBUSY;
+ goto out_unmap_all;
+ }
+
+ tx->callback_result = folios_dma_copy_completion_callback;
+ tx->callback_param = chan_work;
+ init_completion(&chan_work->done);
+ chan_work->status = DMA_ERROR;
+
+ if (dma_submit_error(dmaengine_submit(tx))) {
+ dev_err(dev, "dma submit error.\n");
+ ret = -EINVAL;
+ goto out_unmap_all;
+ }
+
+ dma_async_issue_pending(chan);
+ if (!wait_for_completion_timeout(&chan_work->done,
+ msecs_to_jiffies(1000))) {
+ ret = -ETIMEDOUT;
+ goto out_unmap_all;
+ }
+
+ ret = (chan_work->status == DMA_COMPLETE) ? 0 : -EPROTO;
+
+out_unmap_all:
+ dma_unmap_page(dev, dst_handle, size, DMA_FROM_DEVICE);
+out_unmap:
+ dma_unmap_page(dev, src_handle, size, DMA_TO_DEVICE);
+
+ return ret;
+}
+
+static bool folio_dma_chan_filter(struct dma_chan *chan, void *param)
+{
+ return !strcmp(dev_name(chan->device->dev), "ub_dma_device");
+}
+
+int folio_dma_copy(struct folio *dst, struct folio *src)
+{
+ struct dma_channel_work *chan_work;
+ struct dma_slave_config dma_cfg;
+ struct dma_chan *chan;
+ dma_cap_mask_t mask;
+ int ret = -ENODEV;
+
+ dma_cap_zero(mask);
+ dma_cap_set(DMA_MEMCPY, mask);
+ chan = dma_request_channel(mask, folio_dma_chan_filter, NULL);
+ if (!chan) {
+ pr_err("failed to allocate dma channel.\n");
+ return ret;
+ }
+
+ memset(&dma_cfg, 0, sizeof(dma_cfg));
+ dma_cfg.direction = DMA_MEM_TO_MEM;
+ ret = dmaengine_slave_config(chan, &dma_cfg);
+ if (ret) {
+ pr_err("failed to config dma channel.\n");
+ goto out_release;
+ }
+
+ chan_work = kmalloc(sizeof(*chan_work), GFP_KERNEL);
+ if (unlikely(!chan_work)) {
+ pr_err("failed to allocate memory for chan work.\n");
+ goto out_release;
+ }
+
+ chan_work->chan = chan;
+ ret = process_folio_dma_transfer(chan_work, src, dst);
+ if (unlikely(ret))
+ pr_err("failed to process folio dma transfer.\n");
+
+ kfree(chan_work);
+out_release:
+ dma_release_channel(chan);
+
+ return ret;
+}
+EXPORT_SYMBOL(folio_dma_copy);
--
2.25.1
2
1
[openeuler:OLK-6.6 3557/3557] drivers/platform/mpam/mpam_resctrl.c:25:1: sparse: sparse: symbol 'resctrl_mon_ctx_waiters' was not declared. Should it be static?
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 9119da1439390ea4f29a0635652248aa3c2040f0 [3557/3557] arm_mpam: resctrl: Allow resctrl to allocate monitors
config: arm64-randconfig-r132-20251218 (https://download.01.org/0day-ci/archive/20251222/202512221945.aSbuNpcr-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512221945.aSbuNpcr-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/202512221945.aSbuNpcr-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/platform/mpam/mpam_resctrl.c:25:1: sparse: sparse: symbol 'resctrl_mon_ctx_waiters' was not declared. Should it be static?
>> drivers/platform/mpam/mpam_resctrl.c:45:5: sparse: sparse: symbol '__mon_is_rmid_idx' was not declared. Should it be static?
drivers/platform/mpam/mpam_resctrl.c:46:6: sparse: sparse: symbol 'mon_is_rmid_idx' was not declared. Should it be static?
vim +/resctrl_mon_ctx_waiters +25 drivers/platform/mpam/mpam_resctrl.c
24
> 25 DECLARE_WAIT_QUEUE_HEAD(resctrl_mon_ctx_waiters);
26
27 /*
28 * The classes we've picked to map to resctrl resources.
29 * Class pointer may be NULL.
30 */
31 static struct mpam_resctrl_res mpam_resctrl_exports[RDT_NUM_RESOURCES];
32
33 static bool exposed_alloc_capable;
34 static bool exposed_mon_capable;
35 static struct mpam_class *mbm_local_class;
36 static struct mpam_class *mbm_total_class;
37
38 /*
39 * MPAM emulates CDP by setting different PARTID in the I/D fields of MPAM1_EL1.
40 * This applies globally to all traffic the CPU generates.
41 */
42 static bool cdp_enabled;
43
44 /* A dummy mon context to use when the monitors were allocated up front */
> 45 u32 __mon_is_rmid_idx = USE_RMID_IDX;
46 void *mon_is_rmid_idx = &__mon_is_rmid_idx;
47
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[PATCH OLK-6.6] PCI/IOV: Add PCI rescan-remove locking when enabling/disabling SR-IOV
by Ziming Du 22 Dec '25
by Ziming Du 22 Dec '25
22 Dec '25
From: Niklas Schnelle <schnelle(a)linux.ibm.com>
stable inclusion
from stable-v6.6.113
commit 36039348bca77828bf06eae41b8f76e38cd15847
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDATN0
CVE: CVE-2025-40219
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 05703271c3cdcc0f2a8cf6ebdc45892b8ca83520 upstream.
Before disabling SR-IOV via config space accesses to the parent PF,
sriov_disable() first removes the PCI devices representing the VFs.
Since commit 9d16947b7583 ("PCI: Add global pci_lock_rescan_remove()")
such removal operations are serialized against concurrent remove and
rescan using the pci_rescan_remove_lock. No such locking was ever added
in sriov_disable() however. In particular when commit 18f9e9d150fc
("PCI/IOV: Factor out sriov_add_vfs()") factored out the PCI device
removal into sriov_del_vfs() there was still no locking around the
pci_iov_remove_virtfn() calls.
On s390 the lack of serialization in sriov_disable() may cause double
remove and list corruption with the below (amended) trace being observed:
PSW: 0704c00180000000 0000000c914e4b38 (klist_put+56)
GPRS: 000003800313fb48 0000000000000000 0000000100000001 0000000000000001
00000000f9b520a8 0000000000000000 0000000000002fbd 00000000f4cc9480
0000000000000001 0000000000000000 0000000000000000 0000000180692828
00000000818e8000 000003800313fe2c 000003800313fb20 000003800313fad8
#0 [3800313fb20] device_del at c9158ad5c
#1 [3800313fb88] pci_remove_bus_device at c915105ba
#2 [3800313fbd0] pci_iov_remove_virtfn at c9152f198
#3 [3800313fc28] zpci_iov_remove_virtfn at c90fb67c0
#4 [3800313fc60] zpci_bus_remove_device at c90fb6104
#5 [3800313fca0] __zpci_event_availability at c90fb3dca
#6 [3800313fd08] chsc_process_sei_nt0 at c918fe4a2
#7 [3800313fd60] crw_collect_info at c91905822
#8 [3800313fe10] kthread at c90feb390
#9 [3800313fe68] __ret_from_fork at c90f6aa64
#10 [3800313fe98] ret_from_fork at c9194f3f2.
This is because in addition to sriov_disable() removing the VFs, the
platform also generates hot-unplug events for the VFs. This being the
reverse operation to the hotplug events generated by sriov_enable() and
handled via pdev->no_vf_scan. And while the event processing takes
pci_rescan_remove_lock and checks whether the struct pci_dev still exists,
the lack of synchronization makes this checking racy.
Other races may also be possible of course though given that this lack of
locking persisted so long observable races seem very rare. Even on s390 the
list corruption was only observed with certain devices since the platform
events are only triggered by config accesses after the removal, so as long
as the removal finished synchronously they would not race. Either way the
locking is missing so fix this by adding it to the sriov_del_vfs() helper.
Just like PCI rescan-remove, locking is also missing in sriov_add_vfs()
including for the error case where pci_stop_and_remove_bus_device() is
called without the PCI rescan-remove lock being held. Even in the non-error
case, adding new PCI devices and buses should be serialized via the PCI
rescan-remove lock. Add the necessary locking.
Fixes: 18f9e9d150fc ("PCI/IOV: Factor out sriov_add_vfs()")
Signed-off-by: Niklas Schnelle <schnelle(a)linux.ibm.com>
Signed-off-by: Bjorn Helgaas <bhelgaas(a)google.com>
Reviewed-by: Benjamin Block <bblock(a)linux.ibm.com>
Reviewed-by: Farhan Ali <alifm(a)linux.ibm.com>
Reviewed-by: Julian Ruess <julianr(a)linux.ibm.com>
Cc: stable(a)vger.kernel.org
Link: https://patch.msgid.link/20250826-pci_fix_sriov_disable-v1-1-2d0bc938f2a3@l…
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Ziming Du <duziming2(a)huawei.com>
---
drivers/pci/iov.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/drivers/pci/iov.c b/drivers/pci/iov.c
index 54ec841e3e18..2cb477fd8e3b 100644
--- a/drivers/pci/iov.c
+++ b/drivers/pci/iov.c
@@ -590,15 +590,18 @@ static int sriov_add_vfs(struct pci_dev *dev, u16 num_vfs)
if (dev->no_vf_scan)
return 0;
+ pci_lock_rescan_remove();
for (i = 0; i < num_vfs; i++) {
rc = pci_iov_add_virtfn(dev, i);
if (rc)
goto failed;
}
+ pci_unlock_rescan_remove();
return 0;
failed:
while (i--)
pci_iov_remove_virtfn(dev, i);
+ pci_unlock_rescan_remove();
return rc;
}
@@ -718,8 +721,10 @@ static void sriov_del_vfs(struct pci_dev *dev)
struct pci_sriov *iov = dev->sriov;
int i;
+ pci_lock_rescan_remove();
for (i = 0; i < iov->num_VFs; i++)
pci_iov_remove_virtfn(dev, i);
+ pci_unlock_rescan_remove();
}
static void sriov_disable(struct pci_dev *dev)
--
2.43.0
2
1
hulk inclusion
category: bugfix
bugzilla: https://atomgit.com/openeuler/kernel/issues/8282
--------------------------------
L3t is only work with specific cpus, now add checker during init
to make sure this is enabled with specific cpus.
Fixes: c40d971092ff ("hisi: l3t: Add L3 cache driver for hisi")
Signed-off-by: Wupeng Ma <mawupeng1(a)huawei.com>
---
arch/arm64/include/asm/cputype.h | 2 ++
drivers/soc/hisilicon/l3t.c | 8 ++++++++
2 files changed, 10 insertions(+)
diff --git a/arch/arm64/include/asm/cputype.h b/arch/arm64/include/asm/cputype.h
index b3b1977e9980..ca90d0e13ad6 100644
--- a/arch/arm64/include/asm/cputype.h
+++ b/arch/arm64/include/asm/cputype.h
@@ -113,6 +113,7 @@
#define HISI_CPU_PART_TSV110 0xD01
#define HISI_CPU_PART_TSV200 0xD02
#define HISI_CPU_PART_LINXICORE9100 0xD02
+#define HISI_CPU_PART_HIP10 0xD03
#define PHYTIUM_CPU_PART_1500A 0X660
#define PHYTIUM_CPU_PART_2000AHK 0X661
@@ -165,6 +166,7 @@
#define MIDR_FUJITSU_A64FX MIDR_CPU_MODEL(ARM_CPU_IMP_FUJITSU, FUJITSU_CPU_PART_A64FX)
#define MIDR_HISI_TSV110 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV110)
#define MIDR_HISI_TSV200 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV200)
+#define MIDR_HISI_HIP10 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_HIP10)
#define MIDR_HISI_LINXICORE9100 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_LINXICORE9100)
#define MIDR_FT_1500A MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_1500A)
#define MIDR_FT_2000AHK MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_2000AHK)
diff --git a/drivers/soc/hisilicon/l3t.c b/drivers/soc/hisilicon/l3t.c
index 35106e091098..69e65d659a35 100644
--- a/drivers/soc/hisilicon/l3t.c
+++ b/drivers/soc/hisilicon/l3t.c
@@ -264,6 +264,14 @@ static struct platform_driver hisi_l3t_driver = {
static int __init hisi_l3t_init(void)
{
+ static const struct midr_range l3t_support_list[] = {
+ MIDR_ALL_VERSIONS(MIDR_HISI_TSV200),
+ MIDR_ALL_VERSIONS(MIDR_HISI_HIP10),
+ {}
+ };
+ if (!is_midr_in_range_list(read_cpuid_id(), l3t_support_list))
+ return -ENODEV;
+
mutex_init(&l3t_mutex);
xa_init(&l3t_mapping);
--
2.43.0
2
1
[openeuler:OLK-6.6 3542/3542] arch/arm64/kvm/vgic/vgic-v4.c:260: warning: Function parameter or member 'vcpu' not described in 'kvm_vgic_get_vcpu_vpeid'
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 78feb450c1fbd0f2a1a542882ed62a0993c86c5a [3542/3542] KVM: arm64: GICv4.1: Add support for MBIGEN save/restore
config: arm64-randconfig-001-20251215 (https://download.01.org/0day-ci/archive/20251222/202512221812.bA9JN365-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 1335a05ab8bc8339ce24be3a9da89d8c3f4e0571)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512221812.bA9JN365-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/202512221812.bA9JN365-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/arm64/kvm/vgic/vgic-v4.c:260: warning: Function parameter or member 'vcpu' not described in 'kvm_vgic_get_vcpu_vpeid'
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for RESCTRL_FS
Depends on [n]: MISC_FILESYSTEMS [=n] && ARCH_HAS_CPU_RESCTRL [=y]
Selected by [y]:
- ARM64_MPAM [=y]
vim +260 arch/arm64/kvm/vgic/vgic-v4.c
253
254 /**
255 * kvm_vgic_get_vcpu_vpeid - Get the VCPU's vpeid
256 *
257 * The vtimer mbigen needs the vcpu vpeid info which will resident.
258 */
259 u16 kvm_vgic_get_vcpu_vpeid(struct kvm_vcpu *vcpu)
> 260 {
261 return vcpu->arch.vgic_cpu.vgic_v3.its_vpe.vpe_id;
262 }
263 #endif
264
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:openEuler-1.0-LTS 1944/1944] drivers/gpio/gpio-phytium-platform.c:111:2-3: Unneeded semicolon
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 4e9c55920995d70b3e88b60c69753df54b03fdf4
commit: 00711bad7e372a30c4975ba43811ffa666aff0e1 [1944/1944] gpio: add phytium gpio driver
config: arm64-randconfig-r052-20251217 (https://download.01.org/0day-ci/archive/20251222/202512221720.DJfxv97T-lkp@…)
compiler: aarch64-linux-gcc (GCC) 9.5.0
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/202512221720.DJfxv97T-lkp@intel.com/
cocci warnings: (new ones prefixed by >>)
>> drivers/gpio/gpio-phytium-platform.c:111:2-3: Unneeded semicolon
vim +111 drivers/gpio/gpio-phytium-platform.c
35
36 static int phytium_gpio_probe(struct platform_device *pdev)
37 {
38 struct device *dev = &pdev->dev;
39 struct resource *res;
40 struct phytium_gpio *gpio;
41 struct gpio_irq_chip *girq;
42 struct fwnode_handle *fwnode;
43 int err, irq_count;
44
45 gpio = devm_kzalloc(&pdev->dev, sizeof(*gpio), GFP_KERNEL);
46 if (!gpio)
47 return -ENOMEM;
48
49 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
50 gpio->regs = devm_ioremap_resource(&pdev->dev, res);
51 if (IS_ERR(gpio->regs))
52 return PTR_ERR(gpio->regs);
53
54 if (!device_get_child_node_count(dev))
55 return -ENODEV;
56
57 device_for_each_child_node(dev, fwnode) {
58 int idx;
59
60 if (fwnode_property_read_u32(fwnode, "reg", &idx) ||
61 idx >= MAX_NPORTS) {
62 dev_err(dev, "missing/invalid port index\n");
63 fwnode_handle_put(fwnode);
64 return -EINVAL;
65 }
66
67 if (fwnode_property_read_u32(fwnode, "nr-gpios",
68 &gpio->ngpio[idx])) {
69 dev_info(dev,
70 "failed to get number of gpios for Port%c\n",
71 idx ? 'B' : 'A');
72 gpio->ngpio[idx] = NGPIO_DEFAULT;
73 }
74 }
75
76 /* irq_chip support */
77 gpio->irq_chip.name = dev_name(dev);
78 gpio->irq_chip.irq_ack = phytium_gpio_irq_ack;
79 gpio->irq_chip.irq_mask = phytium_gpio_irq_mask;
80 gpio->irq_chip.irq_unmask = phytium_gpio_irq_unmask;
81 gpio->irq_chip.irq_set_type = phytium_gpio_irq_set_type;
82 gpio->irq_chip.irq_enable = phytium_gpio_irq_enable;
83 gpio->irq_chip.irq_disable = phytium_gpio_irq_disable;
84 #ifdef CONFIG_SMP
85 gpio->irq_chip.irq_set_affinity = phytium_gpio_irq_set_affinity;
86 #endif
87 raw_spin_lock_init(&gpio->lock);
88
89 gpio->gc.base = -1;
90 gpio->gc.get_direction = phytium_gpio_get_direction;
91 gpio->gc.direction_input = phytium_gpio_direction_input;
92 gpio->gc.direction_output = phytium_gpio_direction_output;
93 gpio->gc.get = phytium_gpio_get;
94 gpio->gc.set = phytium_gpio_set;
95 gpio->gc.ngpio = gpio->ngpio[0] + gpio->ngpio[1];
96 gpio->gc.label = dev_name(dev);
97 gpio->gc.parent = dev;
98 gpio->gc.owner = THIS_MODULE;
99
100 girq = &gpio->gc.irq;
101 girq->handler = handle_bad_irq;
102 girq->default_type = IRQ_TYPE_NONE;
103
104 for (irq_count = 0; irq_count < gpio->ngpio[0]; irq_count++) {
105 gpio->irq[irq_count] = -ENXIO;
106 gpio->irq[irq_count] = platform_get_irq(pdev, irq_count);
107 if (gpio->irq[irq_count] < 0) {
108 dev_warn(dev, "no irq is found.\n");
109 break;
110 }
> 111 };
112
113 girq->num_parents = irq_count;
114 girq->parents = gpio->irq;
115 girq->parent_handler = phytium_gpio_irq_handler;
116
117 girq->chip = &gpio->irq_chip;
118
119 err = devm_gpiochip_add_data(dev, &gpio->gc, gpio);
120 if (err)
121 return err;
122
123 platform_set_drvdata(pdev, gpio);
124 dev_info(dev, "Phytium GPIO controller @%pa registered\n",
125 &res->start);
126
127 return 0;
128 }
129
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
Currently, x86, Riscv, Loongarch use the Generic Entry which makes
maintainers' work easier and codes more elegant. arm64 has already
successfully switched to the Generic IRQ Entry in commit
b3cf07851b6c ("arm64: entry: Switch to generic IRQ entry"), it is
time to completely convert arm64 to Generic Entry.
The goal is to bring arm64 in line with other architectures that already
use the generic entry infrastructure, reducing duplicated code and
making it easier to share future changes in entry/exit paths, such as
"Syscall User Dispatch".
This patch set is rebased on v6.19-rc1. And the performance was measured
on Kunpeng 920 using "perf bench basic syscall" with "arm64.nopauth
selinux=0 audit=1".
After switch to Generic Entry, the performance are below:
| Metric | W/O Generic Framework | With Generic Framework | Change |
| ---------- | --------------------- | ---------------------- | ------ |
| Total time | 2.487 [sec] | 2.393[sec] | ↓3.8% |
| usecs/op | 0.248780 | 0.239361 | ↓3.8% |
| ops/sec | 4,019,620 | 4,177,789 | ↑3.9% |
Compared to earlier with arch specific handling, the performance improved
by approximately 3.9%.
On the basis of optimizing syscall_get_arguments()[1], el0_svc_common()
and syscall_exit_work(), the performance are below:
| Metric | W/O Generic Entry | With Generic Entry opt| Change |
| ---------- | ----------------- | ------------------ | ------ |
| Total time | 2.487 [sec] | 2.264 [sec] | ↓9.0% |
| usecs/op | 0.248780 | 0.226481 | ↓9.0% |
| ops/sec | 4,019,620 | 4,415,383 | ↑9.8% |
Therefore, after the optimization, ARM64 System Call performance improved
by approximately 9%.
It was tested ok with following test cases on kunpeng920 and QEMU
virt platform:
- Perf tests.
- Different `dynamic preempt` mode switch.
- Pseudo NMI tests.
- Stress-ng CPU stress test.
- Hackbench stress test.
- MTE test case in Documentation/arch/arm64/memory-tagging-extension.rst
and all test cases in tools/testing/selftests/arm64/mte/*.
- "sud" selftest testcase.
- get_set_sud, get_syscall_info, set_syscall_info, peeksiginfo
in tools/testing/selftests/ptrace.
- breakpoint_test_arm64 in selftests/breakpoints.
- syscall-abi and ptrace in tools/testing/selftests/arm64/abi
- fp-ptrace, sve-ptrace, za-ptrace in selftests/arm64/fp.
- vdso_test_getrandom in tools/testing/selftests/vDSO
- Strace tests.
The test QEMU configuration is as follows:
qemu-system-aarch64 \
-M virt,gic-version=3,virtualization=on,mte=on \
-cpu max,pauth-impdef=on \
-kernel Image \
-smp 8,sockets=1,cores=4,threads=2 \
-m 512m \
-nographic \
-no-reboot \
-device virtio-rng-pci \
-append "root=/dev/vda rw console=ttyAMA0 kgdboc=ttyAMA0,115200 \
earlycon preempt=voluntary irqchip.gicv3_pseudo_nmi=1" \
-drive if=none,file=images/rootfs.ext4,format=raw,id=hd0 \
-device virtio-blk-device,drive=hd0 \
[1]: https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm/+/89bf683c…
Changes in v10:
- Rebased on v6.19-rc1, rename syscall_exit_to_user_mode_prepare() to
syscall_exit_to_user_mode_work_prepare() to avoid conflict.
- Also inline syscall_trace_enter().
- Support aarch64 for sud_benchmark.
- Update and correct the commit message.
- Add Reviewed-by.
- Link to v9: https://lore.kernel.org/all/20251204082123.2792067-1-ruanjinjie@huawei.com/
Changes in v9:
- Move "Return early for ptrace_report_syscall_entry() error" patch ahead
to make it not introduce a regression.
- Not check _TIF_SECCOMP/SYSCALL_EMU for syscall_exit_work() in
a separate patch.
- Do not report_syscall_exit() for PTRACE_SYSEMU_SINGLESTEP in a separate
patch.
- Add two performance patch to improve the arm64 performance.
- Add Reviewed-by.
- Link to v8: https://lore.kernel.org/all/20251126071446.3234218-1-ruanjinjie@huawei.com/
Changes in v8:
- Rename "report_syscall_enter()" to "report_syscall_entry()".
- Add ptrace_save_reg() to avoid duplication.
- Remove unused _TIF_WORK_MASK in a standalone patch.
- Align syscall_trace_enter() return value with the generic version.
- Use "scno" instead of regs->syscallno in el0_svc_common().
- Move rseq_syscall() ahead in a standalone patch to clarify it clearly.
- Rename "syscall_trace_exit()" to "syscall_exit_work()".
- Keep the goto in el0_svc_common().
- No argument was passed to __secure_computing() and check -1 not -1L.
- Remove "Add has_syscall_work() helper" patch.
- Move "Add syscall_exit_to_user_mode_prepare() helper" patch later.
- Add miss header for asm/entry-common.h.
- Update the implementation of arch_syscall_is_vdso_sigreturn().
- Add "ARCH_SYSCALL_WORK_EXIT" to be defined as "SECCOMP | SYSCALL_EMU"
to keep the behaviour unchanged.
- Add more testcases test.
- Add Reviewed-by.
- Update the commit message.
- Link to v7: https://lore.kernel.org/all/20251117133048.53182-1-ruanjinjie@huawei.com/
Chanegs in v7:
- Support "Syscall User Dispatch" by implementing
arch_syscall_is_vdso_sigreturn() as kemal suggested.
- Add aarch64 support for "sud" selftest testcase, which tested ok with
the patch series.
- Fix the kernel test robot warning for arch_ptrace_report_syscall_entry()
and arch_ptrace_report_syscall_exit() in asm/entry-common.h.
- Add perf syscall performance test.
- Link to v6: https://lore.kernel.org/all/20250916082611.2972008-1-ruanjinjie@huawei.com/
Changes in v6:
- Rebased on v6.17-rc5-next as arm64 generic irq entry has merged.
- Update the commit message.
- Link to v5: https://lore.kernel.org/all/20241206101744.4161990-1-ruanjinjie@huawei.com/
Changes in v5:
- Not change arm32 and keep inerrupts_enabled() macro for gicv3 driver.
- Move irqentry_state definition into arch/arm64/kernel/entry-common.c.
- Avoid removing the __enter_from_*() and __exit_to_*() wrappers.
- Update "irqentry_state_t ret/irq_state" to "state"
to keep it consistently.
- Use generic irq entry header for PREEMPT_DYNAMIC after split
the generic entry.
- Also refactor the ARM64 syscall code.
- Introduce arch_ptrace_report_syscall_entry/exit(), instead of
arch_pre/post_report_syscall_entry/exit() to simplify code.
- Make the syscall patches clear separation.
- Update the commit message.
- Link to v4: https://lore.kernel.org/all/20241025100700.3714552-1-ruanjinjie@huawei.com/
Changes in v4:
- Rework/cleanup split into a few patches as Mark suggested.
- Replace interrupts_enabled() macro with regs_irqs_disabled(), instead
of left it here.
- Remove rcu and lockdep state in pt_regs by using temporary
irqentry_state_t as Mark suggested.
- Remove some unnecessary intermediate functions to make it clear.
- Rework preempt irq and PREEMPT_DYNAMIC code
to make the switch more clear.
- arch_prepare_*_entry/exit() -> arch_pre_*_entry/exit().
- Expand the arch functions comment.
- Make arch functions closer to its caller.
- Declare saved_reg in for block.
- Remove arch_exit_to_kernel_mode_prepare(), arch_enter_from_kernel_mode().
- Adjust "Add few arch functions to use generic entry" patch to be
the penultimate.
- Update the commit message.
- Add suggested-by.
- Link to v3: https://lore.kernel.org/all/20240629085601.470241-1-ruanjinjie@huawei.com/
Changes in v3:
- Test the MTE test cases.
- Handle forget_syscall() in arch_post_report_syscall_entry()
- Make the arch funcs not use __weak as Thomas suggested, so move
the arch funcs to entry-common.h, and make arch_forget_syscall() folded
in arch_post_report_syscall_entry() as suggested.
- Move report_single_step() to thread_info.h for arm64
- Change __always_inline() to inline, add inline for the other arch funcs.
- Remove unused signal.h for entry-common.h.
- Add Suggested-by.
- Update the commit message.
Changes in v2:
- Add tested-by.
- Fix a bug that not call arch_post_report_syscall_entry() in
syscall_trace_enter() if ptrace_report_syscall_entry() return not zero.
- Refactor report_syscall().
- Add comment for arch_prepare_report_syscall_exit().
- Adjust entry-common.h header file inclusion to alphabetical order.
- Update the commit message.
Jinjie Ruan (15):
arm64: Remove unused _TIF_WORK_MASK
arm64/ptrace: Split report_syscall()
arm64/ptrace: Return early for ptrace_report_syscall_entry() error
arm64/ptrace: Refactor syscall_trace_enter/exit()
arm64: ptrace: Move rseq_syscall() before audit_syscall_exit()
arm64: syscall: Rework el0_svc_common()
arm64/ptrace: Not check _TIF_SECCOMP/SYSCALL_EMU for
syscall_exit_work()
arm64/ptrace: Do not report_syscall_exit() for
PTRACE_SYSEMU_SINGLESTEP
arm64/ptrace: Expand secure_computing() in place
arm64/ptrace: Use syscall_get_arguments() helper
entry: Split syscall_exit_to_user_mode_work() for arch reuse
entry: Add arch_ptrace_report_syscall_entry/exit()
arm64: entry: Convert to generic entry
arm64: Inline el0_svc_common()
entry: Inline syscall_exit_work() and syscall_trace_enter()
kemal (1):
selftests: sud_test: Support aarch64
arch/arm64/Kconfig | 2 +-
arch/arm64/include/asm/entry-common.h | 76 ++++++++
arch/arm64/include/asm/syscall.h | 19 +-
arch/arm64/include/asm/thread_info.h | 22 +--
arch/arm64/kernel/debug-monitors.c | 7 +
arch/arm64/kernel/ptrace.c | 94 ----------
arch/arm64/kernel/signal.c | 2 +-
arch/arm64/kernel/syscall.c | 29 +--
include/linux/entry-common.h | 176 ++++++++++++++++--
kernel/entry/common.h | 7 -
kernel/entry/syscall-common.c | 96 +---------
kernel/entry/syscall_user_dispatch.c | 4 +-
.../syscall_user_dispatch/sud_benchmark.c | 2 +-
.../syscall_user_dispatch/sud_test.c | 4 +
14 files changed, 282 insertions(+), 258 deletions(-)
delete mode 100644 kernel/entry/common.h
--
2.34.1
1
16
From: Tong Tiangen <tongtiangen(a)huawei.com>
hulk inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IDBGTZ
-------------------------------
Large memory migration imposes significant overhead on the CPU. This patch
introduces enhancements to the page migration by offloading the copy to
UDMA hardware which based on the DMA engine framework, and a new migration
mode has been introduced, If DMA migration fails, it will fall back to CPU
migration.
DMA migration supports both asynchronous and synchronous modes for
subsequent debugging purposes.
Signed-off-by: Tong Tiangen <tongtiangen(a)huawei.com>
Signed-off-by: Zeng Heng <zengheng4(a)huawei.com>
---
arch/arm64/configs/openeuler_defconfig | 1 +
include/linux/migrate_mode.h | 7 ++
include/linux/mm.h | 8 ++
mm/Kconfig | 12 +++
mm/Makefile | 1 +
mm/migrate.c | 9 ++
mm/migrate_dma.c | 143 +++++++++++++++++++++++++
7 files changed, 181 insertions(+)
create mode 100644 mm/migrate_dma.c
diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig
index c25ac4ff6c2f..08af29cf2776 100644
--- a/arch/arm64/configs/openeuler_defconfig
+++ b/arch/arm64/configs/openeuler_defconfig
@@ -1186,6 +1186,7 @@ CONFIG_COMPACTION=y
CONFIG_COMPACT_UNEVICTABLE_DEFAULT=1
CONFIG_PAGE_REPORTING=y
CONFIG_MIGRATION=y
+CONFIG_MIGRATE_PAGES_DMA_OFFLOADING=y
CONFIG_DEVICE_MIGRATION=y
CONFIG_ARCH_ENABLE_HUGEPAGE_MIGRATION=y
CONFIG_ARCH_ENABLE_THP_MIGRATION=y
diff --git a/include/linux/migrate_mode.h b/include/linux/migrate_mode.h
index 0f577f932bb4..5283e62b7d1b 100644
--- a/include/linux/migrate_mode.h
+++ b/include/linux/migrate_mode.h
@@ -19,6 +19,13 @@ enum migrate_mode {
MIGRATE_SYNC_NO_COPY,
};
+/*
+ * Actually the macro MIGRATE_ASYNC_DMA_OFFLOADING definition should be
+ * placed within enum migrate_mode, but for KABI compatibility, it is
+ * defined here alone.
+ */
+#define MIGRATE_ASYNC_DMA_OFFLOADING (10)
+
enum migrate_reason {
MR_COMPACTION,
MR_MEMORY_FAILURE,
diff --git a/include/linux/mm.h b/include/linux/mm.h
index c0040a2014c4..036822cb1b9d 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -1330,6 +1330,14 @@ void put_pages_list(struct list_head *pages);
void split_page(struct page *page, unsigned int order);
void folio_copy(struct folio *dst, struct folio *src);
int folio_mc_copy(struct folio *dst, struct folio *src);
+#ifdef CONFIG_MIGRATE_PAGES_DMA_OFFLOADING
+int folio_dma_copy(struct folio *dst, struct folio *src);
+#else
+static inline int folio_dma_copy(struct folio *dst, struct folio *src)
+{
+ return -ENODEV;
+}
+#endif
unsigned long nr_free_buffer_pages(void);
diff --git a/mm/Kconfig b/mm/Kconfig
index 4eb0642b71e5..12438e8dff88 100644
--- a/mm/Kconfig
+++ b/mm/Kconfig
@@ -696,6 +696,18 @@ config MIGRATION
pages as migration can relocate pages to satisfy a huge page
allocation instead of reclaiming.
+config MIGRATE_PAGES_DMA_OFFLOADING
+ bool "Support to use DMA channels for page migration"
+ depends on DMA_ENGINE
+ depends on MIGRATION
+ default y
+ help
+ This config enhances page migration by introducing a new mode
+ that offloads copy operations to UB-DMA hardware based on the
+ DMA engine framework, with automatic fallback to CPU migration
+ if DMA migration fails. DMA migration supports both asynchronous
+ and synchronous modes to facilitate debugging.
+
config DEVICE_MIGRATION
def_bool MIGRATION && ZONE_DEVICE
diff --git a/mm/Makefile b/mm/Makefile
index e45cdeda47b7..dd81f8c33e03 100644
--- a/mm/Makefile
+++ b/mm/Makefile
@@ -92,6 +92,7 @@ obj-$(CONFIG_FAILSLAB) += failslab.o
obj-$(CONFIG_FAIL_PAGE_ALLOC) += fail_page_alloc.o
obj-$(CONFIG_MEMTEST) += memtest.o
obj-$(CONFIG_MIGRATION) += migrate.o
+obj-$(CONFIG_MIGRATE_PAGES_DMA_OFFLOADING) += migrate_dma.o
obj-$(CONFIG_NUMA) += memory-tiers.o
obj-$(CONFIG_DEVICE_MIGRATION) += migrate_device.o
obj-$(CONFIG_TRANSPARENT_HUGEPAGE) += huge_memory.o khugepaged.o
diff --git a/mm/migrate.c b/mm/migrate.c
index 148e55fab012..216f45c9570f 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -583,6 +583,15 @@ static int folio_migrate_mc_copy(struct folio *dst, struct folio *src,
if (mode == MIGRATE_SYNC_NO_COPY)
return 0;
+ if (mode == MIGRATE_ASYNC_DMA_OFFLOADING) {
+ if (folio_test_hugetlb(src) ||
+ folio_test_pmd_mappable(src)) {
+ /* if dma offloading fail, fallback */
+ if (!folio_dma_copy(dst, src))
+ return 0;
+ }
+ }
+
return folio_mc_copy(dst, src);
}
diff --git a/mm/migrate_dma.c b/mm/migrate_dma.c
new file mode 100644
index 000000000000..796cd9a5477e
--- /dev/null
+++ b/mm/migrate_dma.c
@@ -0,0 +1,143 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Support to use DMA channels for page migration.
+ *
+ * Copyright (C) 2025 Huawei Limited
+ */
+
+#define pr_fmt(fmt) "migrate_dma: " fmt
+
+#include <linux/dmaengine.h>
+#include <linux/dma-mapping.h>
+
+/* DMA channel track its transfers done */
+struct dma_channel_work {
+ struct dma_chan *chan;
+ enum dma_status status;
+ struct completion done;
+};
+
+static void folios_dma_copy_completion_callback(void *param,
+ const struct dmaengine_result *result)
+{
+ struct dma_channel_work *chan_work = param;
+
+ if (result) {
+ enum dmaengine_tx_result dma_res = result->result;
+
+ if (dma_res == DMA_TRANS_NOERROR)
+ chan_work->status = DMA_COMPLETE;
+ else
+ chan_work->status = DMA_ERROR;
+ }
+
+ complete(&chan_work->done);
+}
+
+static int process_folio_dma_transfer(struct dma_channel_work *chan_work,
+ struct folio *src, struct folio *dst)
+{
+ struct dma_chan *chan = chan_work->chan;
+ struct device *dev = dmaengine_get_dma_device(chan);
+ enum dma_ctrl_flags flags = DMA_CTRL_ACK | DMA_PREP_INTERRUPT;
+ struct dma_async_tx_descriptor *tx;
+ dma_addr_t src_handle, dst_handle;
+ size_t size = folio_size(src);
+ int ret;
+
+ src_handle = dma_map_page(dev, &src->page, 0, size, DMA_TO_DEVICE);
+ if (dma_mapping_error(dev, src_handle)) {
+ dev_err(dev, "map dma src page error.\n");
+ return -ENOMEM;
+ }
+
+ dst_handle = dma_map_page(dev, &dst->page, 0, size, DMA_FROM_DEVICE);
+ if (dma_mapping_error(dev, dst_handle)) {
+ dev_err(dev, "map dma dst page error.\n");
+ ret = -ENOMEM;
+ goto out_unmap;
+ }
+
+ tx = dmaengine_prep_dma_memcpy(chan, dst_handle, src_handle,
+ size, flags);
+ if (unlikely(!tx)) {
+ dev_err(dev, "prep dma memcpy error.\n");
+ ret = -EBUSY;
+ goto out_unmap_all;
+ }
+
+ tx->callback_result = folios_dma_copy_completion_callback;
+ tx->callback_param = chan_work;
+ init_completion(&chan_work->done);
+ chan_work->status = DMA_ERROR;
+
+ if (dma_submit_error(dmaengine_submit(tx))) {
+ dev_err(dev, "dma submit error.\n");
+ ret = -EINVAL;
+ goto out_unmap_all;
+ }
+
+ dma_async_issue_pending(chan);
+ if (!wait_for_completion_timeout(&chan_work->done,
+ msecs_to_jiffies(1000))) {
+ ret = -ETIMEDOUT;
+ goto out_unmap_all;
+ }
+
+ ret = (chan_work->status == DMA_COMPLETE) ? 0 : -EPROTO;
+
+out_unmap_all:
+ dma_unmap_page(dev, dst_handle, size, DMA_FROM_DEVICE);
+out_unmap:
+ dma_unmap_page(dev, src_handle, size, DMA_TO_DEVICE);
+
+ return ret;
+}
+
+static bool folio_dma_chan_filter(struct dma_chan *chan, void *param)
+{
+ return !strcmp(dev_name(chan->device->dev), "ub_dma_device");
+}
+
+int folio_dma_copy(struct folio *dst, struct folio *src)
+{
+ struct dma_channel_work *chan_work;
+ struct dma_slave_config dma_cfg;
+ struct dma_chan *chan;
+ dma_cap_mask_t mask;
+ int ret = -ENODEV;
+
+ dma_cap_zero(mask);
+ dma_cap_set(DMA_MEMCPY, mask);
+ chan = dma_request_channel(mask, folio_dma_chan_filter, NULL);
+ if (!chan) {
+ pr_err("failed to allocate dma channel.\n");
+ return ret;
+ }
+
+ memset(&dma_cfg, 0, sizeof(dma_cfg));
+ dma_cfg.direction = DMA_MEM_TO_MEM;
+ ret = dmaengine_slave_config(chan, &dma_cfg);
+ if (ret) {
+ pr_err("failed to config dma channel.\n");
+ goto out_release;
+ }
+
+ chan_work = kmalloc(sizeof(*chan_work), GFP_KERNEL);
+ if (unlikely(!chan_work)) {
+ pr_err("failed to allocate memory for chan work.\n");
+ goto out_release;
+ }
+
+ chan_work->chan = chan;
+ ret = process_folio_dma_transfer(chan_work, src, dst);
+ if (unlikely(ret))
+ pr_err("failed to process folio dma transfer.\n");
+
+ kfree(chan_work);
+out_release:
+ dma_release_channel(chan);
+
+ return ret;
+}
+EXPORT_SYMBOL(folio_dma_copy);
--
2.25.1
2
1
[openeuler:OLK-5.10 3415/3415] drivers/mfd/atmel-flexcom.c:108:32: warning: unused variable 'atmel_flexcom_pm_ops'
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: 1308eef0cd1cb33d5a64a3540b7e73873d9be0f3 [3415/3415] mfd: atmel-flexcom: Use .resume_noirq
config: x86_64-randconfig-072-20251215 (https://download.01.org/0day-ci/archive/20251222/202512221707.MaznwzGq-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 1335a05ab8bc8339ce24be3a9da89d8c3f4e0571)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512221707.MaznwzGq-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/202512221707.MaznwzGq-lkp@intel.com/
All warnings (new ones prefixed by >>):
In file included from <built-in>:2:
In file included from include/linux/compiler_types.h:69:
include/linux/compiler-clang.h:34:9: warning: '__SANITIZE_ADDRESS__' macro redefined [-Wmacro-redefined]
34 | #define __SANITIZE_ADDRESS__
| ^
<built-in>:352:9: note: previous definition is here
352 | #define __SANITIZE_ADDRESS__ 1
| ^
>> drivers/mfd/atmel-flexcom.c:108:32: warning: unused variable 'atmel_flexcom_pm_ops' [-Wunused-const-variable]
108 | static const struct dev_pm_ops atmel_flexcom_pm_ops = {
| ^~~~~~~~~~~~~~~~~~~~
2 warnings generated.
vim +/atmel_flexcom_pm_ops +108 drivers/mfd/atmel-flexcom.c
107
> 108 static const struct dev_pm_ops atmel_flexcom_pm_ops = {
109 .resume_noirq = atmel_flexcom_resume_noirq,
110 };
111
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-6.6 3542/3542] drivers/irqchip/irq-mbigen.c:127: warning: Function parameter or member 'vtimer_mbigen_chip' not described in 'mbigen_device'
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 3ce0ad7d0b4cb6538fe25fb20ca838c06e3cc516 [3542/3542] mbigen: vtimer mbigen driver support
config: arm64-randconfig-001-20251215 (https://download.01.org/0day-ci/archive/20251222/202512221648.01it8GuK-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project 1335a05ab8bc8339ce24be3a9da89d8c3f4e0571)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512221648.01it8GuK-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/202512221648.01it8GuK-lkp@intel.com/
All warnings (new ones prefixed by >>):
drivers/irqchip/irq-mbigen.c:77: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* MBIX config register
>> drivers/irqchip/irq-mbigen.c:127: warning: Function parameter or member 'vtimer_mbigen_chip' not described in 'mbigen_device'
>> drivers/irqchip/irq-mbigen.c:136: warning: expecting prototype for Due to the existence of hyper(). Prototype was for GICR_LENGTH() instead
Kconfig warnings: (for reference only)
WARNING: unmet direct dependencies detected for RESCTRL_FS
Depends on [n]: MISC_FILESYSTEMS [=n] && ARCH_HAS_CPU_RESCTRL [=y]
Selected by [y]:
- ARM64_MPAM [=y]
vim +127 drivers/irqchip/irq-mbigen.c
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 114
717c3dbc118ecbb Ma Jun 2015-12-17 115 /**
717c3dbc118ecbb Ma Jun 2015-12-17 116 * struct mbigen_device - holds the information of mbigen device.
717c3dbc118ecbb Ma Jun 2015-12-17 117 *
717c3dbc118ecbb Ma Jun 2015-12-17 118 * @pdev: pointer to the platform device structure of mbigen chip.
717c3dbc118ecbb Ma Jun 2015-12-17 119 * @base: mapped address of this mbigen chip.
717c3dbc118ecbb Ma Jun 2015-12-17 120 */
717c3dbc118ecbb Ma Jun 2015-12-17 121 struct mbigen_device {
717c3dbc118ecbb Ma Jun 2015-12-17 122 struct platform_device *pdev;
717c3dbc118ecbb Ma Jun 2015-12-17 123 void __iomem *base;
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 124 #ifdef CONFIG_VIRT_VTIMER_IRQ_BYPASS
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 125 struct vtimer_mbigen_device *vtimer_mbigen_chip;
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 126 #endif
717c3dbc118ecbb Ma Jun 2015-12-17 @127 };
717c3dbc118ecbb Ma Jun 2015-12-17 128
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 129 #ifdef CONFIG_VIRT_VTIMER_IRQ_BYPASS
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 130 static LIST_HEAD(vtimer_mgn_list);
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 131
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 132 /**
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 133 * Due to the existence of hyper-threading technology, We need to get the
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 134 * absolute offset of a cpu relative to the base cpu.
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 135 */
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 @136 #define GICR_LENGTH 0x40000
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 137 static inline int get_abs_offset(int cpu, int cpu_base)
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 138 {
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 139 return ((get_gicr_paddr(cpu) - get_gicr_paddr(cpu_base)) / GICR_LENGTH);
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 140 }
3ce0ad7d0b4cb65 Kunkun Jiang 2024-01-11 141
:::::: The code at line 127 was first introduced by commit
:::::: 717c3dbc118ecbbd5dab06c7e02dac68d3f62e1d irqchip/mgigen: Add platform device driver for mbigen device
:::::: TO: Ma Jun <majun258(a)huawei.com>
:::::: CC: Marc Zyngier <marc.zyngier(a)arm.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
hulk inclusion
category: feature
bugzilla: NA
CVE: NA
--------------------------------------------------------
The cache of dm-thin is common used for first level btree and the
second level btree, however the first level btree has less dm-buffer
than the second level btree, which might cause extra look up steps for
the first level btree when accessing the cache of the dm pool. Thus,
add support for spliting the first level btree and the second level
btree' cache, which might speed up the look up process of the first
level btree routine.
Signed-off-by: Zhang Zekun <zhangzekun11(a)huawei.com>
---
drivers/md/dm-bufio.c | 72 +++++++++++++------
drivers/md/dm-thin-metadata.c | 4 ++
drivers/md/dm.h | 18 ++++-
drivers/md/persistent-data/dm-block-manager.c | 11 +++
drivers/md/persistent-data/dm-block-manager.h | 2 +
include/linux/dm-bufio.h | 4 ++
6 files changed, 87 insertions(+), 24 deletions(-)
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 8ce77aec0..b83b8f5fe 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -254,9 +254,9 @@ enum evict_result {
ER_STOP, /* stop looking for something to evict */
};
-typedef enum evict_result (*le_predicate)(struct lru_entry *le, void *context);
+typedef enum evict_result (*le_predicate)(struct lru_entry *le, void *context, void *bc);
-static struct lru_entry *lru_evict(struct lru *lru, le_predicate pred, void *context, bool no_sleep)
+static struct lru_entry *lru_evict(struct lru *lru, le_predicate pred, void *context, bool no_sleep, void *bc)
{
unsigned long tested = 0;
struct list_head *h = lru->cursor;
@@ -276,7 +276,7 @@ static struct lru_entry *lru_evict(struct lru *lru, le_predicate pred, void *con
atomic_set(&le->referenced, 0);
} else {
tested++;
- switch (pred(le, context)) {
+ switch (pred(le, context, bc)) {
case ER_EVICT:
/*
* Adjust the cursor, so we start the next
@@ -362,6 +362,7 @@ struct dm_buffer {
unsigned int stack_len;
unsigned long stack_entries[MAX_STACK];
#endif
+ bool special;
};
/*--------------------------------------------------------------*/
@@ -399,12 +400,18 @@ struct dm_buffer_cache {
* on the locks.
*/
unsigned int num_locks;
+ unsigned long special;
bool no_sleep;
struct buffer_tree trees[];
};
static DEFINE_STATIC_KEY_FALSE(no_sleep_enabled);
+static inline unsigned int cache_index_special(sector_t block, unsigned int num_locks, unsigned long special)
+{
+ return dm_hash_locks_index_special(block, num_locks, special);
+}
+
static inline unsigned int cache_index(sector_t block, unsigned int num_locks)
{
return dm_hash_locks_index(block, num_locks);
@@ -413,33 +420,33 @@ static inline unsigned int cache_index(sector_t block, unsigned int num_locks)
static inline void cache_read_lock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- read_lock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ read_lock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- down_read(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ down_read(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
static inline void cache_read_unlock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- read_unlock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ read_unlock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- up_read(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ up_read(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
static inline void cache_write_lock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- write_lock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ write_lock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- down_write(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ down_write(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
static inline void cache_write_unlock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- write_unlock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ write_unlock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- up_write(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ up_write(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
/*
@@ -506,9 +513,9 @@ static void lh_exit(struct lock_history *lh)
* Named 'next' because there is no corresponding
* 'up/unlock' call since it's done automatically.
*/
-static void lh_next(struct lock_history *lh, sector_t b)
+static void lh_next(struct lock_history *lh, sector_t b, unsigned long special)
{
- unsigned int index = cache_index(b, lh->no_previous); /* no_previous is num_locks */
+ unsigned int index = cache_index_special(b, lh->no_previous, special); /* no_previous is num_locks */
if (lh->previous != lh->no_previous) {
if (lh->previous != index) {
@@ -619,7 +626,7 @@ static struct dm_buffer *cache_get(struct dm_buffer_cache *bc, sector_t block)
struct dm_buffer *b;
cache_read_lock(bc, block);
- b = __cache_get(&bc->trees[cache_index(block, bc->num_locks)].root, block);
+ b = __cache_get(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].root, block);
if (b) {
lru_reference(&b->lru);
__cache_inc_buffer(b);
@@ -666,12 +673,13 @@ struct evict_wrapper {
* Wraps the buffer predicate turning it into an lru predicate. Adds
* extra test for hold_count.
*/
-static enum evict_result __evict_pred(struct lru_entry *le, void *context)
+static enum evict_result __evict_pred(struct lru_entry *le, void *context, void *bc)
{
struct evict_wrapper *w = context;
struct dm_buffer *b = le_to_buffer(le);
+ struct dm_buffer_cache *bcc = (struct dm_buffer_cache *)bc;
- lh_next(w->lh, b->block);
+ lh_next(w->lh, b->block, b->special ? b->block : bcc->special);
if (atomic_read(&b->hold_count))
return ER_DONT_EVICT;
@@ -687,13 +695,13 @@ static struct dm_buffer *__cache_evict(struct dm_buffer_cache *bc, int list_mode
struct lru_entry *le;
struct dm_buffer *b;
- le = lru_evict(&bc->lru[list_mode], __evict_pred, &w, bc->no_sleep);
+ le = lru_evict(&bc->lru[list_mode], __evict_pred, &w, bc->no_sleep, (void *) bc);
if (!le)
return NULL;
b = le_to_buffer(le);
/* __evict_pred will have locked the appropriate tree. */
- rb_erase(&b->node, &bc->trees[cache_index(b->block, bc->num_locks)].root);
+ rb_erase(&b->node, &bc->trees[cache_index_special(b->block, bc->num_locks, b->special ? b->block : bc->special)].root);
return b;
}
@@ -741,7 +749,7 @@ static void __cache_mark_many(struct dm_buffer_cache *bc, int old_mode, int new_
struct evict_wrapper w = {.lh = lh, .pred = pred, .context = context};
while (true) {
- le = lru_evict(&bc->lru[old_mode], __evict_pred, &w, bc->no_sleep);
+ le = lru_evict(&bc->lru[old_mode], __evict_pred, &w, bc->no_sleep, (void *)bc);
if (!le)
break;
@@ -792,7 +800,7 @@ static void __cache_iterate(struct dm_buffer_cache *bc, int list_mode,
do {
struct dm_buffer *b = le_to_buffer(le);
- lh_next(lh, b->block);
+ lh_next(lh, b->block, bc->special);
switch (fn(b, context)) {
case IT_NEXT:
@@ -858,8 +866,8 @@ static bool cache_insert(struct dm_buffer_cache *bc, struct dm_buffer *b)
return false;
cache_write_lock(bc, b->block);
- BUG_ON(atomic_read(&b->hold_count) != 1);
- r = __cache_insert(&bc->trees[cache_index(b->block, bc->num_locks)].root, b);
+ //BUG_ON(atomic_read(&b->hold_count) != 1);
+ r = __cache_insert(&bc->trees[cache_index_special(b->block, bc->num_locks, bc->special)].root, b);
if (r)
lru_insert(&bc->lru[b->list_mode], &b->lru);
cache_write_unlock(bc, b->block);
@@ -885,7 +893,7 @@ static bool cache_remove(struct dm_buffer_cache *bc, struct dm_buffer *b)
r = false;
} else {
r = true;
- rb_erase(&b->node, &bc->trees[cache_index(b->block, bc->num_locks)].root);
+ rb_erase(&b->node, &bc->trees[cache_index_special(b->block, bc->num_locks, bc->special)].root);
lru_remove(&bc->lru[b->list_mode], &b->lru);
}
@@ -1019,6 +1027,12 @@ struct dm_bufio_client {
struct dm_buffer_cache cache; /* must be last member */
};
+void dm_setup_buffer_cache(struct dm_bufio_client *bc, unsigned long block)
+{
+ bc->cache.special = block;
+}
+EXPORT_SYMBOL_GPL(dm_setup_buffer_cache);
+
/*----------------------------------------------------------------*/
#define dm_bufio_in_request() (!!current->bio_list)
@@ -1792,6 +1806,7 @@ static struct dm_buffer *__bufio_new(struct dm_bufio_client *c, sector_t block,
b->read_error = 0;
b->write_error = 0;
b->list_mode = LIST_CLEAN;
+ b->special = (block == c->cache.special);
if (nf == NF_FRESH)
b->state = 0;
@@ -2642,6 +2657,17 @@ void dm_bufio_set_sector_offset(struct dm_bufio_client *c, sector_t start)
}
EXPORT_SYMBOL_GPL(dm_bufio_set_sector_offset);
+void dm_move_cache(struct dm_bufio_client *bc, unsigned long block)
+{
+ struct dm_buffer *b;
+
+ b = cache_get(&bc->cache, block);
+ cache_remove(&bc->cache, b);
+ bc->cache.special = block;
+ cache_insert(&bc->cache, b);
+}
+EXPORT_SYMBOL_GPL(dm_move_cache);
+
/*--------------------------------------------------------------*/
static unsigned int get_max_age_hz(void)
diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
index 6022189c1..f485504d4 100644
--- a/drivers/md/dm-thin-metadata.c
+++ b/drivers/md/dm-thin-metadata.c
@@ -747,6 +747,7 @@ static int __open_metadata(struct dm_pool_metadata *pmd)
* root to avoid accessing broken btree.
*/
pmd->root = le64_to_cpu(disk_super->data_mapping_root);
+ dm_setup_bm_cache(pmd->bm, pmd->root);
pmd->details_root = le64_to_cpu(disk_super->device_details_root);
__setup_btree_details(pmd);
@@ -837,6 +838,7 @@ static int __begin_transaction(struct dm_pool_metadata *pmd)
disk_super = dm_block_data(sblock);
pmd->time = le32_to_cpu(disk_super->time);
pmd->root = le64_to_cpu(disk_super->data_mapping_root);
+ dm_setup_bm_cache(pmd->bm, pmd->root);
pmd->details_root = le64_to_cpu(disk_super->device_details_root);
pmd->trans_id = le64_to_cpu(disk_super->trans_id);
pmd->flags = le32_to_cpu(disk_super->flags);
@@ -1678,6 +1680,8 @@ static int __insert(struct dm_thin_device *td, dm_block_t block,
if (r)
return r;
+ dm_move_bm_cache(pmd->bm, pmd->root);
+
td->changed = true;
if (inserted)
td->mapped_blocks++;
diff --git a/drivers/md/dm.h b/drivers/md/dm.h
index f682295af..3d0c9f860 100644
--- a/drivers/md/dm.h
+++ b/drivers/md/dm.h
@@ -232,12 +232,28 @@ static inline unsigned int dm_num_hash_locks(void)
{
unsigned int num_locks = roundup_pow_of_two(num_online_cpus()) << 1;
- return min_t(unsigned int, num_locks, DM_HASH_LOCKS_MAX);
+ return min_t(unsigned int, num_locks, DM_HASH_LOCKS_MAX) + 32;
}
#define DM_HASH_LOCKS_MULT 4294967291ULL
#define DM_HASH_LOCKS_SHIFT 6
+static inline unsigned int dm_hash_locks_index_special(sector_t block,
+ unsigned int num_locks,
+ unsigned long special)
+{
+
+
+ sector_t h1 = (block * DM_HASH_LOCKS_MULT) >> DM_HASH_LOCKS_SHIFT;
+ sector_t h2 = h1 >> DM_HASH_LOCKS_SHIFT;
+
+ if (block == special)
+ return ((h1 ^ h2) & 31) + num_locks - 32;
+
+ return (h1 ^ h2) & (num_locks - 33);
+}
+
+
static inline unsigned int dm_hash_locks_index(sector_t block,
unsigned int num_locks)
{
diff --git a/drivers/md/persistent-data/dm-block-manager.c b/drivers/md/persistent-data/dm-block-manager.c
index 0e010e120..da560f825 100644
--- a/drivers/md/persistent-data/dm-block-manager.c
+++ b/drivers/md/persistent-data/dm-block-manager.c
@@ -414,6 +414,17 @@ struct dm_block_manager *dm_block_manager_create(struct block_device *bdev,
}
EXPORT_SYMBOL_GPL(dm_block_manager_create);
+void dm_setup_bm_cache(struct dm_block_manager *bm, unsigned long block)
+{
+ dm_setup_buffer_cache(bm->bufio, block);
+}
+EXPORT_SYMBOL_GPL(dm_setup_bm_cache);
+
+void dm_move_bm_cache(struct dm_block_manager *bm, unsigned long block)
+{
+ dm_move_cache(bm->bufio, block);
+}
+
void dm_block_manager_destroy(struct dm_block_manager *bm)
{
dm_bufio_client_destroy(bm->bufio);
diff --git a/drivers/md/persistent-data/dm-block-manager.h b/drivers/md/persistent-data/dm-block-manager.h
index f706d3de8..25121bbc5 100644
--- a/drivers/md/persistent-data/dm-block-manager.h
+++ b/drivers/md/persistent-data/dm-block-manager.h
@@ -35,7 +35,9 @@ struct dm_block_manager;
struct dm_block_manager *dm_block_manager_create(
struct block_device *bdev, unsigned int block_size,
unsigned int max_held_per_thread);
+void dm_move_bm_cache(struct dm_block_manager *bm, unsigned long block);
void dm_block_manager_destroy(struct dm_block_manager *bm);
+void dm_setup_bm_cache(struct dm_block_manager *bm, unsigned long block);
void dm_block_manager_reset(struct dm_block_manager *bm);
unsigned int dm_bm_block_size(struct dm_block_manager *bm);
diff --git a/include/linux/dm-bufio.h b/include/linux/dm-bufio.h
index 75e7d8cbb..d7d7a33cc 100644
--- a/include/linux/dm-bufio.h
+++ b/include/linux/dm-bufio.h
@@ -71,6 +71,8 @@ void *dm_bufio_read(struct dm_bufio_client *c, sector_t block,
void *dm_bufio_get(struct dm_bufio_client *c, sector_t block,
struct dm_buffer **bp);
+void dm_setup_buffer_cache(struct dm_bufio_client *bc, unsigned long block);
+
/*
* Like dm_bufio_read, but don't read anything from the disk. It is
* expected that the caller initializes the buffer and marks it dirty.
@@ -139,6 +141,8 @@ int dm_bufio_issue_discard(struct dm_bufio_client *c, sector_t block, sector_t c
*/
void dm_bufio_forget(struct dm_bufio_client *c, sector_t block);
+void dm_move_cache(struct dm_bufio_client *bc, unsigned long block);
+
/*
* Free the given range of buffers.
* This is just a hint, if the buffer is in use or dirty, this function
--
2.43.0
2
1
22 Dec '25
From: Ondrej Mosnacek <omosnace(a)redhat.com>
mainline inclusion
from mainline-v6.19-rc2
commit 189e5deb944a6f9c7992355d60bffd8ec2e54a9c
category: bugfix
bugzilla: https://atomgit.com/src-openeuler/kernel/issues/12686
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
Analogically to the x86 commit 881a9c9cb785 ("bpf: Do not audit
capability check in do_jit()"), change the capable() call to
ns_capable_noaudit() in order to avoid spurious SELinux denials in audit
log.
The commit log from that commit applies here as well:
"""
The failure of this check only results in a security mitigation being
applied, slightly affecting performance of the compiled BPF program. It
doesn't result in a failed syscall, an thus auditing a failed LSM
permission check for it is unwanted. For example with SELinux, it causes
a denial to be reported for confined processes running as root, which
tends to be flagged as a problem to be fixed in the policy. Yet
dontauditing or allowing CAP_SYS_ADMIN to the domain may not be
desirable, as it would allow/silence also other checks - either going
against the principle of least privilege or making debugging potentially
harder.
Fix it by changing it from capable() to ns_capable_noaudit(), which
instructs the LSMs to not audit the resulting denials.
"""
Fixes: f300769ead03 ("arm64: bpf: Only mitigate cBPF programs loaded by unprivileged users")
Signed-off-by: Ondrej Mosnacek <omosnace(a)redhat.com>
Link: https://lore.kernel.org/r/20251204125916.441021-1-omosnace@redhat.com
Signed-off-by: Alexei Starovoitov <ast(a)kernel.org>
Signed-off-by: Pu Lehui <pulehui(a)huawei.com>
---
arch/arm64/net/bpf_jit_comp.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm64/net/bpf_jit_comp.c b/arch/arm64/net/bpf_jit_comp.c
index 8b957d2f60eb..f98ae8bf4e19 100644
--- a/arch/arm64/net/bpf_jit_comp.c
+++ b/arch/arm64/net/bpf_jit_comp.c
@@ -666,7 +666,7 @@ static void __maybe_unused build_bhb_mitigation(struct jit_ctx *ctx)
arm64_get_spectre_v2_state() == SPECTRE_VULNERABLE)
return;
- if (capable(CAP_SYS_ADMIN))
+ if (ns_capable_noaudit(&init_user_ns, CAP_SYS_ADMIN))
return;
if (supports_clearbhb(SCOPE_SYSTEM)) {
--
2.34.1
2
1
hulk inclusion
category: feature
bugzilla: NA
CVE: NA
--------------------------------------------------------
The cache of dm-thin is common used for first level btree and the
second level btree, however the first level btree has less dm-buffer
than the second level btree, which might cause extra look up steps for
the first level btree when accessing the cache of the dm pool. Thus,
add support for spliting the first level btree and the second level
btree' cache, which might speed up the look up process of the first
level btree routine.
Signed-off-by: Zhang Zekun <zhangzekun11(a)huawei.com>
---
drivers/md/dm-bufio.c | 72 +++++++++++++------
drivers/md/dm-thin-metadata.c | 4 ++
drivers/md/dm.h | 18 ++++-
drivers/md/persistent-data/dm-block-manager.c | 11 +++
drivers/md/persistent-data/dm-block-manager.h | 2 +
include/linux/dm-bufio.h | 4 ++
6 files changed, 87 insertions(+), 24 deletions(-)
diff --git a/drivers/md/dm-bufio.c b/drivers/md/dm-bufio.c
index 8ce77aec0..b83b8f5fe 100644
--- a/drivers/md/dm-bufio.c
+++ b/drivers/md/dm-bufio.c
@@ -254,9 +254,9 @@ enum evict_result {
ER_STOP, /* stop looking for something to evict */
};
-typedef enum evict_result (*le_predicate)(struct lru_entry *le, void *context);
+typedef enum evict_result (*le_predicate)(struct lru_entry *le, void *context, void *bc);
-static struct lru_entry *lru_evict(struct lru *lru, le_predicate pred, void *context, bool no_sleep)
+static struct lru_entry *lru_evict(struct lru *lru, le_predicate pred, void *context, bool no_sleep, void *bc)
{
unsigned long tested = 0;
struct list_head *h = lru->cursor;
@@ -276,7 +276,7 @@ static struct lru_entry *lru_evict(struct lru *lru, le_predicate pred, void *con
atomic_set(&le->referenced, 0);
} else {
tested++;
- switch (pred(le, context)) {
+ switch (pred(le, context, bc)) {
case ER_EVICT:
/*
* Adjust the cursor, so we start the next
@@ -362,6 +362,7 @@ struct dm_buffer {
unsigned int stack_len;
unsigned long stack_entries[MAX_STACK];
#endif
+ bool special;
};
/*--------------------------------------------------------------*/
@@ -399,12 +400,18 @@ struct dm_buffer_cache {
* on the locks.
*/
unsigned int num_locks;
+ unsigned long special;
bool no_sleep;
struct buffer_tree trees[];
};
static DEFINE_STATIC_KEY_FALSE(no_sleep_enabled);
+static inline unsigned int cache_index_special(sector_t block, unsigned int num_locks, unsigned long special)
+{
+ return dm_hash_locks_index_special(block, num_locks, special);
+}
+
static inline unsigned int cache_index(sector_t block, unsigned int num_locks)
{
return dm_hash_locks_index(block, num_locks);
@@ -413,33 +420,33 @@ static inline unsigned int cache_index(sector_t block, unsigned int num_locks)
static inline void cache_read_lock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- read_lock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ read_lock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- down_read(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ down_read(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
static inline void cache_read_unlock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- read_unlock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ read_unlock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- up_read(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ up_read(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
static inline void cache_write_lock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- write_lock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ write_lock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- down_write(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ down_write(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
static inline void cache_write_unlock(struct dm_buffer_cache *bc, sector_t block)
{
if (static_branch_unlikely(&no_sleep_enabled) && bc->no_sleep)
- write_unlock_bh(&bc->trees[cache_index(block, bc->num_locks)].u.spinlock);
+ write_unlock_bh(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.spinlock);
else
- up_write(&bc->trees[cache_index(block, bc->num_locks)].u.lock);
+ up_write(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].u.lock);
}
/*
@@ -506,9 +513,9 @@ static void lh_exit(struct lock_history *lh)
* Named 'next' because there is no corresponding
* 'up/unlock' call since it's done automatically.
*/
-static void lh_next(struct lock_history *lh, sector_t b)
+static void lh_next(struct lock_history *lh, sector_t b, unsigned long special)
{
- unsigned int index = cache_index(b, lh->no_previous); /* no_previous is num_locks */
+ unsigned int index = cache_index_special(b, lh->no_previous, special); /* no_previous is num_locks */
if (lh->previous != lh->no_previous) {
if (lh->previous != index) {
@@ -619,7 +626,7 @@ static struct dm_buffer *cache_get(struct dm_buffer_cache *bc, sector_t block)
struct dm_buffer *b;
cache_read_lock(bc, block);
- b = __cache_get(&bc->trees[cache_index(block, bc->num_locks)].root, block);
+ b = __cache_get(&bc->trees[cache_index_special(block, bc->num_locks, bc->special)].root, block);
if (b) {
lru_reference(&b->lru);
__cache_inc_buffer(b);
@@ -666,12 +673,13 @@ struct evict_wrapper {
* Wraps the buffer predicate turning it into an lru predicate. Adds
* extra test for hold_count.
*/
-static enum evict_result __evict_pred(struct lru_entry *le, void *context)
+static enum evict_result __evict_pred(struct lru_entry *le, void *context, void *bc)
{
struct evict_wrapper *w = context;
struct dm_buffer *b = le_to_buffer(le);
+ struct dm_buffer_cache *bcc = (struct dm_buffer_cache *)bc;
- lh_next(w->lh, b->block);
+ lh_next(w->lh, b->block, b->special ? b->block : bcc->special);
if (atomic_read(&b->hold_count))
return ER_DONT_EVICT;
@@ -687,13 +695,13 @@ static struct dm_buffer *__cache_evict(struct dm_buffer_cache *bc, int list_mode
struct lru_entry *le;
struct dm_buffer *b;
- le = lru_evict(&bc->lru[list_mode], __evict_pred, &w, bc->no_sleep);
+ le = lru_evict(&bc->lru[list_mode], __evict_pred, &w, bc->no_sleep, (void *) bc);
if (!le)
return NULL;
b = le_to_buffer(le);
/* __evict_pred will have locked the appropriate tree. */
- rb_erase(&b->node, &bc->trees[cache_index(b->block, bc->num_locks)].root);
+ rb_erase(&b->node, &bc->trees[cache_index_special(b->block, bc->num_locks, b->special ? b->block : bc->special)].root);
return b;
}
@@ -741,7 +749,7 @@ static void __cache_mark_many(struct dm_buffer_cache *bc, int old_mode, int new_
struct evict_wrapper w = {.lh = lh, .pred = pred, .context = context};
while (true) {
- le = lru_evict(&bc->lru[old_mode], __evict_pred, &w, bc->no_sleep);
+ le = lru_evict(&bc->lru[old_mode], __evict_pred, &w, bc->no_sleep, (void *)bc);
if (!le)
break;
@@ -792,7 +800,7 @@ static void __cache_iterate(struct dm_buffer_cache *bc, int list_mode,
do {
struct dm_buffer *b = le_to_buffer(le);
- lh_next(lh, b->block);
+ lh_next(lh, b->block, bc->special);
switch (fn(b, context)) {
case IT_NEXT:
@@ -858,8 +866,8 @@ static bool cache_insert(struct dm_buffer_cache *bc, struct dm_buffer *b)
return false;
cache_write_lock(bc, b->block);
- BUG_ON(atomic_read(&b->hold_count) != 1);
- r = __cache_insert(&bc->trees[cache_index(b->block, bc->num_locks)].root, b);
+ //BUG_ON(atomic_read(&b->hold_count) != 1);
+ r = __cache_insert(&bc->trees[cache_index_special(b->block, bc->num_locks, bc->special)].root, b);
if (r)
lru_insert(&bc->lru[b->list_mode], &b->lru);
cache_write_unlock(bc, b->block);
@@ -885,7 +893,7 @@ static bool cache_remove(struct dm_buffer_cache *bc, struct dm_buffer *b)
r = false;
} else {
r = true;
- rb_erase(&b->node, &bc->trees[cache_index(b->block, bc->num_locks)].root);
+ rb_erase(&b->node, &bc->trees[cache_index_special(b->block, bc->num_locks, bc->special)].root);
lru_remove(&bc->lru[b->list_mode], &b->lru);
}
@@ -1019,6 +1027,12 @@ struct dm_bufio_client {
struct dm_buffer_cache cache; /* must be last member */
};
+void dm_setup_buffer_cache(struct dm_bufio_client *bc, unsigned long block)
+{
+ bc->cache.special = block;
+}
+EXPORT_SYMBOL_GPL(dm_setup_buffer_cache);
+
/*----------------------------------------------------------------*/
#define dm_bufio_in_request() (!!current->bio_list)
@@ -1792,6 +1806,7 @@ static struct dm_buffer *__bufio_new(struct dm_bufio_client *c, sector_t block,
b->read_error = 0;
b->write_error = 0;
b->list_mode = LIST_CLEAN;
+ b->special = (block == c->cache.special);
if (nf == NF_FRESH)
b->state = 0;
@@ -2642,6 +2657,17 @@ void dm_bufio_set_sector_offset(struct dm_bufio_client *c, sector_t start)
}
EXPORT_SYMBOL_GPL(dm_bufio_set_sector_offset);
+void dm_move_cache(struct dm_bufio_client *bc, unsigned long block)
+{
+ struct dm_buffer *b;
+
+ b = cache_get(&bc->cache, block);
+ cache_remove(&bc->cache, b);
+ bc->cache.special = block;
+ cache_insert(&bc->cache, b);
+}
+EXPORT_SYMBOL_GPL(dm_move_cache);
+
/*--------------------------------------------------------------*/
static unsigned int get_max_age_hz(void)
diff --git a/drivers/md/dm-thin-metadata.c b/drivers/md/dm-thin-metadata.c
index 6022189c1..f485504d4 100644
--- a/drivers/md/dm-thin-metadata.c
+++ b/drivers/md/dm-thin-metadata.c
@@ -747,6 +747,7 @@ static int __open_metadata(struct dm_pool_metadata *pmd)
* root to avoid accessing broken btree.
*/
pmd->root = le64_to_cpu(disk_super->data_mapping_root);
+ dm_setup_bm_cache(pmd->bm, pmd->root);
pmd->details_root = le64_to_cpu(disk_super->device_details_root);
__setup_btree_details(pmd);
@@ -837,6 +838,7 @@ static int __begin_transaction(struct dm_pool_metadata *pmd)
disk_super = dm_block_data(sblock);
pmd->time = le32_to_cpu(disk_super->time);
pmd->root = le64_to_cpu(disk_super->data_mapping_root);
+ dm_setup_bm_cache(pmd->bm, pmd->root);
pmd->details_root = le64_to_cpu(disk_super->device_details_root);
pmd->trans_id = le64_to_cpu(disk_super->trans_id);
pmd->flags = le32_to_cpu(disk_super->flags);
@@ -1678,6 +1680,8 @@ static int __insert(struct dm_thin_device *td, dm_block_t block,
if (r)
return r;
+ dm_move_bm_cache(pmd->bm, pmd->root);
+
td->changed = true;
if (inserted)
td->mapped_blocks++;
diff --git a/drivers/md/dm.h b/drivers/md/dm.h
index f682295af..3d0c9f860 100644
--- a/drivers/md/dm.h
+++ b/drivers/md/dm.h
@@ -232,12 +232,28 @@ static inline unsigned int dm_num_hash_locks(void)
{
unsigned int num_locks = roundup_pow_of_two(num_online_cpus()) << 1;
- return min_t(unsigned int, num_locks, DM_HASH_LOCKS_MAX);
+ return min_t(unsigned int, num_locks, DM_HASH_LOCKS_MAX) + 32;
}
#define DM_HASH_LOCKS_MULT 4294967291ULL
#define DM_HASH_LOCKS_SHIFT 6
+static inline unsigned int dm_hash_locks_index_special(sector_t block,
+ unsigned int num_locks,
+ unsigned long special)
+{
+
+
+ sector_t h1 = (block * DM_HASH_LOCKS_MULT) >> DM_HASH_LOCKS_SHIFT;
+ sector_t h2 = h1 >> DM_HASH_LOCKS_SHIFT;
+
+ if (block == special)
+ return ((h1 ^ h2) & 31) + num_locks - 32;
+
+ return (h1 ^ h2) & (num_locks - 33);
+}
+
+
static inline unsigned int dm_hash_locks_index(sector_t block,
unsigned int num_locks)
{
diff --git a/drivers/md/persistent-data/dm-block-manager.c b/drivers/md/persistent-data/dm-block-manager.c
index 0e010e120..da560f825 100644
--- a/drivers/md/persistent-data/dm-block-manager.c
+++ b/drivers/md/persistent-data/dm-block-manager.c
@@ -414,6 +414,17 @@ struct dm_block_manager *dm_block_manager_create(struct block_device *bdev,
}
EXPORT_SYMBOL_GPL(dm_block_manager_create);
+void dm_setup_bm_cache(struct dm_block_manager *bm, unsigned long block)
+{
+ dm_setup_buffer_cache(bm->bufio, block);
+}
+EXPORT_SYMBOL_GPL(dm_setup_bm_cache);
+
+void dm_move_bm_cache(struct dm_block_manager *bm, unsigned long block)
+{
+ dm_move_cache(bm->bufio, block);
+}
+
void dm_block_manager_destroy(struct dm_block_manager *bm)
{
dm_bufio_client_destroy(bm->bufio);
diff --git a/drivers/md/persistent-data/dm-block-manager.h b/drivers/md/persistent-data/dm-block-manager.h
index f706d3de8..25121bbc5 100644
--- a/drivers/md/persistent-data/dm-block-manager.h
+++ b/drivers/md/persistent-data/dm-block-manager.h
@@ -35,7 +35,9 @@ struct dm_block_manager;
struct dm_block_manager *dm_block_manager_create(
struct block_device *bdev, unsigned int block_size,
unsigned int max_held_per_thread);
+void dm_move_bm_cache(struct dm_block_manager *bm, unsigned long block);
void dm_block_manager_destroy(struct dm_block_manager *bm);
+void dm_setup_bm_cache(struct dm_block_manager *bm, unsigned long block);
void dm_block_manager_reset(struct dm_block_manager *bm);
unsigned int dm_bm_block_size(struct dm_block_manager *bm);
diff --git a/include/linux/dm-bufio.h b/include/linux/dm-bufio.h
index 75e7d8cbb..d7d7a33cc 100644
--- a/include/linux/dm-bufio.h
+++ b/include/linux/dm-bufio.h
@@ -71,6 +71,8 @@ void *dm_bufio_read(struct dm_bufio_client *c, sector_t block,
void *dm_bufio_get(struct dm_bufio_client *c, sector_t block,
struct dm_buffer **bp);
+void dm_setup_buffer_cache(struct dm_bufio_client *bc, unsigned long block);
+
/*
* Like dm_bufio_read, but don't read anything from the disk. It is
* expected that the caller initializes the buffer and marks it dirty.
@@ -139,6 +141,8 @@ int dm_bufio_issue_discard(struct dm_bufio_client *c, sector_t block, sector_t c
*/
void dm_bufio_forget(struct dm_bufio_client *c, sector_t block);
+void dm_move_cache(struct dm_bufio_client *bc, unsigned long block);
+
/*
* Free the given range of buffers.
* This is just a hint, if the buffer is in use or dirty, this function
--
2.43.0
2
1
[PATCH OLK-6.6] ext4: add i_data_sem protection in ext4_destroy_inline_data_nolock()
by Yongjian Sun 22 Dec '25
by Yongjian Sun 22 Dec '25
22 Dec '25
From: Alexey Nepomnyashih <sdl(a)nppct.ru>
mainline inclusion
from mainline-v6.19-rc1
commit 0cd8feea8777f8d9b9a862b89c688b049a5c8475
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDF1F
CVE: CVE-2025-68261
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
Fix a race between inline data destruction and block mapping.
The function ext4_destroy_inline_data_nolock() changes the inode data
layout by clearing EXT4_INODE_INLINE_DATA and setting EXT4_INODE_EXTENTS.
At the same time, another thread may execute ext4_map_blocks(), which
tests EXT4_INODE_EXTENTS to decide whether to call ext4_ext_map_blocks()
or ext4_ind_map_blocks().
Without i_data_sem protection, ext4_ind_map_blocks() may receive inode
with EXT4_INODE_EXTENTS flag and triggering assert.
kernel BUG at fs/ext4/indirect.c:546!
EXT4-fs (loop2): unmounting filesystem.
invalid opcode: 0000 [#1] PREEMPT SMP KASAN NOPTI
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.12.0-1 04/01/2014
RIP: 0010:ext4_ind_map_blocks.cold+0x2b/0x5a fs/ext4/indirect.c:546
Call Trace:
<TASK>
ext4_map_blocks+0xb9b/0x16f0 fs/ext4/inode.c:681
_ext4_get_block+0x242/0x590 fs/ext4/inode.c:822
ext4_block_write_begin+0x48b/0x12c0 fs/ext4/inode.c:1124
ext4_write_begin+0x598/0xef0 fs/ext4/inode.c:1255
ext4_da_write_begin+0x21e/0x9c0 fs/ext4/inode.c:3000
generic_perform_write+0x259/0x5d0 mm/filemap.c:3846
ext4_buffered_write_iter+0x15b/0x470 fs/ext4/file.c:285
ext4_file_write_iter+0x8e0/0x17f0 fs/ext4/file.c:679
call_write_iter include/linux/fs.h:2271 [inline]
do_iter_readv_writev+0x212/0x3c0 fs/read_write.c:735
do_iter_write+0x186/0x710 fs/read_write.c:861
vfs_iter_write+0x70/0xa0 fs/read_write.c:902
iter_file_splice_write+0x73b/0xc90 fs/splice.c:685
do_splice_from fs/splice.c:763 [inline]
direct_splice_actor+0x10f/0x170 fs/splice.c:950
splice_direct_to_actor+0x33a/0xa10 fs/splice.c:896
do_splice_direct+0x1a9/0x280 fs/splice.c:1002
do_sendfile+0xb13/0x12c0 fs/read_write.c:1255
__do_sys_sendfile64 fs/read_write.c:1323 [inline]
__se_sys_sendfile64 fs/read_write.c:1309 [inline]
__x64_sys_sendfile64+0x1cf/0x210 fs/read_write.c:1309
do_syscall_x64 arch/x86/entry/common.c:51 [inline]
do_syscall_64+0x35/0x80 arch/x86/entry/common.c:81
entry_SYSCALL_64_after_hwframe+0x6e/0xd8
Fixes: c755e251357a ("ext4: fix deadlock between inline_data and ext4_expand_extra_isize_ea()")
Cc: stable(a)vger.kernel.org # v4.11+
Signed-off-by: Alexey Nepomnyashih <sdl(a)nppct.ru>
Message-ID: <20251104093326.697381-1-sdl(a)nppct.ru>
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Signed-off-by: Yongjian Sun <sunyongjian1(a)huawei.com>
---
fs/ext4/inline.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
index 5fa1dd58ac42..bc6960c30a03 100644
--- a/fs/ext4/inline.c
+++ b/fs/ext4/inline.c
@@ -441,9 +441,13 @@ static int ext4_destroy_inline_data_nolock(handle_t *handle,
if (!ei->i_inline_off)
return 0;
+ down_write(&ei->i_data_sem);
+
error = ext4_get_inode_loc(inode, &is.iloc);
- if (error)
+ if (error) {
+ up_write(&ei->i_data_sem);
return error;
+ }
error = ext4_xattr_ibody_find(inode, &i, &is);
if (error)
@@ -482,6 +486,7 @@ static int ext4_destroy_inline_data_nolock(handle_t *handle,
brelse(is.iloc.bh);
if (error == -ENODATA)
error = 0;
+ up_write(&ei->i_data_sem);
return error;
}
--
2.39.2
2
1
22 Dec '25
From: Deepanshu Kartikey <kartikey406(a)gmail.com>
mainline inclusion
from mainline-v6.19-rc1
commit 892e1cf17555735e9d021ab036c36bc7b58b0e3b
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDF27
CVE: CVE-2025-68264
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
The cached ei->i_inline_size can become stale between the initial size
check and when ext4_update_inline_data()/ext4_create_inline_data() use
it. Although ext4_get_max_inline_size() reads the correct value at the
time of the check, concurrent xattr operations can modify i_inline_size
before ext4_write_lock_xattr() is acquired.
This causes ext4_update_inline_data() and ext4_create_inline_data() to
work with stale capacity values, leading to a BUG_ON() crash in
ext4_write_inline_data():
kernel BUG at fs/ext4/inline.c:1331!
BUG_ON(pos + len > EXT4_I(inode)->i_inline_size);
The race window:
1. ext4_get_max_inline_size() reads i_inline_size = 60 (correct)
2. Size check passes for 50-byte write
3. [Another thread adds xattr, i_inline_size changes to 40]
4. ext4_write_lock_xattr() acquires lock
5. ext4_update_inline_data() uses stale i_inline_size = 60
6. Attempts to write 50 bytes but only 40 bytes actually available
7. BUG_ON() triggers
Fix this by recalculating i_inline_size via ext4_find_inline_data_nolock()
immediately after acquiring xattr_sem. This ensures ext4_update_inline_data()
and ext4_create_inline_data() work with current values that are protected
from concurrent modifications.
This is similar to commit a54c4613dac1 ("ext4: fix race writing to an
inline_data file while its xattrs are changing") which fixed i_inline_off
staleness. This patch addresses the related i_inline_size staleness issue.
Reported-by: syzbot+f3185be57d7e8dda32b8(a)syzkaller.appspotmail.com
Link: https://syzkaller.appspot.com/bug?extid=f3185be57d7e8dda32b8
Cc: stable(a)kernel.org
Signed-off-by: Deepanshu Kartikey <kartikey406(a)gmail.com>
Message-ID: <20251020060936.474314-1-kartikey406(a)gmail.com>
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Signed-off-by: Yongjian Sun <sunyongjian1(a)huawei.com>
---
fs/ext4/inline.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/fs/ext4/inline.c b/fs/ext4/inline.c
index bc6960c30a03..0cb175a1abe0 100644
--- a/fs/ext4/inline.c
+++ b/fs/ext4/inline.c
@@ -413,7 +413,12 @@ static int ext4_prepare_inline_data(handle_t *handle, struct inode *inode,
return -ENOSPC;
ext4_write_lock_xattr(inode, &no_expand);
-
+ /*
+ * ei->i_inline_size may have changed since the initial check
+ * if other xattrs were added. Recalculate to ensure
+ * ext4_update_inline_data() validates against current capacity.
+ */
+ (void) ext4_find_inline_data_nolock(inode);
if (ei->i_inline_off)
ret = ext4_update_inline_data(handle, inode, len);
else
--
2.39.2
2
1
[PATCH OLK-6.6] fs: ext4: change GFP_KERNEL to GFP_NOFS to avoid deadlock
by Yongjian Sun 22 Dec '25
by Yongjian Sun 22 Dec '25
22 Dec '25
From: chuguangqing <chuguangqing(a)inspur.com>
mainline inclusion
from mainline-v6.18-rc1
commit 1534f72dc2a11ded38b0e0268fbcc0ca24e9fd4a
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDEUI
CVE: CVE-2025-40361
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
The parent function ext4_xattr_inode_lookup_create already uses GFP_NOFS for memory alloction, so the function ext4_xattr_inode_cache_find should use same gfp_flag.
Signed-off-by: chuguangqing <chuguangqing(a)inspur.com>
Signed-off-by: Theodore Ts'o <tytso(a)mit.edu>
Signed-off-by: Yongjian Sun <sunyongjian1(a)huawei.com>
---
fs/ext4/xattr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/ext4/xattr.c b/fs/ext4/xattr.c
index 5009fdcfe150..cd906aa08afa 100644
--- a/fs/ext4/xattr.c
+++ b/fs/ext4/xattr.c
@@ -1549,7 +1549,7 @@ ext4_xattr_inode_cache_find(struct inode *inode, const void *value,
WARN_ON_ONCE(ext4_handle_valid(journal_current_handle()) &&
!(current->flags & PF_MEMALLOC_NOFS));
- ea_data = kvmalloc(value_len, GFP_KERNEL);
+ ea_data = kvmalloc(value_len, GFP_NOFS);
if (!ea_data) {
mb_cache_entry_put(ea_inode_cache, ce);
return NULL;
--
2.39.2
2
1
[PATCH OLK-6.6] hfsplus: fix KMSAN uninit-value issue in hfsplus_delete_cat()
by Yongjian Sun 22 Dec '25
by Yongjian Sun 22 Dec '25
22 Dec '25
From: Viacheslav Dubeyko <slava(a)dubeyko.com>
mainline inclusion
from mainline-v6.18-rc1
commit 9b3d15a758910bb98ba8feb4109d99cc67450ee4
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDEVH
CVE: CVE-2025-40351
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
The syzbot reported issue in hfsplus_delete_cat():
[ 70.682285][ T9333] =====================================================
[ 70.682943][ T9333] BUG: KMSAN: uninit-value in hfsplus_subfolders_dec+0x1d7/0x220
[ 70.683640][ T9333] hfsplus_subfolders_dec+0x1d7/0x220
[ 70.684141][ T9333] hfsplus_delete_cat+0x105d/0x12b0
[ 70.684621][ T9333] hfsplus_rmdir+0x13d/0x310
[ 70.685048][ T9333] vfs_rmdir+0x5ba/0x810
[ 70.685447][ T9333] do_rmdir+0x964/0xea0
[ 70.685833][ T9333] __x64_sys_rmdir+0x71/0xb0
[ 70.686260][ T9333] x64_sys_call+0xcd8/0x3cf0
[ 70.686695][ T9333] do_syscall_64+0xd9/0x1d0
[ 70.687119][ T9333] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 70.687646][ T9333]
[ 70.687856][ T9333] Uninit was stored to memory at:
[ 70.688311][ T9333] hfsplus_subfolders_inc+0x1c2/0x1d0
[ 70.688779][ T9333] hfsplus_create_cat+0x148e/0x1800
[ 70.689231][ T9333] hfsplus_mknod+0x27f/0x600
[ 70.689730][ T9333] hfsplus_mkdir+0x5a/0x70
[ 70.690146][ T9333] vfs_mkdir+0x483/0x7a0
[ 70.690545][ T9333] do_mkdirat+0x3f2/0xd30
[ 70.690944][ T9333] __x64_sys_mkdir+0x9a/0xf0
[ 70.691380][ T9333] x64_sys_call+0x2f89/0x3cf0
[ 70.691816][ T9333] do_syscall_64+0xd9/0x1d0
[ 70.692229][ T9333] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 70.692773][ T9333]
[ 70.692990][ T9333] Uninit was stored to memory at:
[ 70.693469][ T9333] hfsplus_subfolders_inc+0x1c2/0x1d0
[ 70.693960][ T9333] hfsplus_create_cat+0x148e/0x1800
[ 70.694438][ T9333] hfsplus_fill_super+0x21c1/0x2700
[ 70.694911][ T9333] mount_bdev+0x37b/0x530
[ 70.695320][ T9333] hfsplus_mount+0x4d/0x60
[ 70.695729][ T9333] legacy_get_tree+0x113/0x2c0
[ 70.696167][ T9333] vfs_get_tree+0xb3/0x5c0
[ 70.696588][ T9333] do_new_mount+0x73e/0x1630
[ 70.697013][ T9333] path_mount+0x6e3/0x1eb0
[ 70.697425][ T9333] __se_sys_mount+0x733/0x830
[ 70.697857][ T9333] __x64_sys_mount+0xe4/0x150
[ 70.698269][ T9333] x64_sys_call+0x2691/0x3cf0
[ 70.698704][ T9333] do_syscall_64+0xd9/0x1d0
[ 70.699117][ T9333] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 70.699730][ T9333]
[ 70.699946][ T9333] Uninit was created at:
[ 70.700378][ T9333] __alloc_pages_noprof+0x714/0xe60
[ 70.700843][ T9333] alloc_pages_mpol_noprof+0x2a2/0x9b0
[ 70.701331][ T9333] alloc_pages_noprof+0xf8/0x1f0
[ 70.701774][ T9333] allocate_slab+0x30e/0x1390
[ 70.702194][ T9333] ___slab_alloc+0x1049/0x33a0
[ 70.702635][ T9333] kmem_cache_alloc_lru_noprof+0x5ce/0xb20
[ 70.703153][ T9333] hfsplus_alloc_inode+0x5a/0xd0
[ 70.703598][ T9333] alloc_inode+0x82/0x490
[ 70.703984][ T9333] iget_locked+0x22e/0x1320
[ 70.704428][ T9333] hfsplus_iget+0x5c/0xba0
[ 70.704827][ T9333] hfsplus_btree_open+0x135/0x1dd0
[ 70.705291][ T9333] hfsplus_fill_super+0x1132/0x2700
[ 70.705776][ T9333] mount_bdev+0x37b/0x530
[ 70.706171][ T9333] hfsplus_mount+0x4d/0x60
[ 70.706579][ T9333] legacy_get_tree+0x113/0x2c0
[ 70.707019][ T9333] vfs_get_tree+0xb3/0x5c0
[ 70.707444][ T9333] do_new_mount+0x73e/0x1630
[ 70.707865][ T9333] path_mount+0x6e3/0x1eb0
[ 70.708270][ T9333] __se_sys_mount+0x733/0x830
[ 70.708711][ T9333] __x64_sys_mount+0xe4/0x150
[ 70.709158][ T9333] x64_sys_call+0x2691/0x3cf0
[ 70.709630][ T9333] do_syscall_64+0xd9/0x1d0
[ 70.710053][ T9333] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 70.710611][ T9333]
[ 70.710842][ T9333] CPU: 3 UID: 0 PID: 9333 Comm: repro Not tainted 6.12.0-rc6-dirty #17
[ 70.711568][ T9333] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[ 70.712490][ T9333] =====================================================
[ 70.713085][ T9333] Disabling lock debugging due to kernel taint
[ 70.713618][ T9333] Kernel panic - not syncing: kmsan.panic set ...
[ 70.714159][ T9333] CPU: 3 UID: 0 PID: 9333 Comm: repro Tainted: G B 6.12.0-rc6-dirty #17
[ 70.715007][ T9333] Tainted: [B]=BAD_PAGE
[ 70.715365][ T9333] Hardware name: QEMU Ubuntu 24.04 PC (i440FX + PIIX, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
[ 70.716311][ T9333] Call Trace:
[ 70.716621][ T9333] <TASK>
[ 70.716899][ T9333] dump_stack_lvl+0x1fd/0x2b0
[ 70.717350][ T9333] dump_stack+0x1e/0x30
[ 70.717743][ T9333] panic+0x502/0xca0
[ 70.718116][ T9333] ? kmsan_get_metadata+0x13e/0x1c0
[ 70.718611][ T9333] kmsan_report+0x296/0x2a0
[ 70.719038][ T9333] ? __msan_metadata_ptr_for_load_4+0x24/0x40
[ 70.719859][ T9333] ? __msan_warning+0x96/0x120
[ 70.720345][ T9333] ? hfsplus_subfolders_dec+0x1d7/0x220
[ 70.720881][ T9333] ? hfsplus_delete_cat+0x105d/0x12b0
[ 70.721412][ T9333] ? hfsplus_rmdir+0x13d/0x310
[ 70.721880][ T9333] ? vfs_rmdir+0x5ba/0x810
[ 70.722458][ T9333] ? do_rmdir+0x964/0xea0
[ 70.722883][ T9333] ? __x64_sys_rmdir+0x71/0xb0
[ 70.723397][ T9333] ? x64_sys_call+0xcd8/0x3cf0
[ 70.723915][ T9333] ? do_syscall_64+0xd9/0x1d0
[ 70.724454][ T9333] ? entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 70.725110][ T9333] ? vprintk_emit+0xd1f/0xe60
[ 70.725616][ T9333] ? vprintk_default+0x3f/0x50
[ 70.726175][ T9333] ? vprintk+0xce/0xd0
[ 70.726628][ T9333] ? _printk+0x17e/0x1b0
[ 70.727129][ T9333] ? __msan_metadata_ptr_for_load_4+0x24/0x40
[ 70.727739][ T9333] ? kmsan_get_metadata+0x13e/0x1c0
[ 70.728324][ T9333] __msan_warning+0x96/0x120
[ 70.728854][ T9333] hfsplus_subfolders_dec+0x1d7/0x220
[ 70.729479][ T9333] hfsplus_delete_cat+0x105d/0x12b0
[ 70.729984][ T9333] ? kmsan_get_shadow_origin_ptr+0x4a/0xb0
[ 70.730646][ T9333] ? __msan_metadata_ptr_for_load_4+0x24/0x40
[ 70.731296][ T9333] ? kmsan_get_metadata+0x13e/0x1c0
[ 70.731863][ T9333] hfsplus_rmdir+0x13d/0x310
[ 70.732390][ T9333] ? __pfx_hfsplus_rmdir+0x10/0x10
[ 70.732919][ T9333] vfs_rmdir+0x5ba/0x810
[ 70.733416][ T9333] ? kmsan_get_shadow_origin_ptr+0x4a/0xb0
[ 70.734044][ T9333] do_rmdir+0x964/0xea0
[ 70.734537][ T9333] __x64_sys_rmdir+0x71/0xb0
[ 70.735032][ T9333] x64_sys_call+0xcd8/0x3cf0
[ 70.735579][ T9333] do_syscall_64+0xd9/0x1d0
[ 70.736092][ T9333] ? irqentry_exit+0x16/0x60
[ 70.736637][ T9333] entry_SYSCALL_64_after_hwframe+0x77/0x7f
[ 70.737269][ T9333] RIP: 0033:0x7fa9424eafc9
[ 70.737775][ T9333] Code: 00 c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 44 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 48
[ 70.739844][ T9333] RSP: 002b:00007fff099cd8d8 EFLAGS: 00000202 ORIG_RAX: 0000000000000054
[ 70.740760][ T9333] RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007fa9424eafc9
[ 70.741642][ T9333] RDX: 006c6f72746e6f63 RSI: 000000000000000a RDI: 0000000020000100
[ 70.742543][ T9333] RBP: 00007fff099cd8e0 R08: 00007fff099cd910 R09: 00007fff099cd910
[ 70.743376][ T9333] R10: 0000000000000000 R11: 0000000000000202 R12: 0000565430642260
[ 70.744247][ T9333] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[ 70.745082][ T9333] </TASK>
The main reason of the issue that struct hfsplus_inode_info
has not been properly initialized for the case of root folder.
In the case of root folder, hfsplus_fill_super() calls
the hfsplus_iget() that implements only partial initialization of
struct hfsplus_inode_info and subfolders field is not
initialized by hfsplus_iget() logic.
This patch implements complete initialization of
struct hfsplus_inode_info in the hfsplus_iget() logic with
the goal to prevent likewise issues for the case of
root folder.
Reported-by: syzbot <syzbot+fdedff847a0e5e84c39f(a)syzkaller.appspotmail.com>
Closes: https://syzkaller.appspot.com/bug?extid=fdedff847a0e5e84c39f
Signed-off-by: Viacheslav Dubeyko <slava(a)dubeyko.com>
cc: John Paul Adrian Glaubitz <glaubitz(a)physik.fu-berlin.de>
cc: Yangtao Li <frank.li(a)vivo.com>
cc: linux-fsdevel(a)vger.kernel.org
Link: https://lore.kernel.org/r/20250825225103.326401-1-slava@dubeyko.com
Signed-off-by: Viacheslav Dubeyko <slava(a)dubeyko.com>
Signed-off-by: Yongjian Sun <sunyongjian1(a)huawei.com>
---
fs/hfsplus/super.c | 23 ++++++++++++++++++-----
1 file changed, 18 insertions(+), 5 deletions(-)
diff --git a/fs/hfsplus/super.c b/fs/hfsplus/super.c
index 1986b4f18a90..8c086f16dd58 100644
--- a/fs/hfsplus/super.c
+++ b/fs/hfsplus/super.c
@@ -67,13 +67,26 @@ struct inode *hfsplus_iget(struct super_block *sb, unsigned long ino)
if (!(inode->i_state & I_NEW))
return inode;
- INIT_LIST_HEAD(&HFSPLUS_I(inode)->open_dir_list);
- spin_lock_init(&HFSPLUS_I(inode)->open_dir_lock);
- mutex_init(&HFSPLUS_I(inode)->extents_lock);
- HFSPLUS_I(inode)->flags = 0;
+ atomic_set(&HFSPLUS_I(inode)->opencnt, 0);
+ HFSPLUS_I(inode)->first_blocks = 0;
+ HFSPLUS_I(inode)->clump_blocks = 0;
+ HFSPLUS_I(inode)->alloc_blocks = 0;
+ HFSPLUS_I(inode)->cached_start = U32_MAX;
+ HFSPLUS_I(inode)->cached_blocks = 0;
+ memset(HFSPLUS_I(inode)->first_extents, 0, sizeof(hfsplus_extent_rec));
+ memset(HFSPLUS_I(inode)->cached_extents, 0, sizeof(hfsplus_extent_rec));
HFSPLUS_I(inode)->extent_state = 0;
+ mutex_init(&HFSPLUS_I(inode)->extents_lock);
HFSPLUS_I(inode)->rsrc_inode = NULL;
- atomic_set(&HFSPLUS_I(inode)->opencnt, 0);
+ HFSPLUS_I(inode)->create_date = 0;
+ HFSPLUS_I(inode)->linkid = 0;
+ HFSPLUS_I(inode)->flags = 0;
+ HFSPLUS_I(inode)->fs_blocks = 0;
+ HFSPLUS_I(inode)->userflags = 0;
+ HFSPLUS_I(inode)->subfolders = 0;
+ INIT_LIST_HEAD(&HFSPLUS_I(inode)->open_dir_list);
+ spin_lock_init(&HFSPLUS_I(inode)->open_dir_lock);
+ HFSPLUS_I(inode)->phys_size = 0;
if (inode->i_ino >= HFSPLUS_FIRSTUSER_CNID ||
inode->i_ino == HFSPLUS_ROOT_CNID) {
--
2.39.2
2
1
[openeuler:OLK-6.6 3544/3544] fs/userfaultfd.c:1809:23: sparse: sparse: invalid assignment: |=
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 0214feb8f616acf62f9a6a2a131f0a1479b2b8af [3544/3544] mm/userswap: introduce UFFDIO_COPY_MODE_DIRECT_MAP
config: x86_64-randconfig-122-20251215 (https://download.01.org/0day-ci/archive/20251222/202512221517.71VoHBnY-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512221517.71VoHBnY-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/202512221517.71VoHBnY-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> fs/userfaultfd.c:1809:23: sparse: sparse: invalid assignment: |=
fs/userfaultfd.c:1809:23: sparse: left side has type restricted uffd_flags_t
fs/userfaultfd.c:1809:23: sparse: right side has type int
fs/userfaultfd.c: note: in included file (through arch/x86/include/asm/tlbflush.h, arch/x86/include/asm/uaccess.h, include/linux/uaccess.h, ...):
arch/x86/include/asm/pgtable.h:178:44: sparse: sparse: context imbalance in 'handle_userfault' - unexpected unlock
vim +1809 fs/userfaultfd.c
1769
1770 static int userfaultfd_copy(struct userfaultfd_ctx *ctx,
1771 unsigned long arg)
1772 {
1773 __s64 ret;
1774 struct uffdio_copy uffdio_copy;
1775 struct uffdio_copy __user *user_uffdio_copy;
1776 struct userfaultfd_wake_range range;
1777 uffd_flags_t flags = 0;
1778
1779 user_uffdio_copy = (struct uffdio_copy __user *) arg;
1780
1781 ret = -EAGAIN;
1782 if (atomic_read(&ctx->mmap_changing))
1783 goto out;
1784
1785 ret = -EFAULT;
1786 if (copy_from_user(&uffdio_copy, user_uffdio_copy,
1787 /* don't copy "copy" last field */
1788 sizeof(uffdio_copy)-sizeof(__s64)))
1789 goto out;
1790
1791 ret = validate_unaligned_range(ctx->mm, uffdio_copy.src,
1792 uffdio_copy.len);
1793 if (ret)
1794 goto out;
1795 ret = validate_range(ctx->mm, uffdio_copy.dst, uffdio_copy.len);
1796 if (ret)
1797 goto out;
1798
1799 ret = -EINVAL;
1800 if (uffdio_copy.mode & ~(UFFDIO_COPY_MODE_DONTWAKE |
1801 UFFDIO_COPY_MODE_WP |
1802 IS_ENABLED(CONFIG_USERSWAP) ?
1803 UFFDIO_COPY_MODE_DIRECT_MAP : 0))
1804 goto out;
1805 if (uffdio_copy.mode & UFFDIO_COPY_MODE_WP)
1806 flags |= MFILL_ATOMIC_WP;
1807 if (IS_ENABLED(CONFIG_USERSWAP) &&
1808 (uffdio_copy.mode & UFFDIO_COPY_MODE_DIRECT_MAP))
> 1809 flags |= MFILL_ATOMIC_DIRECT_MAP;
1810 if (mmget_not_zero(ctx->mm)) {
1811 ret = mfill_atomic_copy(ctx->mm, uffdio_copy.dst, uffdio_copy.src,
1812 uffdio_copy.len, &ctx->mmap_changing,
1813 flags);
1814 mmput(ctx->mm);
1815 } else {
1816 return -ESRCH;
1817 }
1818 if (unlikely(put_user(ret, &user_uffdio_copy->copy)))
1819 return -EFAULT;
1820 if (ret < 0)
1821 goto out;
1822 BUG_ON(!ret);
1823 /* len == 0 would wake all */
1824 range.len = ret;
1825 if (!(uffdio_copy.mode & UFFDIO_COPY_MODE_DONTWAKE)) {
1826 range.start = uffdio_copy.dst;
1827 wake_userfault(ctx, &range);
1828 }
1829 ret = range.len == uffdio_copy.len ? 0 : -EAGAIN;
1830 out:
1831 return ret;
1832 }
1833
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
From: Vladimir Riabchun <ferr.lambarginio(a)gmail.com>
stable inclusion
from stable-v6.6.119
commit e81e6d6d99b16dae11adbeda5c996317942a940c
category: bugfix
bugzilla: http://atomgit.com/src-openeuler/kernel/issues/11609
CVE: CVE-2025-68173
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 4099b98203d6b33d990586542fa5beee408032a3 ]
A soft lockup was observed when loading amdgpu module.
If a module has a lot of tracable functions, multiple calls
to kallsyms_lookup can spend too much time in RCU critical
section and with disabled preemption, causing kernel panic.
This is the same issue that was fixed in
commit d0b24b4e91fc ("ftrace: Prevent RCU stall on PREEMPT_VOLUNTARY
kernels") and commit 42ea22e754ba ("ftrace: Add cond_resched() to
ftrace_graph_set_hash()").
Fix it the same way by adding cond_resched() in ftrace_module_enable.
Link: https://lore.kernel.org/aMQD9_lxYmphT-up@vova-pc
Signed-off-by: Vladimir Riabchun <ferr.lambarginio(a)gmail.com>
Signed-off-by: Steven Rostedt (Google) <rostedt(a)goodmis.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Tengda Wu <wutengda2(a)huawei.com>
---
kernel/trace/ftrace.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 15785a729a0c..398992597685 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -6873,6 +6873,8 @@ void ftrace_module_enable(struct module *mod)
if (!within_module(rec->ip, mod))
break;
+ cond_resched();
+
/* Weak functions should still be ignored */
if (!test_for_valid_rec(rec)) {
/* Clear all other flags. Should not be enabled anyway */
--
2.34.1
2
1
Patch #1 is the prerequisite patch, and Patch #2 fixes CVE-2025-39810.
Michael Chan (1):
[Backport] bnxt_en: Fix possible crash after creating sw mqprio TCs
Sreekanth Reddy (1):
[Backport] bnxt_en: Fix memory corruption when FW resources change
during ifdown
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 34 ++++++++++++++-----
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 +
drivers/net/ethernet/broadcom/bnxt/bnxt_dcb.c | 2 +-
.../net/ethernet/broadcom/bnxt/bnxt_ethtool.c | 4 +--
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 2 +-
5 files changed, 30 insertions(+), 13 deletions(-)
--
2.34.1
2
3
hulk inclusion
category: bugfix
bugzilla: https://atomgit.com/openeuler/kernel/issues/8282
--------------------------------
L3t is only work with specific cpus, now add checker during init
to make sure this is enabled with specific cpus.
Fixes: c40d971092ff ("hisi: l3t: Add L3 cache driver for hisi")
Signed-off-by: Wupeng Ma <mawupeng1(a)huawei.com>
---
arch/arm64/include/asm/cputype.h | 2 ++
drivers/soc/hisilicon/l3t.c | 8 ++++++++
2 files changed, 10 insertions(+)
diff --git a/arch/arm64/include/asm/cputype.h b/arch/arm64/include/asm/cputype.h
index b3b1977e9980..ca90d0e13ad6 100644
--- a/arch/arm64/include/asm/cputype.h
+++ b/arch/arm64/include/asm/cputype.h
@@ -113,6 +113,7 @@
#define HISI_CPU_PART_TSV110 0xD01
#define HISI_CPU_PART_TSV200 0xD02
#define HISI_CPU_PART_LINXICORE9100 0xD02
+#define HISI_CPU_PART_HIP10 0xD03
#define PHYTIUM_CPU_PART_1500A 0X660
#define PHYTIUM_CPU_PART_2000AHK 0X661
@@ -165,6 +166,7 @@
#define MIDR_FUJITSU_A64FX MIDR_CPU_MODEL(ARM_CPU_IMP_FUJITSU, FUJITSU_CPU_PART_A64FX)
#define MIDR_HISI_TSV110 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV110)
#define MIDR_HISI_TSV200 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV200)
+#define MIDR_HISI_HIP10 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_HIP10)
#define MIDR_HISI_LINXICORE9100 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_LINXICORE9100)
#define MIDR_FT_1500A MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_1500A)
#define MIDR_FT_2000AHK MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_2000AHK)
diff --git a/drivers/soc/hisilicon/l3t.c b/drivers/soc/hisilicon/l3t.c
index 35106e091098..69e65d659a35 100644
--- a/drivers/soc/hisilicon/l3t.c
+++ b/drivers/soc/hisilicon/l3t.c
@@ -264,6 +264,14 @@ static struct platform_driver hisi_l3t_driver = {
static int __init hisi_l3t_init(void)
{
+ static const struct midr_range l3t_support_list[] = {
+ MIDR_ALL_VERSIONS(MIDR_HISI_TSV200),
+ MIDR_ALL_VERSIONS(MIDR_HISI_HIP10),
+ {}
+ };
+ if (!is_midr_in_range_list(read_cpuid_id(), l3t_support_list))
+ return -ENODEV;
+
mutex_init(&l3t_mutex);
xa_init(&l3t_mapping);
--
2.43.0
2
1
[PATCH OLK-6.6] timers: Fix NULL function pointer race in timer_shutdown_sync()
by Jinjie Ruan 22 Dec '25
by Jinjie Ruan 22 Dec '25
22 Dec '25
From: Yipeng Zou <zouyipeng(a)huawei.com>
stable inclusion
from stable-v6.6.118
commit 6665fbd7730b26d770c232b20d1b907e6a67a914
category: bugfix
bugzilla: https://gitcode.com/src-openeuler/kernel/issues/11566
CVE: CVE-2025-68214
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 20739af07383e6eb1ec59dcd70b72ebfa9ac362c upstream.
There is a race condition between timer_shutdown_sync() and timer
expiration that can lead to hitting a WARN_ON in expire_timers().
The issue occurs when timer_shutdown_sync() clears the timer function
to NULL while the timer is still running on another CPU. The race
scenario looks like this:
CPU0 CPU1
<SOFTIRQ>
lock_timer_base()
expire_timers()
base->running_timer = timer;
unlock_timer_base()
[call_timer_fn enter]
mod_timer()
...
timer_shutdown_sync()
lock_timer_base()
// For now, will not detach the timer but only clear its function to NULL
if (base->running_timer != timer)
ret = detach_if_pending(timer, base, true);
if (shutdown)
timer->function = NULL;
unlock_timer_base()
[call_timer_fn exit]
lock_timer_base()
base->running_timer = NULL;
unlock_timer_base()
...
// Now timer is pending while its function set to NULL.
// next timer trigger
<SOFTIRQ>
expire_timers()
WARN_ON_ONCE(!fn) // hit
...
lock_timer_base()
// Now timer will detach
if (base->running_timer != timer)
ret = detach_if_pending(timer, base, true);
if (shutdown)
timer->function = NULL;
unlock_timer_base()
The problem is that timer_shutdown_sync() clears the timer function
regardless of whether the timer is currently running. This can leave a
pending timer with a NULL function pointer, which triggers the
WARN_ON_ONCE(!fn) check in expire_timers().
Fix this by only clearing the timer function when actually detaching the
timer. If the timer is running, leave the function pointer intact, which is
safe because the timer will be properly detached when it finishes running.
Fixes: 0cc04e80458a ("timers: Add shutdown mechanism to the internal functions")
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
Link: https://patch.msgid.link/20251122093942.301559-1-zouyipeng@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Jinjie Ruan <ruanjinjie(a)huawei.com>
---
kernel/time/timer.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 63a8ce7177dd..4a2aeaa85af3 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1413,10 +1413,11 @@ static int __try_to_del_timer_sync(struct timer_list *timer, bool shutdown)
base = lock_timer_base(timer, &flags);
- if (base->running_timer != timer)
+ if (base->running_timer != timer) {
ret = detach_if_pending(timer, base, true);
- if (shutdown)
- timer->function = NULL;
+ if (shutdown)
+ timer->function = NULL;
+ }
raw_spin_unlock_irqrestore(&base->lock, flags);
--
2.34.1
2
1
hulk inclusion
category: bugfix
bugzilla: https://gitcode.com/openeuler/kernel/issues/8282
--------------------------------
L3t is only work with specific cpus, now add checker during init
to make sure this is enabled with specific cpus.
Fixes: c40d971092ff ("hisi: l3t: Add L3 cache driver for hisi")
Signed-off-by: Wupeng Ma <mawupeng1(a)huawei.com>
---
arch/arm64/include/asm/cputype.h | 2 ++
drivers/soc/hisilicon/l3t.c | 8 ++++++++
2 files changed, 10 insertions(+)
diff --git a/arch/arm64/include/asm/cputype.h b/arch/arm64/include/asm/cputype.h
index b3b1977e9980..ca90d0e13ad6 100644
--- a/arch/arm64/include/asm/cputype.h
+++ b/arch/arm64/include/asm/cputype.h
@@ -113,6 +113,7 @@
#define HISI_CPU_PART_TSV110 0xD01
#define HISI_CPU_PART_TSV200 0xD02
#define HISI_CPU_PART_LINXICORE9100 0xD02
+#define HISI_CPU_PART_HIP10 0xD03
#define PHYTIUM_CPU_PART_1500A 0X660
#define PHYTIUM_CPU_PART_2000AHK 0X661
@@ -165,6 +166,7 @@
#define MIDR_FUJITSU_A64FX MIDR_CPU_MODEL(ARM_CPU_IMP_FUJITSU, FUJITSU_CPU_PART_A64FX)
#define MIDR_HISI_TSV110 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV110)
#define MIDR_HISI_TSV200 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_TSV200)
+#define MIDR_HISI_HIP10 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_HIP10)
#define MIDR_HISI_LINXICORE9100 MIDR_CPU_MODEL(ARM_CPU_IMP_HISI, HISI_CPU_PART_LINXICORE9100)
#define MIDR_FT_1500A MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_1500A)
#define MIDR_FT_2000AHK MIDR_CPU_MODEL(ARM_CPU_IMP_PHYTIUM, PHYTIUM_CPU_PART_2000AHK)
diff --git a/drivers/soc/hisilicon/l3t.c b/drivers/soc/hisilicon/l3t.c
index 35106e091098..69e65d659a35 100644
--- a/drivers/soc/hisilicon/l3t.c
+++ b/drivers/soc/hisilicon/l3t.c
@@ -264,6 +264,14 @@ static struct platform_driver hisi_l3t_driver = {
static int __init hisi_l3t_init(void)
{
+ static const struct midr_range l3t_support_list[] = {
+ MIDR_ALL_VERSIONS(MIDR_HISI_TSV200),
+ MIDR_ALL_VERSIONS(MIDR_HISI_HIP10),
+ {}
+ };
+ if (!is_midr_in_range_list(read_cpuid_id(), l3t_support_list))
+ return -ENODEV;
+
mutex_init(&l3t_mutex);
xa_init(&l3t_mapping);
--
2.43.0
2
1
From: "Chang S. Bae" <chang.seok.bae(a)intel.com>
stable inclusion
from stable-v6.6.117
commit 1811c610653c0cd21cc9add14595b7cffaeca511
category: bugfix
bugzilla: https://gitcode.com/src-openeuler/kernel/issues/11604
CVE: CVE-2025-68171
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 388eff894d6bc5f921e9bfff0e4b0ab2684a96e9 upstream.
Sean reported [1] the following splat when running KVM tests:
WARNING: CPU: 232 PID: 15391 at xfd_validate_state+0x65/0x70
Call Trace:
<TASK>
fpu__clear_user_states+0x9c/0x100
arch_do_signal_or_restart+0x142/0x210
exit_to_user_mode_loop+0x55/0x100
do_syscall_64+0x205/0x2c0
entry_SYSCALL_64_after_hwframe+0x4b/0x53
Chao further identified [2] a reproducible scenario involving signal
delivery: a non-AMX task is preempted by an AMX-enabled task which
modifies the XFD MSR.
When the non-AMX task resumes and reloads XSTATE with init values,
a warning is triggered due to a mismatch between fpstate::xfd and the
CPU's current XFD state. fpu__clear_user_states() does not currently
re-synchronize the XFD state after such preemption.
Invoke xfd_update_state() which detects and corrects the mismatch if
there is a dynamic feature.
This also benefits the sigreturn path, as fpu__restore_sig() may call
fpu__clear_user_states() when the sigframe is inaccessible.
[ dhansen: minor changelog munging ]
Closes: https://lore.kernel.org/lkml/aDCo_SczQOUaB2rS@google.com [1]
Fixes: 672365477ae8a ("x86/fpu: Update XFD state where required")
Reported-by: Sean Christopherson <seanjc(a)google.com>
Signed-off-by: Chang S. Bae <chang.seok.bae(a)intel.com>
Signed-off-by: Dave Hansen <dave.hansen(a)linux.intel.com>
Reviewed-by: Chao Gao <chao.gao(a)intel.com>
Tested-by: Chao Gao <chao.gao(a)intel.com>
Link: https://lore.kernel.org/all/aDWbctO%2FRfTGiCg3@intel.com [2]
Cc:stable@vger.kernel.org
Link: https://patch.msgid.link/20250610001700.4097-1-chang.seok.bae%40intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Zhang Kunbo <zhangkunbo(a)huawei.com>
---
arch/x86/kernel/fpu/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index 9a31f3db713c..1f0871be9d53 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -865,6 +865,9 @@ void fpu__clear_user_states(struct fpu *fpu)
!fpregs_state_valid(fpu, smp_processor_id()))
os_xrstor_supervisor(fpu->fpstate);
+ /* Ensure XFD state is in sync before reloading XSTATE */
+ xfd_update_state(fpu->fpstate);
+
/* Reset user states in registers. */
restore_fpregs_from_init_fpstate(XFEATURE_MASK_USER_RESTORE);
--
2.34.1
2
1
From: "Chang S. Bae" <chang.seok.bae(a)intel.com>
stable inclusion
from stable-v6.6.117
commit 1811c610653c0cd21cc9add14595b7cffaeca511
category: bugfix
bugzilla: https://gitcode.com/src-openeuler/kernel/issues/11604
CVE: CVE-2025-68171
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 388eff894d6bc5f921e9bfff0e4b0ab2684a96e9 upstream.
Sean reported [1] the following splat when running KVM tests:
WARNING: CPU: 232 PID: 15391 at xfd_validate_state+0x65/0x70
Call Trace:
<TASK>
fpu__clear_user_states+0x9c/0x100
arch_do_signal_or_restart+0x142/0x210
exit_to_user_mode_loop+0x55/0x100
do_syscall_64+0x205/0x2c0
entry_SYSCALL_64_after_hwframe+0x4b/0x53
Chao further identified [2] a reproducible scenario involving signal
delivery: a non-AMX task is preempted by an AMX-enabled task which
modifies the XFD MSR.
When the non-AMX task resumes and reloads XSTATE with init values,
a warning is triggered due to a mismatch between fpstate::xfd and the
CPU's current XFD state. fpu__clear_user_states() does not currently
re-synchronize the XFD state after such preemption.
Invoke xfd_update_state() which detects and corrects the mismatch if
there is a dynamic feature.
This also benefits the sigreturn path, as fpu__restore_sig() may call
fpu__clear_user_states() when the sigframe is inaccessible.
[ dhansen: minor changelog munging ]
Closes: https://lore.kernel.org/lkml/aDCo_SczQOUaB2rS@google.com [1]
Fixes: 672365477ae8a ("x86/fpu: Update XFD state where required")
Reported-by: Sean Christopherson <seanjc(a)google.com>
Signed-off-by: Chang S. Bae <chang.seok.bae(a)intel.com>
Signed-off-by: Dave Hansen <dave.hansen(a)linux.intel.com>
Reviewed-by: Chao Gao <chao.gao(a)intel.com>
Tested-by: Chao Gao <chao.gao(a)intel.com>
Link: https://lore.kernel.org/all/aDWbctO%2FRfTGiCg3@intel.com [2]
Cc:stable@vger.kernel.org
Link: https://patch.msgid.link/20250610001700.4097-1-chang.seok.bae%40intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Zhang Kunbo <zhangkunbo(a)huawei.com>
---
arch/x86/kernel/fpu/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index e0aa2dfb89d1..1885c45fa6eb 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -809,6 +809,9 @@ void fpu__clear_user_states(struct fpu *fpu)
!fpregs_state_valid(fpu, smp_processor_id()))
os_xrstor_supervisor(fpu->fpstate);
+ /* Ensure XFD state is in sync before reloading XSTATE */
+ xfd_update_state(fpu->fpstate);
+
/* Reset user states in registers. */
restore_fpregs_from_init_fpstate(XFEATURE_MASK_USER_RESTORE);
--
2.34.1
2
1
[PATCH OLK-6.6] timers: Fix NULL function pointer race in timer_shutdown_sync()
by Jinjie Ruan 22 Dec '25
by Jinjie Ruan 22 Dec '25
22 Dec '25
From: Yipeng Zou <zouyipeng(a)huawei.com>
stable inclusion
from stable-v6.6.118
commit 6665fbd7730b26d770c232b20d1b907e6a67a914
category: bugfix
bugzilla: https://atomgit.com/src-openeuler/kernel/issues/11566
CVE: CVE-2025-68214
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 20739af07383e6eb1ec59dcd70b72ebfa9ac362c upstream.
There is a race condition between timer_shutdown_sync() and timer
expiration that can lead to hitting a WARN_ON in expire_timers().
The issue occurs when timer_shutdown_sync() clears the timer function
to NULL while the timer is still running on another CPU. The race
scenario looks like this:
CPU0 CPU1
<SOFTIRQ>
lock_timer_base()
expire_timers()
base->running_timer = timer;
unlock_timer_base()
[call_timer_fn enter]
mod_timer()
...
timer_shutdown_sync()
lock_timer_base()
// For now, will not detach the timer but only clear its function to NULL
if (base->running_timer != timer)
ret = detach_if_pending(timer, base, true);
if (shutdown)
timer->function = NULL;
unlock_timer_base()
[call_timer_fn exit]
lock_timer_base()
base->running_timer = NULL;
unlock_timer_base()
...
// Now timer is pending while its function set to NULL.
// next timer trigger
<SOFTIRQ>
expire_timers()
WARN_ON_ONCE(!fn) // hit
...
lock_timer_base()
// Now timer will detach
if (base->running_timer != timer)
ret = detach_if_pending(timer, base, true);
if (shutdown)
timer->function = NULL;
unlock_timer_base()
The problem is that timer_shutdown_sync() clears the timer function
regardless of whether the timer is currently running. This can leave a
pending timer with a NULL function pointer, which triggers the
WARN_ON_ONCE(!fn) check in expire_timers().
Fix this by only clearing the timer function when actually detaching the
timer. If the timer is running, leave the function pointer intact, which is
safe because the timer will be properly detached when it finishes running.
Fixes: 0cc04e80458a ("timers: Add shutdown mechanism to the internal functions")
Signed-off-by: Yipeng Zou <zouyipeng(a)huawei.com>
Signed-off-by: Thomas Gleixner <tglx(a)linutronix.de>
Cc: stable(a)vger.kernel.org
Link: https://patch.msgid.link/20251122093942.301559-1-zouyipeng@huawei.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Jinjie Ruan <ruanjinjie(a)huawei.com>
---
kernel/time/timer.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index 63a8ce7177dd..4a2aeaa85af3 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -1413,10 +1413,11 @@ static int __try_to_del_timer_sync(struct timer_list *timer, bool shutdown)
base = lock_timer_base(timer, &flags);
- if (base->running_timer != timer)
+ if (base->running_timer != timer) {
ret = detach_if_pending(timer, base, true);
- if (shutdown)
- timer->function = NULL;
+ if (shutdown)
+ timer->function = NULL;
+ }
raw_spin_unlock_irqrestore(&base->lock, flags);
--
2.34.1
2
1
From: "Chang S. Bae" <chang.seok.bae(a)intel.com>
stable inclusion
from stable-v6.6.117
commit 1811c610653c0cd21cc9add14595b7cffaeca511
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDEWO
CVE: CVE-2025-68171
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 388eff894d6bc5f921e9bfff0e4b0ab2684a96e9 upstream.
Sean reported [1] the following splat when running KVM tests:
WARNING: CPU: 232 PID: 15391 at xfd_validate_state+0x65/0x70
Call Trace:
<TASK>
fpu__clear_user_states+0x9c/0x100
arch_do_signal_or_restart+0x142/0x210
exit_to_user_mode_loop+0x55/0x100
do_syscall_64+0x205/0x2c0
entry_SYSCALL_64_after_hwframe+0x4b/0x53
Chao further identified [2] a reproducible scenario involving signal
delivery: a non-AMX task is preempted by an AMX-enabled task which
modifies the XFD MSR.
When the non-AMX task resumes and reloads XSTATE with init values,
a warning is triggered due to a mismatch between fpstate::xfd and the
CPU's current XFD state. fpu__clear_user_states() does not currently
re-synchronize the XFD state after such preemption.
Invoke xfd_update_state() which detects and corrects the mismatch if
there is a dynamic feature.
This also benefits the sigreturn path, as fpu__restore_sig() may call
fpu__clear_user_states() when the sigframe is inaccessible.
[ dhansen: minor changelog munging ]
Closes: https://lore.kernel.org/lkml/aDCo_SczQOUaB2rS@google.com [1]
Fixes: 672365477ae8a ("x86/fpu: Update XFD state where required")
Reported-by: Sean Christopherson <seanjc(a)google.com>
Signed-off-by: Chang S. Bae <chang.seok.bae(a)intel.com>
Signed-off-by: Dave Hansen <dave.hansen(a)linux.intel.com>
Reviewed-by: Chao Gao <chao.gao(a)intel.com>
Tested-by: Chao Gao <chao.gao(a)intel.com>
Link: https://lore.kernel.org/all/aDWbctO%2FRfTGiCg3@intel.com [2]
Cc:stable@vger.kernel.org
Link: https://patch.msgid.link/20250610001700.4097-1-chang.seok.bae%40intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Zhang Kunbo <zhangkunbo(a)huawei.com>
---
arch/x86/kernel/fpu/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index 9a31f3db713c..1f0871be9d53 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -865,6 +865,9 @@ void fpu__clear_user_states(struct fpu *fpu)
!fpregs_state_valid(fpu, smp_processor_id()))
os_xrstor_supervisor(fpu->fpstate);
+ /* Ensure XFD state is in sync before reloading XSTATE */
+ xfd_update_state(fpu->fpstate);
+
/* Reset user states in registers. */
restore_fpregs_from_init_fpstate(XFEATURE_MASK_USER_RESTORE);
--
2.34.1
2
1
[openeuler:OLK-5.10 3415/3415] drivers/irqchip/irq-gic-v3-its.c:504:6: warning: no previous prototype for 'build_devid_pools'
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
Hi Jia,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: af552f9d957def499065ed6e194bcd5f0c75dbc5 [3415/3415] irqchip/gic-v3-its: Move build_devid_pools from its to acpi iort init
config: arm64-allnoconfig (https://download.01.org/0day-ci/archive/20251222/202512220941.znSG62CM-lkp@…)
compiler: aarch64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512220941.znSG62CM-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/202512220941.znSG62CM-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> drivers/irqchip/irq-gic-v3-its.c:504:6: warning: no previous prototype for 'build_devid_pools' [-Wmissing-prototypes]
504 | void build_devid_pools(void)
| ^~~~~~~~~~~~~~~~~
vim +/build_devid_pools +504 drivers/irqchip/irq-gic-v3-its.c
500
501 /*
502 * Currently we only build *one* devid pool.
503 */
> 504 void build_devid_pools(void)
505 {
506 struct its_node *its;
507
508 its = list_first_entry(&its_nodes, struct its_node, entry);
509 if (readl_relaxed(its->base + GITS_IIDR) != 0x00051736)
510 return;
511
512 if (!probe_devid_pool_one())
513 rsv_devid_pool_cap = true;
514
515 if (rsv_devid_pool_cap)
516 pr_info("ITS: reserved device id pools enabled\n");
517 }
518
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
From: Vladimir Riabchun <ferr.lambarginio(a)gmail.com>
stable inclusion
from stable-v6.6.119
commit e81e6d6d99b16dae11adbeda5c996317942a940c
category: bugfix
bugzilla: http://gitcode.com/src-openeuler/kernel/issues/11609
CVE: CVE-2025-68173
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 4099b98203d6b33d990586542fa5beee408032a3 ]
A soft lockup was observed when loading amdgpu module.
If a module has a lot of tracable functions, multiple calls
to kallsyms_lookup can spend too much time in RCU critical
section and with disabled preemption, causing kernel panic.
This is the same issue that was fixed in
commit d0b24b4e91fc ("ftrace: Prevent RCU stall on PREEMPT_VOLUNTARY
kernels") and commit 42ea22e754ba ("ftrace: Add cond_resched() to
ftrace_graph_set_hash()").
Fix it the same way by adding cond_resched() in ftrace_module_enable.
Link: https://lore.kernel.org/aMQD9_lxYmphT-up@vova-pc
Signed-off-by: Vladimir Riabchun <ferr.lambarginio(a)gmail.com>
Signed-off-by: Steven Rostedt (Google) <rostedt(a)goodmis.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Tengda Wu <wutengda2(a)huawei.com>
---
kernel/trace/ftrace.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 15785a729a0c..398992597685 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -6873,6 +6873,8 @@ void ftrace_module_enable(struct module *mod)
if (!within_module(rec->ip, mod))
break;
+ cond_resched();
+
/* Weak functions should still be ignored */
if (!test_for_valid_rec(rec)) {
/* Clear all other flags. Should not be enabled anyway */
--
2.34.1
2
1
[PATCH OLK-6.6] erofs: avoid infinite loops due to corrupted subpage compact indexes
by Zizhi Wo 22 Dec '25
by Zizhi Wo 22 Dec '25
22 Dec '25
From: Gao Xiang <hsiangkao(a)linux.alibaba.com>
stable inclusion
from stable-v6.17.6
commit 8675447a8794983f2b7e694b378112772c17635e
category: bugfix
bugzilla: https://atomgit.com/src-openeuler/kernel/issues/11522
CVE: CVE-2025-68251
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit e13d315ae077bb7c3c6027cc292401bc0f4ec683 ]
Robert reported an infinite loop observed by two crafted images.
The root cause is that `clusterofs` can be larger than `lclustersize`
for !NONHEAD `lclusters` in corrupted subpage compact indexes, e.g.:
blocksize = lclustersize = 512 lcn = 6 clusterofs = 515
Move the corresponding check for full compress indexes to
`z_erofs_load_lcluster_from_disk()` to also cover subpage compact
compress indexes.
It also fixes the position of `m->type >= Z_EROFS_LCLUSTER_TYPE_MAX`
check, since it should be placed right after
`z_erofs_load_{compact,full}_lcluster()`.
Fixes: 8d2517aaeea3 ("erofs: fix up compacted indexes for block size < 4096")
Fixes: 1a5223c182fd ("erofs: do sanity check on m->type in z_erofs_load_compact_lcluster()")
Reported-by: Robert Morris <rtm(a)csail.mit.edu>
Closes: https://lore.kernel.org/r/35167.1760645886@localhost
Reviewed-by: Hongbo Li <lihongbo22(a)huawei.com>
Signed-off-by: Gao Xiang <hsiangkao(a)linux.alibaba.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Conflicts:
fs/erofs/zmap.c
[1. z_erofs_load_full_lcluster() function conflicts due to commit:
d69189428d50 ("erofs: clean up z_erofs_load_full_lcluster()");
2. z_erofs_load_lcluster_from_disk() function conflicts due to commit:
1a5223c182fd ("erofs: do sanity check on m->type in
z_erofs_load_compact_lcluster()");
3. "z_lclusterbits" -> "z_logical_clusterbits" due to commit:
efb2aef569b3 ("erofs: add encoded extent on-disk definition");
Both are not affect this patch.]
Signed-off-by: Zizhi Wo <wozizhi(a)huawei.com>
---
fs/erofs/zmap.c | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c
index 76566c2cbf63..0603ccd00b3c 100644
--- a/fs/erofs/zmap.c
+++ b/fs/erofs/zmap.c
@@ -67,10 +67,6 @@ static int z_erofs_load_full_lcluster(struct z_erofs_maprecorder *m,
if (advise & Z_EROFS_LI_PARTIAL_REF)
m->partialref = true;
m->clusterofs = le16_to_cpu(di->di_clusterofs);
- if (m->clusterofs >= 1 << vi->z_logical_clusterbits) {
- DBG_BUGON(1);
- return -EFSCORRUPTED;
- }
m->pblk = le32_to_cpu(di->di_u.blkaddr);
break;
default:
@@ -276,14 +272,25 @@ static int z_erofs_load_compact_lcluster(struct z_erofs_maprecorder *m,
static int z_erofs_load_lcluster_from_disk(struct z_erofs_maprecorder *m,
unsigned int lcn, bool lookahead)
{
- switch (EROFS_I(m->inode)->datalayout) {
- case EROFS_INODE_COMPRESSED_FULL:
- return z_erofs_load_full_lcluster(m, lcn);
- case EROFS_INODE_COMPRESSED_COMPACT:
- return z_erofs_load_compact_lcluster(m, lcn, lookahead);
- default:
- return -EINVAL;
+ struct erofs_inode *vi = EROFS_I(m->inode);
+ int err;
+
+ if (vi->datalayout == EROFS_INODE_COMPRESSED_COMPACT) {
+ err = z_erofs_load_compact_lcluster(m, lcn, lookahead);
+ } else {
+ DBG_BUGON(vi->datalayout != EROFS_INODE_COMPRESSED_FULL);
+ err = z_erofs_load_full_lcluster(m, lcn);
}
+ if (err)
+ return err;
+
+ if (m->type != Z_EROFS_LCLUSTER_TYPE_NONHEAD &&
+ m->clusterofs >= (1 << vi->z_logical_clusterbits)) {
+ DBG_BUGON(1);
+ return -EFSCORRUPTED;
+ }
+
+ return 0;
}
static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m,
--
2.39.2
2
1
From: "Chang S. Bae" <chang.seok.bae(a)intel.com>
stable inclusion
from stable-v6.6.117
commit 1811c610653c0cd21cc9add14595b7cffaeca511
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDEWO
CVE: CVE-2025-68171
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
commit 388eff894d6bc5f921e9bfff0e4b0ab2684a96e9 upstream.
Sean reported [1] the following splat when running KVM tests:
WARNING: CPU: 232 PID: 15391 at xfd_validate_state+0x65/0x70
Call Trace:
<TASK>
fpu__clear_user_states+0x9c/0x100
arch_do_signal_or_restart+0x142/0x210
exit_to_user_mode_loop+0x55/0x100
do_syscall_64+0x205/0x2c0
entry_SYSCALL_64_after_hwframe+0x4b/0x53
Chao further identified [2] a reproducible scenario involving signal
delivery: a non-AMX task is preempted by an AMX-enabled task which
modifies the XFD MSR.
When the non-AMX task resumes and reloads XSTATE with init values,
a warning is triggered due to a mismatch between fpstate::xfd and the
CPU's current XFD state. fpu__clear_user_states() does not currently
re-synchronize the XFD state after such preemption.
Invoke xfd_update_state() which detects and corrects the mismatch if
there is a dynamic feature.
This also benefits the sigreturn path, as fpu__restore_sig() may call
fpu__clear_user_states() when the sigframe is inaccessible.
[ dhansen: minor changelog munging ]
Closes: https://lore.kernel.org/lkml/aDCo_SczQOUaB2rS@google.com [1]
Fixes: 672365477ae8a ("x86/fpu: Update XFD state where required")
Reported-by: Sean Christopherson <seanjc(a)google.com>
Signed-off-by: Chang S. Bae <chang.seok.bae(a)intel.com>
Signed-off-by: Dave Hansen <dave.hansen(a)linux.intel.com>
Reviewed-by: Chao Gao <chao.gao(a)intel.com>
Tested-by: Chao Gao <chao.gao(a)intel.com>
Link: https://lore.kernel.org/all/aDWbctO%2FRfTGiCg3@intel.com [2]
Cc:stable@vger.kernel.org
Link: https://patch.msgid.link/20250610001700.4097-1-chang.seok.bae%40intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Zhang Kunbo <zhangkunbo(a)huawei.com>
---
arch/x86/kernel/fpu/core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/arch/x86/kernel/fpu/core.c b/arch/x86/kernel/fpu/core.c
index e0aa2dfb89d1..1885c45fa6eb 100644
--- a/arch/x86/kernel/fpu/core.c
+++ b/arch/x86/kernel/fpu/core.c
@@ -809,6 +809,9 @@ void fpu__clear_user_states(struct fpu *fpu)
!fpregs_state_valid(fpu, smp_processor_id()))
os_xrstor_supervisor(fpu->fpstate);
+ /* Ensure XFD state is in sync before reloading XSTATE */
+ xfd_update_state(fpu->fpstate);
+
/* Reset user states in registers. */
restore_fpregs_from_init_fpstate(XFEATURE_MASK_USER_RESTORE);
--
2.34.1
2
1
[PATCH OLK-6.6] erofs: avoid infinite loops due to corrupted subpage compact indexes
by Zizhi Wo 22 Dec '25
by Zizhi Wo 22 Dec '25
22 Dec '25
From: Gao Xiang <hsiangkao(a)linux.alibaba.com>
stable inclusion
from stable-v6.17.6
commit 8675447a8794983f2b7e694b378112772c17635e
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDF3Q
CVE: CVE-2025-68251
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit e13d315ae077bb7c3c6027cc292401bc0f4ec683 ]
Robert reported an infinite loop observed by two crafted images.
The root cause is that `clusterofs` can be larger than `lclustersize`
for !NONHEAD `lclusters` in corrupted subpage compact indexes, e.g.:
blocksize = lclustersize = 512 lcn = 6 clusterofs = 515
Move the corresponding check for full compress indexes to
`z_erofs_load_lcluster_from_disk()` to also cover subpage compact
compress indexes.
It also fixes the position of `m->type >= Z_EROFS_LCLUSTER_TYPE_MAX`
check, since it should be placed right after
`z_erofs_load_{compact,full}_lcluster()`.
Fixes: 8d2517aaeea3 ("erofs: fix up compacted indexes for block size < 4096")
Fixes: 1a5223c182fd ("erofs: do sanity check on m->type in z_erofs_load_compact_lcluster()")
Reported-by: Robert Morris <rtm(a)csail.mit.edu>
Closes: https://lore.kernel.org/r/35167.1760645886@localhost
Reviewed-by: Hongbo Li <lihongbo22(a)huawei.com>
Signed-off-by: Gao Xiang <hsiangkao(a)linux.alibaba.com>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Conflicts:
fs/erofs/zmap.c
[1. z_erofs_load_full_lcluster() function conflicts due to commit:
d69189428d50 ("erofs: clean up z_erofs_load_full_lcluster()");
2. z_erofs_load_lcluster_from_disk() function conflicts due to commit:
1a5223c182fd ("erofs: do sanity check on m->type in
z_erofs_load_compact_lcluster()");
3. "z_lclusterbits" -> "z_logical_clusterbits" due to commit:
efb2aef569b3 ("erofs: add encoded extent on-disk definition");
Both are not affect this patch.]
Signed-off-by: Zizhi Wo <wozizhi(a)huawei.com>
---
fs/erofs/zmap.c | 29 ++++++++++++++++++-----------
1 file changed, 18 insertions(+), 11 deletions(-)
diff --git a/fs/erofs/zmap.c b/fs/erofs/zmap.c
index 76566c2cbf63..0603ccd00b3c 100644
--- a/fs/erofs/zmap.c
+++ b/fs/erofs/zmap.c
@@ -67,10 +67,6 @@ static int z_erofs_load_full_lcluster(struct z_erofs_maprecorder *m,
if (advise & Z_EROFS_LI_PARTIAL_REF)
m->partialref = true;
m->clusterofs = le16_to_cpu(di->di_clusterofs);
- if (m->clusterofs >= 1 << vi->z_logical_clusterbits) {
- DBG_BUGON(1);
- return -EFSCORRUPTED;
- }
m->pblk = le32_to_cpu(di->di_u.blkaddr);
break;
default:
@@ -276,14 +272,25 @@ static int z_erofs_load_compact_lcluster(struct z_erofs_maprecorder *m,
static int z_erofs_load_lcluster_from_disk(struct z_erofs_maprecorder *m,
unsigned int lcn, bool lookahead)
{
- switch (EROFS_I(m->inode)->datalayout) {
- case EROFS_INODE_COMPRESSED_FULL:
- return z_erofs_load_full_lcluster(m, lcn);
- case EROFS_INODE_COMPRESSED_COMPACT:
- return z_erofs_load_compact_lcluster(m, lcn, lookahead);
- default:
- return -EINVAL;
+ struct erofs_inode *vi = EROFS_I(m->inode);
+ int err;
+
+ if (vi->datalayout == EROFS_INODE_COMPRESSED_COMPACT) {
+ err = z_erofs_load_compact_lcluster(m, lcn, lookahead);
+ } else {
+ DBG_BUGON(vi->datalayout != EROFS_INODE_COMPRESSED_FULL);
+ err = z_erofs_load_full_lcluster(m, lcn);
}
+ if (err)
+ return err;
+
+ if (m->type != Z_EROFS_LCLUSTER_TYPE_NONHEAD &&
+ m->clusterofs >= (1 << vi->z_logical_clusterbits)) {
+ DBG_BUGON(1);
+ return -EFSCORRUPTED;
+ }
+
+ return 0;
}
static int z_erofs_extent_lookback(struct z_erofs_maprecorder *m,
--
2.39.2
2
1
From: Vladimir Riabchun <ferr.lambarginio(a)gmail.com>
stable inclusion
from stable-v6.6.119
commit e81e6d6d99b16dae11adbeda5c996317942a940c
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/IDDEWE
CVE: CVE-2025-68173
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 4099b98203d6b33d990586542fa5beee408032a3 ]
A soft lockup was observed when loading amdgpu module.
If a module has a lot of tracable functions, multiple calls
to kallsyms_lookup can spend too much time in RCU critical
section and with disabled preemption, causing kernel panic.
This is the same issue that was fixed in
commit d0b24b4e91fc ("ftrace: Prevent RCU stall on PREEMPT_VOLUNTARY
kernels") and commit 42ea22e754ba ("ftrace: Add cond_resched() to
ftrace_graph_set_hash()").
Fix it the same way by adding cond_resched() in ftrace_module_enable.
Link: https://lore.kernel.org/aMQD9_lxYmphT-up@vova-pc
Signed-off-by: Vladimir Riabchun <ferr.lambarginio(a)gmail.com>
Signed-off-by: Steven Rostedt (Google) <rostedt(a)goodmis.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Tengda Wu <wutengda2(a)huawei.com>
---
kernel/trace/ftrace.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 15785a729a0c..398992597685 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -6873,6 +6873,8 @@ void ftrace_module_enable(struct module *mod)
if (!within_module(rec->ip, mod))
break;
+ cond_resched();
+
/* Weak functions should still be ignored */
if (!test_for_valid_rec(rec)) {
/* Clear all other flags. Should not be enabled anyway */
--
2.34.1
2
1
[openeuler:OLK-5.10 3420/3420] drivers/cpufreq/intel_pstate.c:1473:6: sparse: sparse: symbol 'notify_hwp_interrupt' was not declared. Should it be static?
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: e217d5958ee378eb304fb0b4eb6fcb551e555842 [3420/3420] cpufreq: intel_pstate: Process HWP Guaranteed change notification
config: x86_64-randconfig-123-20251218 (https://download.01.org/0day-ci/archive/20251222/202512220826.pYRgbdJv-lkp@…)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512220826.pYRgbdJv-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/202512220826.pYRgbdJv-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/cpufreq/intel_pstate.c:1473:6: sparse: sparse: symbol 'notify_hwp_interrupt' was not declared. Should it be static?
vim +/notify_hwp_interrupt +1473 drivers/cpufreq/intel_pstate.c
1472
> 1473 void notify_hwp_interrupt(void)
1474 {
1475 unsigned int this_cpu = smp_processor_id();
1476 struct cpudata *cpudata;
1477 unsigned long flags;
1478 u64 value;
1479
1480 if (!READ_ONCE(hwp_active) || !boot_cpu_has(X86_FEATURE_HWP_NOTIFY))
1481 return;
1482
1483 rdmsrl_safe(MSR_HWP_STATUS, &value);
1484 if (!(value & 0x01))
1485 return;
1486
1487 spin_lock_irqsave(&hwp_notify_lock, flags);
1488
1489 if (!cpumask_test_cpu(this_cpu, &hwp_intr_enable_mask))
1490 goto ack_intr;
1491
1492 /*
1493 * Currently we never free all_cpu_data. And we can't reach here
1494 * without this allocated. But for safety for future changes, added
1495 * check.
1496 */
1497 if (unlikely(!READ_ONCE(all_cpu_data)))
1498 goto ack_intr;
1499
1500 /*
1501 * The free is done during cleanup, when cpufreq registry is failed.
1502 * We wouldn't be here if it fails on init or switch status. But for
1503 * future changes, added check.
1504 */
1505 cpudata = READ_ONCE(all_cpu_data[this_cpu]);
1506 if (unlikely(!cpudata))
1507 goto ack_intr;
1508
1509 schedule_delayed_work(&cpudata->hwp_notify_work, msecs_to_jiffies(10));
1510
1511 spin_unlock_irqrestore(&hwp_notify_lock, flags);
1512
1513 return;
1514
1515 ack_intr:
1516 wrmsrl_safe(MSR_HWP_STATUS, 0);
1517 spin_unlock_irqrestore(&hwp_notify_lock, flags);
1518 }
1519
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-5.10 3415/3415] arch/arm64/kernel/fpsimd.c:158:12: warning: 'get_sve_default_vl' defined but not used
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
Hi Mark,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: bf04fdf1fcc0040e6c81b413cdae84c0eb9212b9 [3415/3415] arm64/sve: Track vector lengths for tasks in an array
config: arm64-allnoconfig (https://download.01.org/0day-ci/archive/20251222/202512220837.hZSDu6Y4-lkp@…)
compiler: aarch64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512220837.hZSDu6Y4-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/202512220837.hZSDu6Y4-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/arm64/kernel/fpsimd.c:158:12: warning: 'get_sve_default_vl' defined but not used [-Wunused-function]
158 | static int get_sve_default_vl(void)
| ^~~~~~~~~~~~~~~~~~
vim +/get_sve_default_vl +158 arch/arm64/kernel/fpsimd.c
1e570f512cbdc5 Dave Martin 2020-06-10 157
1e570f512cbdc5 Dave Martin 2020-06-10 @158 static int get_sve_default_vl(void)
1e570f512cbdc5 Dave Martin 2020-06-10 159 {
68da302c8ae303 Mark Brown 2023-11-28 160 return get_default_vl(ARM64_VEC_SVE);
1e570f512cbdc5 Dave Martin 2020-06-10 161 }
79ab047c75d6a9 Dave Martin 2017-10-31 162
:::::: The code at line 158 was first introduced by commit
:::::: 1e570f512cbdc5e9e401ba640d9827985c1bea1e arm64/sve: Eliminate data races on sve_default_vl
:::::: TO: Dave Martin <Dave.Martin(a)arm.com>
:::::: CC: Will Deacon <will(a)kernel.org>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-5.10 3415/3415] arch/arm64/mm/init.c:730:6: warning: no previous prototype for 'ascend_enable_all_features'
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
Hi Wang,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: 66ae8ddda388386daea0623a65ea2ac85c24ca00 [3415/3415] ascend/arm64: Add ascend_enable_all kernel parameter
config: arm64-allnoconfig (https://download.01.org/0day-ci/archive/20251222/202512220606.726hmC01-lkp@…)
compiler: aarch64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512220606.726hmC01-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/202512220606.726hmC01-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/arm64/mm/init.c:730:6: warning: no previous prototype for 'ascend_enable_all_features' [-Wmissing-prototypes]
730 | void ascend_enable_all_features(void)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
vim +/ascend_enable_all_features +730 arch/arm64/mm/init.c
729
> 730 void ascend_enable_all_features(void)
731 {
732 if (IS_ENABLED(CONFIG_ASCEND_DVPP_MMAP))
733 enable_mmap_dvpp = 1;
734
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-5.10 3415/3415] arch/arm64/kernel/ipi_nmi.c:40:9: error: implicit declaration of function 'printk_safe_exit'; did you mean 'printk_nmi_exit'?
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
Hi Li,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-5.10
head: 1588d318a9e388d05b6cf5e2a63134c8beb6a355
commit: f86d165bfe5f6248743774bb07af0bd7cff12443 [3415/3415] arm64: Add non nmi ipi backtrace support
config: arm64-allnoconfig (https://download.01.org/0day-ci/archive/20251222/202512220254.DKUPaC7y-lkp@…)
compiler: aarch64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512220254.DKUPaC7y-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/202512220254.DKUPaC7y-lkp@intel.com/
All errors (new ones prefixed by >>):
arch/arm64/kernel/ipi_nmi.c: In function 'ipi_cpu_backtrace':
arch/arm64/kernel/ipi_nmi.c:38:9: error: implicit declaration of function 'printk_safe_enter'; did you mean 'printk_nmi_enter'? [-Werror=implicit-function-declaration]
38 | printk_safe_enter();
| ^~~~~~~~~~~~~~~~~
| printk_nmi_enter
>> arch/arm64/kernel/ipi_nmi.c:40:9: error: implicit declaration of function 'printk_safe_exit'; did you mean 'printk_nmi_exit'? [-Werror=implicit-function-declaration]
40 | printk_safe_exit();
| ^~~~~~~~~~~~~~~~
| printk_nmi_exit
cc1: some warnings being treated as errors
vim +40 arch/arm64/kernel/ipi_nmi.c
35
36 static void ipi_cpu_backtrace(void *info)
37 {
> 38 printk_safe_enter();
39 nmi_cpu_backtrace(get_irq_regs());
> 40 printk_safe_exit();
41 }
42
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-6.6 3557/3557] drivers/arm/mm_monitor/spe-decoder/arm-spe-pkt-decoder.c:43:35: sparse: sparse: cast to restricted __le16
by kernel test robot 22 Dec '25
by kernel test robot 22 Dec '25
22 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: b8a759002c48f227d03084fb6b6213a3beaa44e3 [3557/3557] mm_monitor/mm_spe: Introduce standalone SPE profiling framework
config: arm64-randconfig-r132-20251218 (https://download.01.org/0day-ci/archive/20251222/202512220002.7l3mjSAD-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251222/202512220002.7l3mjSAD-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/202512220002.7l3mjSAD-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> drivers/arm/mm_monitor/spe-decoder/arm-spe-pkt-decoder.c:43:35: sparse: sparse: cast to restricted __le16
>> drivers/arm/mm_monitor/spe-decoder/arm-spe-pkt-decoder.c:46:35: sparse: sparse: cast to restricted __le32
>> drivers/arm/mm_monitor/spe-decoder/arm-spe-pkt-decoder.c:49:35: sparse: sparse: cast to restricted __le64
vim +43 drivers/arm/mm_monitor/spe-decoder/arm-spe-pkt-decoder.c
26
27 static int arm_spe_get_payload(const unsigned char *buf, size_t len,
28 unsigned char ext_hdr,
29 struct arm_spe_pkt *packet)
30 {
31 size_t payload_len = arm_spe_payload_len(buf[ext_hdr]);
32
33 if (len < 1 + ext_hdr + payload_len)
34 return ARM_SPE_NEED_MORE_BYTES;
35
36 buf += 1 + ext_hdr;
37
38 switch (payload_len) {
39 case 1:
40 packet->payload = *(uint8_t *)buf;
41 break;
42 case 2:
> 43 packet->payload = le16_to_cpu(*(uint16_t *)buf);
44 break;
45 case 4:
> 46 packet->payload = le32_to_cpu(*(uint32_t *)buf);
47 break;
48 case 8:
> 49 packet->payload = le64_to_cpu(*(uint64_t *)buf);
50 break;
51 default:
52 return ARM_SPE_BAD_PACKET;
53 }
54
55 return 1 + ext_hdr + payload_len;
56 }
57
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:openEuler-1.0-LTS 1942/1942] arch/arm64/kernel/vdso/gettimeofday.c:268:13: warning: no previous prototype for '__kernel_clock_gettime'
by kernel test robot 21 Dec '25
by kernel test robot 21 Dec '25
21 Dec '25
Hi Andrew,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head: 4e9c55920995d70b3e88b60c69753df54b03fdf4
commit: f43f336031282e8ea7e5f7f887c5a6ff7b9c99b0 [1942/1942] arm64:vdso: Rewrite gettimeofday into C.
config: arm64-allnoconfig (https://download.01.org/0day-ci/archive/20251221/202512212208.f4EG9uym-lkp@…)
compiler: aarch64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251221/202512212208.f4EG9uym-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/202512212208.f4EG9uym-lkp@intel.com/
Note: functions only called from assembly code should be annotated with the asmlinkage attribute
All warnings (new ones prefixed by >>):
>> arch/arm64/kernel/vdso/gettimeofday.c:268:13: warning: no previous prototype for '__kernel_clock_gettime' [-Wmissing-prototypes]
268 | notrace int __kernel_clock_gettime(clockid_t clock, struct timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/vdso/gettimeofday.c:302:13: warning: no previous prototype for '__kernel_gettimeofday' [-Wmissing-prototypes]
302 | notrace int __kernel_gettimeofday(struct timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kernel/vdso/gettimeofday.c:325:5: warning: no previous prototype for '__kernel_clock_getres' [-Wmissing-prototypes]
325 | int __kernel_clock_getres(clockid_t clock_id, struct timespec *res)
| ^~~~~~~~~~~~~~~~~~~~~
--
>> arch/arm64/kernel/vdso/gettimeofday.c:268:13: warning: no previous prototype for '__kernel_clock_gettime' [-Wmissing-prototypes]
268 | notrace int __kernel_clock_gettime(clockid_t clock, struct timespec *ts)
| ^~~~~~~~~~~~~~~~~~~~~~
arch/arm64/kernel/vdso/gettimeofday.c:302:13: warning: no previous prototype for '__kernel_gettimeofday' [-Wmissing-prototypes]
302 | notrace int __kernel_gettimeofday(struct timeval *tv, struct timezone *tz)
| ^~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/kernel/vdso/gettimeofday.c:325:5: warning: no previous prototype for '__kernel_clock_getres' [-Wmissing-prototypes]
325 | int __kernel_clock_getres(clockid_t clock_id, struct timespec *res)
| ^~~~~~~~~~~~~~~~~~~~~
vim +/__kernel_clock_gettime +268 arch/arm64/kernel/vdso/gettimeofday.c
267
> 268 notrace int __kernel_clock_gettime(clockid_t clock, struct timespec *ts)
269 {
270 const struct vdso_data *vd = &_vdso_data;
271
272 switch (clock) {
273 case CLOCK_REALTIME:
274 if (do_realtime(vd, ts))
275 goto fallback;
276 break;
277 case CLOCK_MONOTONIC:
278 if (do_monotonic(vd, ts))
279 goto fallback;
280 break;
281 case CLOCK_MONOTONIC_RAW:
282 if (do_monotonic_raw(vd, ts))
283 goto fallback;
284 break;
285 case CLOCK_REALTIME_COARSE:
286 do_realtime_coarse(vd, ts);
287 break;
288 case CLOCK_MONOTONIC_COARSE:
289 do_monotonic_coarse(vd, ts);
290 break;
291 default:
292 goto fallback;
293 }
294
295 return 0;
296 fallback:
297 return clock_gettime_fallback(clock, ts);
298 }
299
300
301
302 notrace int __kernel_gettimeofday(struct timeval *tv, struct timezone *tz)
303 {
304 const struct vdso_data *vd = &_vdso_data;
305
306 if (likely(tv != NULL)) {
307 struct timespec ts;
308
309 if (do_realtime(vd, &ts))
310 return gettimeofday_fallback(tv, tz);
311
312 tv->tv_sec = ts.tv_sec;
313 tv->tv_usec = ts.tv_nsec / 1000;
314 }
315
316 if (unlikely(tz != NULL)) {
317 tz->tz_minuteswest = vd->tz_minuteswest;
318 tz->tz_dsttime = vd->tz_dsttime;
319 }
320
321 return 0;
322 }
323
324
> 325 int __kernel_clock_getres(clockid_t clock_id, struct timespec *res)
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
From: 岳智超 <yuezhichao1(a)h-partners.com>
driver inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IDDE3S?from=project-issue
CVE: NA
--------------------------------
Add thread irq for io queue
Signed-off-by: 岳智超 <yuezhichao1(a)h-partners.com>
---
drivers/scsi/hisi_raid/hiraid.h | 1 +
drivers/scsi/hisi_raid/hiraid_main.c | 60 ++++++++++++++++++++++++++--
2 files changed, 58 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/hisi_raid/hiraid.h b/drivers/scsi/hisi_raid/hiraid.h
index 04b2e25..b786066 100644
--- a/drivers/scsi/hisi_raid/hiraid.h
+++ b/drivers/scsi/hisi_raid/hiraid.h
@@ -686,6 +686,7 @@ struct hiraid_queue {
atomic_t inflight;
void *sense_buffer_virt;
dma_addr_t sense_buffer_phy;
+ s32 pci_irq;
struct dma_pool *prp_small_pool;
};
diff --git a/drivers/scsi/hisi_raid/hiraid_main.c b/drivers/scsi/hisi_raid/hiraid_main.c
index 2f33339..ee5cb10 100644
--- a/drivers/scsi/hisi_raid/hiraid_main.c
+++ b/drivers/scsi/hisi_raid/hiraid_main.c
@@ -107,6 +107,13 @@ static u32 log_debug_switch;
module_param(log_debug_switch, uint, 0644);
MODULE_PARM_DESC(log_debug_switch, "set log state, default zero for switch off");
+static bool threaded_irq = true;
+module_param(threaded_irq, bool, 0444);
+MODULE_PARM_DESC(threaded_irq, "use threaded irq for io queue, default on");
+
+static u32 poll_delay_min = 9;
+static u32 poll_delay_max = 19;
+
static int extra_pool_num_set(const char *val, const struct kernel_param *kp)
{
u8 n = 0;
@@ -152,7 +159,7 @@ static struct workqueue_struct *work_queue;
__func__, ##__VA_ARGS__); \
} while (0)
-#define HIRAID_DRV_VERSION "1.1.0.1"
+#define HIRAID_DRV_VERSION "1.1.0.2"
#define ADMIN_TIMEOUT (admin_tmout * HZ)
#define USRCMD_TIMEOUT (180 * HZ)
@@ -1305,6 +1312,7 @@ static int hiraid_alloc_queue(struct hiraid_dev *hdev, u16 qid, u16 depth)
hiraidq->q_depth = depth;
hiraidq->qid = qid;
hiraidq->cq_vector = -1;
+ hiraidq->pci_irq = -1;
hdev->queue_count++;
return 0;
@@ -1631,6 +1639,39 @@ static irqreturn_t hiraid_handle_irq(int irq, void *data)
return ret;
}
+static irqreturn_t hiraid_io_poll(int irq, void *data)
+{
+ struct hiraid_queue *hiraidq = data;
+ irqreturn_t ret = IRQ_NONE;
+ u16 start, end;
+
+ do {
+ spin_lock(&hiraidq->cq_lock);
+ hiraid_process_cq(hiraidq, &start, &end, -1);
+ hiraidq->last_cq_head = hiraidq->cq_head;
+ spin_unlock(&hiraidq->cq_lock);
+
+ if (start != end) {
+ hiraid_complete_cqes(hiraidq, start, end);
+ ret = IRQ_HANDLED;
+ }
+ usleep_range(poll_delay_min, poll_delay_max);
+ } while (start != end);
+ enable_irq(hiraidq->pci_irq);
+ return ret;
+}
+
+static irqreturn_t hiraid_io_irq(int irq, void *data)
+{
+ struct hiraid_queue *q = data;
+
+ if (hiraid_cqe_pending(q)) {
+ disable_irq_nosync(q->pci_irq);
+ return IRQ_WAKE_THREAD;
+ }
+ return IRQ_NONE;
+}
+
static int hiraid_setup_admin_queue(struct hiraid_dev *hdev)
{
struct hiraid_queue *adminq = &hdev->queues[0];
@@ -1666,9 +1707,11 @@ static int hiraid_setup_admin_queue(struct hiraid_dev *hdev)
adminq, "hiraid%d_q%d", hdev->instance, adminq->qid);
if (ret) {
adminq->cq_vector = -1;
+ adminq->pci_irq = -1;
return ret;
}
+ adminq->pci_irq = pci_irq_vector(hdev->pdev, adminq->cq_vector);
hiraid_init_queue(adminq, 0);
dev_info(hdev->dev, "setup admin queue success, queuecount[%d] online[%d] pagesize[%d]\n",
@@ -1937,14 +1980,23 @@ static int hiraid_create_queue(struct hiraid_queue *hiraidq, u16 qid)
goto delete_cq;
hiraidq->cq_vector = cq_vector;
- ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_handle_irq, NULL,
- hiraidq, "hiraid%d_q%d", hdev->instance, qid);
+
+ if (threaded_irq)
+ ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_io_irq,
+ hiraid_io_poll, hiraidq, "hiraid%d_q%d",
+ hdev->instance, qid);
+ else
+ ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_handle_irq,
+ NULL, hiraidq, "hiraid%d_q%d",
+ hdev->instance, qid);
if (ret) {
hiraidq->cq_vector = -1;
+ hiraidq->pci_irq = -1;
dev_err(hdev->dev, "request queue[%d] irq failed\n", qid);
goto delete_sq;
}
+ hiraidq->pci_irq = pci_irq_vector(hdev->pdev, hiraidq->cq_vector);
hiraid_init_queue(hiraidq, qid);
return 0;
@@ -2094,10 +2146,12 @@ static int hiraid_setup_io_queues(struct hiraid_dev *hdev)
adminq, "hiraid%d_q%d", hdev->instance, adminq->qid);
if (ret) {
dev_err(hdev->dev, "request admin irq failed\n");
+ adminq->pci_irq = -1;
adminq->cq_vector = -1;
return ret;
}
+ adminq->pci_irq = pci_irq_vector(hdev->pdev, adminq->cq_vector);
hdev->online_queues++;
for (i = hdev->queue_count; i <= hdev->max_qid; i++) {
--
2.45.1.windows.1
2
1
From: 岳智超 <yuezhichao1(a)h-partners.com>
driver inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IDDE4S?from=project-issue
CVE: NA
--------------------------------
Add thread irq for io queue
Signed-off-by: 岳智超 <yuezhichao1(a)h-partners.com>
---
drivers/scsi/hisi_raid/hiraid.h | 1 +
drivers/scsi/hisi_raid/hiraid_main.c | 60 ++++++++++++++++++++++++++--
2 files changed, 58 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/hisi_raid/hiraid.h b/drivers/scsi/hisi_raid/hiraid.h
index 04b2e25..b786066 100644
--- a/drivers/scsi/hisi_raid/hiraid.h
+++ b/drivers/scsi/hisi_raid/hiraid.h
@@ -686,6 +686,7 @@ struct hiraid_queue {
atomic_t inflight;
void *sense_buffer_virt;
dma_addr_t sense_buffer_phy;
+ s32 pci_irq;
struct dma_pool *prp_small_pool;
};
diff --git a/drivers/scsi/hisi_raid/hiraid_main.c b/drivers/scsi/hisi_raid/hiraid_main.c
index 2f33339..ee5cb10 100644
--- a/drivers/scsi/hisi_raid/hiraid_main.c
+++ b/drivers/scsi/hisi_raid/hiraid_main.c
@@ -107,6 +107,13 @@ static u32 log_debug_switch;
module_param(log_debug_switch, uint, 0644);
MODULE_PARM_DESC(log_debug_switch, "set log state, default zero for switch off");
+static bool threaded_irq = true;
+module_param(threaded_irq, bool, 0444);
+MODULE_PARM_DESC(threaded_irq, "use threaded irq for io queue, default on");
+
+static u32 poll_delay_min = 9;
+static u32 poll_delay_max = 19;
+
static int extra_pool_num_set(const char *val, const struct kernel_param *kp)
{
u8 n = 0;
@@ -152,7 +159,7 @@ static struct workqueue_struct *work_queue;
__func__, ##__VA_ARGS__); \
} while (0)
-#define HIRAID_DRV_VERSION "1.1.0.1"
+#define HIRAID_DRV_VERSION "1.1.0.2"
#define ADMIN_TIMEOUT (admin_tmout * HZ)
#define USRCMD_TIMEOUT (180 * HZ)
@@ -1305,6 +1312,7 @@ static int hiraid_alloc_queue(struct hiraid_dev *hdev, u16 qid, u16 depth)
hiraidq->q_depth = depth;
hiraidq->qid = qid;
hiraidq->cq_vector = -1;
+ hiraidq->pci_irq = -1;
hdev->queue_count++;
return 0;
@@ -1631,6 +1639,39 @@ static irqreturn_t hiraid_handle_irq(int irq, void *data)
return ret;
}
+static irqreturn_t hiraid_io_poll(int irq, void *data)
+{
+ struct hiraid_queue *hiraidq = data;
+ irqreturn_t ret = IRQ_NONE;
+ u16 start, end;
+
+ do {
+ spin_lock(&hiraidq->cq_lock);
+ hiraid_process_cq(hiraidq, &start, &end, -1);
+ hiraidq->last_cq_head = hiraidq->cq_head;
+ spin_unlock(&hiraidq->cq_lock);
+
+ if (start != end) {
+ hiraid_complete_cqes(hiraidq, start, end);
+ ret = IRQ_HANDLED;
+ }
+ usleep_range(poll_delay_min, poll_delay_max);
+ } while (start != end);
+ enable_irq(hiraidq->pci_irq);
+ return ret;
+}
+
+static irqreturn_t hiraid_io_irq(int irq, void *data)
+{
+ struct hiraid_queue *q = data;
+
+ if (hiraid_cqe_pending(q)) {
+ disable_irq_nosync(q->pci_irq);
+ return IRQ_WAKE_THREAD;
+ }
+ return IRQ_NONE;
+}
+
static int hiraid_setup_admin_queue(struct hiraid_dev *hdev)
{
struct hiraid_queue *adminq = &hdev->queues[0];
@@ -1666,9 +1707,11 @@ static int hiraid_setup_admin_queue(struct hiraid_dev *hdev)
adminq, "hiraid%d_q%d", hdev->instance, adminq->qid);
if (ret) {
adminq->cq_vector = -1;
+ adminq->pci_irq = -1;
return ret;
}
+ adminq->pci_irq = pci_irq_vector(hdev->pdev, adminq->cq_vector);
hiraid_init_queue(adminq, 0);
dev_info(hdev->dev, "setup admin queue success, queuecount[%d] online[%d] pagesize[%d]\n",
@@ -1937,14 +1980,23 @@ static int hiraid_create_queue(struct hiraid_queue *hiraidq, u16 qid)
goto delete_cq;
hiraidq->cq_vector = cq_vector;
- ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_handle_irq, NULL,
- hiraidq, "hiraid%d_q%d", hdev->instance, qid);
+
+ if (threaded_irq)
+ ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_io_irq,
+ hiraid_io_poll, hiraidq, "hiraid%d_q%d",
+ hdev->instance, qid);
+ else
+ ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_handle_irq,
+ NULL, hiraidq, "hiraid%d_q%d",
+ hdev->instance, qid);
if (ret) {
hiraidq->cq_vector = -1;
+ hiraidq->pci_irq = -1;
dev_err(hdev->dev, "request queue[%d] irq failed\n", qid);
goto delete_sq;
}
+ hiraidq->pci_irq = pci_irq_vector(hdev->pdev, hiraidq->cq_vector);
hiraid_init_queue(hiraidq, qid);
return 0;
@@ -2094,10 +2146,12 @@ static int hiraid_setup_io_queues(struct hiraid_dev *hdev)
adminq, "hiraid%d_q%d", hdev->instance, adminq->qid);
if (ret) {
dev_err(hdev->dev, "request admin irq failed\n");
+ adminq->pci_irq = -1;
adminq->cq_vector = -1;
return ret;
}
+ adminq->pci_irq = pci_irq_vector(hdev->pdev, adminq->cq_vector);
hdev->online_queues++;
for (i = hdev->queue_count; i <= hdev->max_qid; i++) {
--
2.45.1.windows.1
2
1
From: 岳智超 <yuezhichao1(a)h-partners.com>
driver inclusion
category: feature
bugzilla: https://gitee.com/openeuler/kernel/issues/IDDE4S?from=project-issue
CVE: NA
--------------------------------
Add thread irq for io queue
Signed-off-by: 岳智超 <yuezhichao1(a)h-partners.com>
---
drivers/scsi/hisi_raid/hiraid.h | 1 +
drivers/scsi/hisi_raid/hiraid_main.c | 61 ++++++++++++++++++++++++++--
2 files changed, 58 insertions(+), 4 deletions(-)
diff --git a/drivers/scsi/hisi_raid/hiraid.h b/drivers/scsi/hisi_raid/hiraid.h
index 1ebc3dd..bc4e05a 100644
--- a/drivers/scsi/hisi_raid/hiraid.h
+++ b/drivers/scsi/hisi_raid/hiraid.h
@@ -683,6 +683,7 @@ struct hiraid_queue {
atomic_t inflight;
void *sense_buffer_virt;
dma_addr_t sense_buffer_phy;
+ s32 pci_irq;
struct dma_pool *prp_small_pool;
};
diff --git a/drivers/scsi/hisi_raid/hiraid_main.c b/drivers/scsi/hisi_raid/hiraid_main.c
index f84182f..ee25893 100644
--- a/drivers/scsi/hisi_raid/hiraid_main.c
+++ b/drivers/scsi/hisi_raid/hiraid_main.c
@@ -107,6 +107,13 @@ static u32 log_debug_switch;
module_param(log_debug_switch, uint, 0644);
MODULE_PARM_DESC(log_debug_switch, "set log state, default zero for switch off");
+static bool threaded_irq = true;
+module_param(threaded_irq, bool, 0444);
+MODULE_PARM_DESC(threaded_irq, "use threaded irq for io queue, default on");
+
+static u32 poll_delay_min = 9;
+static u32 poll_delay_max = 19;
+
static int extra_pool_num_set(const char *val, const struct kernel_param *kp)
{
u8 n = 0;
@@ -153,7 +160,7 @@ static struct workqueue_struct *work_queue;
__func__, ##__VA_ARGS__); \
} while (0)
-#define HIRAID_DRV_VERSION "1.1.0.0"
+#define HIRAID_DRV_VERSION "1.1.0.1"
#define ADMIN_TIMEOUT (admin_tmout * HZ)
#define USRCMD_TIMEOUT (180 * HZ)
@@ -1305,6 +1312,7 @@ static int hiraid_alloc_queue(struct hiraid_dev *hdev, u16 qid, u16 depth)
hiraidq->q_depth = depth;
hiraidq->qid = qid;
hiraidq->cq_vector = -1;
+ hiraidq->pci_irq = -1;
hdev->queue_count++;
return 0;
@@ -1646,6 +1654,39 @@ static irqreturn_t hiraid_handle_irq(int irq, void *data)
return ret;
}
+static irqreturn_t hiraid_io_poll(int irq, void *data)
+{
+ struct hiraid_queue *hiraidq = data;
+ irqreturn_t ret = IRQ_NONE;
+ u16 start, end;
+
+ do {
+ spin_lock(&hiraidq->cq_lock);
+ hiraid_process_cq(hiraidq, &start, &end, -1);
+ hiraidq->last_cq_head = hiraidq->cq_head;
+ spin_unlock(&hiraidq->cq_lock);
+
+ if (start != end) {
+ hiraid_complete_cqes(hiraidq, start, end);
+ ret = IRQ_HANDLED;
+ }
+ usleep_range(poll_delay_min, poll_delay_max);
+ } while (start != end);
+ enable_irq(hiraidq->pci_irq);
+ return ret;
+}
+
+static irqreturn_t hiraid_io_irq(int irq, void *data)
+{
+ struct hiraid_queue *q = data;
+
+ if (hiraid_cqe_pending(q)) {
+ disable_irq_nosync(q->pci_irq);
+ return IRQ_WAKE_THREAD;
+ }
+ return IRQ_NONE;
+}
+
static int hiraid_setup_admin_queue(struct hiraid_dev *hdev)
{
struct hiraid_queue *adminq = &hdev->queues[0];
@@ -1681,9 +1722,11 @@ static int hiraid_setup_admin_queue(struct hiraid_dev *hdev)
NULL, adminq, "hiraid%d_q%d", hdev->instance, adminq->qid);
if (ret) {
adminq->cq_vector = -1;
+ adminq->pci_irq = -1;
return ret;
}
+ adminq->pci_irq = pci_irq_vector(hdev->pdev, adminq->cq_vector);
hiraid_init_queue(adminq, 0);
dev_info(hdev->dev, "setup admin queue success, queuecount[%d] online[%d] pagesize[%d]\n",
@@ -1958,14 +2001,23 @@ static int hiraid_create_queue(struct hiraid_queue *hiraidq, u16 qid)
goto delete_cq;
hiraidq->cq_vector = cq_vector;
- ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_handle_irq, NULL,
- hiraidq, "hiraid%d_q%d", hdev->instance, qid);
+ if (threaded_irq)
+ ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_io_irq,
+ hiraid_io_poll, hiraidq, "hiraid%d_q%d",
+ hdev->instance, qid);
+ else
+ ret = pci_request_irq(hdev->pdev, cq_vector, hiraid_handle_irq,
+ NULL, hiraidq, "hiraid%d_q%d",
+ hdev->instance, qid);
+
if (ret) {
hiraidq->cq_vector = -1;
+ hiraidq->pci_irq = -1;
dev_err(hdev->dev, "request queue[%d] irq failed\n", qid);
goto delete_sq;
}
+ hiraidq->pci_irq = pci_irq_vector(hdev->pdev, hiraidq->cq_vector);
hiraid_init_queue(hiraidq, qid);
return 0;
@@ -2122,10 +2174,11 @@ static int hiraid_setup_io_queues(struct hiraid_dev *hdev)
adminq, "hiraid%d_q%d", hdev->instance, adminq->qid);
if (ret) {
dev_err(hdev->dev, "request admin irq failed\n");
+ adminq->pci_irq = -1;
adminq->cq_vector = -1;
return ret;
}
-
+ adminq->pci_irq = pci_irq_vector(hdev->pdev, adminq->cq_vector);
hdev->online_queues++;
for (i = hdev->queue_count; i <= hdev->max_qid; i++) {
--
2.45.1.windows.1
2
2
[openeuler:OLK-6.6] BUILD REGRESSION 04473ee9ed912a16fff0d8846ad565bbf3d63c77
by kernel test robot 21 Dec '25
by kernel test robot 21 Dec '25
21 Dec '25
tree/branch: https://gitee.com/openeuler/kernel.git OLK-6.6
branch HEAD: 04473ee9ed912a16fff0d8846ad565bbf3d63c77 add migrate not
Error/Warning (recently discovered and may have been fixed):
https://lore.kernel.org/oe-kbuild-all/202511241700.GqFsj3QM-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511250630.aTlUN4lt-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511252147.paqMgpCw-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511260440.XtGIX1Qz-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511280702.XVMyBDu0-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511281657.lWcX7PhK-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511281845.H2cg7rYT-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511282009.VCbXC9Zw-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511282111.LvHs2qlX-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202511282349.cceTk3rf-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512091138.u8NXXfZk-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512091141.r06Y9a5w-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512091204.Q8mSD8MC-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512110235.L883ZLLi-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512110548.FQDvrNPq-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512110609.FoW9BdOr-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512110700.3emRQ7Un-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512110706.bkOqQiMM-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512110945.4orBvyVq-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512111142.MddOammZ-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512111243.5gbg71Im-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512111912.9dS3N6D9-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512112035.fGJa8Hzw-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512120305.ngE1OnFo-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512120744.b8phlWWR-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512121402.K1KWDJc7-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512121829.l6WBMb9f-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512122024.MnPMvwJ8-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512122109.Sy1IvzI5-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512130131.7HrtXRUl-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512130255.5pbCemhg-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512130435.BO31TiNF-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512131040.ErvjOWkV-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512132253.yDHpZZhf-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512140527.ZQJQrPyG-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512151347.pYQgm67P-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512151406.uDEczUki-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512151453.z27gHP7d-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512151653.mAEBFOna-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202109.DOPKqwQT-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202121.96JSWGZX-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202127.FExeoFRI-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202204.7yVczgx9-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202204.UJ7VQphR-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202208.UvUcLQzT-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202220.cTtDMo8F-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202249.7ZNqNGWi-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202305.zGRxHl6E-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202331.85546LYE-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512202332.cPVupLsK-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210010.kLb4fmr8-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210018.ZcEdgI6o-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210031.v4yKIJFE-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210038.6F02IwRo-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210041.NZ084FEx-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210106.IqHUCCpt-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210108.l9B1EKna-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210133.hQCBSnrQ-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210228.QnsbClZ7-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210308.eEv9d6co-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210339.nHxRhG7l-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210351.fZ2BxCPV-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210402.xNA4HhAd-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210422.Gfg4tcZV-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210450.P2GW20wS-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210513.adq7k77G-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210747.245hMJvq-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210813.VozNt0tS-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512210938.tNGRHg5O-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512211025.4cSwOTdS-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512211148.JPQqoPy8-lkp@intel.com
https://lore.kernel.org/oe-kbuild-all/202512211327.X52XldqR-lkp@intel.com
arch/arm64/kernel/cpufeature.c:2129:13: warning: 'enable_pseudo_nmi' defined but not used [-Wunused-variable]
arch/arm64/kernel/cpufeature.c:2129:13: warning: unused variable 'enable_pseudo_nmi' [-Wunused-variable]
arch/arm64/kvm/arm.c:569:5: warning: no previous prototype for 'kvm_arch_rec_init' [-Wmissing-prototypes]
arch/arm64/kvm/cca_base.c:52:6: warning: no previous prototype for 'set_cca_cvm_type' [-Wmissing-prototypes]
arch/x86/kernel/cpu/proc.c:63:5: warning: no previous prototype for 'show_cpuinfo' [-Wmissing-prototypes]
arch/x86/kernel/cpu/proc.c:63:5: warning: no previous prototype for function 'show_cpuinfo' [-Wmissing-prototypes]
arch/x86/kernel/early-quirks.c:722:6: warning: no previous prototype for 'is_zhaoxin_kh40000' [-Wmissing-prototypes]
arch/x86/kernel/early-quirks.c:722:6: warning: no previous prototype for function 'is_zhaoxin_kh40000' [-Wmissing-prototypes]
arch/x86/kernel/early-quirks.c:727:34: warning: no previous prototype for 'kh40000_get_direct_dma_ops' [-Wmissing-prototypes]
arch/x86/kernel/early-quirks.c:727:34: warning: no previous prototype for function 'kh40000_get_direct_dma_ops' [-Wmissing-prototypes]
arch/x86/kvm/svm/csv.c:1196: warning: Function parameter or member 'argp' not described in 'csv3_launch_encrypt_data_alt_1'
arch/x86/kvm/svm/csv.c:1196: warning: Function parameter or member 'kvm' not described in 'csv3_launch_encrypt_data_alt_1'
arch/x86/kvm/svm/csv.c:1319: warning: Function parameter or member 'argp' not described in '__csv3_launch_encrypt_data'
arch/x86/kvm/svm/csv.c:1319: warning: Function parameter or member 'end_pgoff' not described in '__csv3_launch_encrypt_data'
arch/x86/kvm/svm/csv.c:1319: warning: Function parameter or member 'kvm' not described in '__csv3_launch_encrypt_data'
arch/x86/kvm/svm/csv.c:1319: warning: Function parameter or member 'params' not described in '__csv3_launch_encrypt_data'
arch/x86/kvm/svm/csv.c:1319: warning: Function parameter or member 'src_buf' not described in '__csv3_launch_encrypt_data'
arch/x86/kvm/svm/csv.c:1319: warning: Function parameter or member 'start_pgoff' not described in '__csv3_launch_encrypt_data'
arch/x86/kvm/svm/csv.c:1436: warning: Function parameter or member 'argp' not described in 'csv3_launch_encrypt_data_alt_2'
arch/x86/kvm/svm/csv.c:1436: warning: Function parameter or member 'kvm' not described in 'csv3_launch_encrypt_data_alt_2'
block/blk-cgroup.c:2320:18: warning: no previous prototype for function 'bpf_blkcg_get_dev_iostat' [-Wmissing-prototypes]
block/genhd.c:100:6: warning: no previous prototype for 'part_stat_read_all' [-Wmissing-prototypes]
block/genhd.c:100:6: warning: no previous prototype for function 'part_stat_read_all' [-Wmissing-prototypes]
clang: warning: no such include directory: 'drivers/infiniband/hw/hiroce3/include/mag' [-Wmissing-include-dirs]
crypto/asymmetric_keys/pgp_library.c:189: warning: Excess function parameter '_data' description in 'pgp_parse_packets'
crypto/asymmetric_keys/pgp_library.c:189: warning: Excess function parameter '_datalen' description in 'pgp_parse_packets'
crypto/asymmetric_keys/pgp_library.c:189: warning: Function parameter or member 'data' not described in 'pgp_parse_packets'
crypto/asymmetric_keys/pgp_library.c:189: warning: Function parameter or member 'datalen' not described in 'pgp_parse_packets'
drivers/ata/ahci_zhaoxin_sgpio.c:31:5: warning: no previous prototype for function 'ahci_wait_em_reset' [-Wmissing-prototypes]
drivers/ata/ahci_zhaoxin_sgpio.c:55:6: warning: no previous prototype for function 'ahci_zhaoxin_set_em_sgpio' [-Wmissing-prototypes]
drivers/ata/ahci_zhaoxin_sgpio.c:601:6: warning: no previous prototype for function 'set_em_messages' [-Wmissing-prototypes]
drivers/ata/ahci_zhaoxin_sgpio.c:621:5: warning: no previous prototype for function 'add_sgpio_zhaoxin' [-Wmissing-prototypes]
drivers/ata/ahci_zhaoxin_sgpio.c:99:6: warning: no previous prototype for function 'ahci_zhaoxin_set_em_sgpio_gpmode' [-Wmissing-prototypes]
drivers/ata/libahci.c:210:5: warning: no previous prototype for function 'get_ahci_em_messages' [-Wmissing-prototypes]
drivers/block/drbd/drbd_bitmap.c:1232: warning: Function parameter or member 'peer_device' not described in 'drbd_bm_write'
drivers/clk/renesas/r9a06g032-clocks.c:147: warning: Function parameter or member 'dual' not described in 'r9a06g032_clkdesc'
drivers/clocksource/arm_arch_timer.c:371:33: warning: unused variable 'hisi_165010801_oem_info' [-Wunused-variable]
drivers/cpufreq/acpi-cpufreq.c:638:13: warning: 'sched_set_itmt' defined but not used [-Wunused-function]
drivers/cpufreq/cppc_cpufreq.c:852:19: error: invalid use of undefined type 'struct fb_ctr_pair'
drivers/cpufreq/cppc_cpufreq.c:866:21: warning: unused variable 'fb_ctrs' [-Wunused-variable]
drivers/cpufreq/cppc_cpufreq.c:866:34: error: 'struct fb_ctr_pair' has no member named 'cpu'
drivers/cpufreq/cppc_cpufreq.c:866:40: warning: excess elements in struct initializer
drivers/cpufreq/cppc_cpufreq.c:866:9: error: variable 'fb_ctrs' has initializer but incomplete type
drivers/crypto/ccp/ccp-crypto-sm2-hygon.c:127:25: sparse: sparse: cast to restricted __be64
drivers/crypto/ccp/ccp-crypto-sm2-hygon.c:150:22: sparse: sparse: incorrect type in assignment (different base types)
drivers/crypto/ccp/ccp-crypto-sm2-hygon.c:202:25: sparse: sparse: cast to restricted __be32
drivers/crypto/ccp/ccp-crypto-sm2-hygon.c:212:32: sparse: sparse: incorrect type in assignment (different base types)
drivers/crypto/ccp/hygon/ccp-dev-v5.c:294:23: sparse: sparse: incorrect type in assignment (different base types)
drivers/crypto/ccp/hygon/ccp-dev-v5.c:294:25: sparse: sparse: cast from restricted __le32
drivers/crypto/ccp/hygon/ccp-dev-v5.c:490:40: sparse: sparse: incorrect type in assignment (different base types)
drivers/crypto/ccp/hygon/ccp-dev-v5.c:491:40: sparse: sparse: incorrect type in assignment (different base types)
drivers/crypto/ccp/hygon/ccp-mdev.c:1144:15: warning: no previous prototype for function 'ccp_pin_memory' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/csv-dev.c:814: warning: Function parameter or member 'api_minor' not described in 'user_data_status'
drivers/crypto/ccp/hygon/hct.c:1333:15: warning: no previous prototype for function 'hct_pin_memory' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/hct.c:1427:15: warning: no previous prototype for function 'hct_pin_memory' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/psp-dev.c:30:5: warning: no previous prototype for function 'psp_mutex_init' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/tdm-kernel-guard.c:151:5: warning: no previous prototype for function 'tdm_service_run' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/tdm-kernel-guard.c:212:5: warning: no previous prototype for function 'tdm_service_exit' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/vpsp.c:1024:5: warning: no previous prototype for function 'vpsp_do_cmd' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/vpsp.c:1055:5: warning: no previous prototype for function 'vpsp_do_cmd' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/vpsp.c:65: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/crypto/ccp/hygon/vpsp.c:773:6: warning: no previous prototype for function 'vpsp_set_default_vid_permission' [-Wmissing-prototypes]
drivers/crypto/ccp/hygon/vpsp.c:92: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/dax/super.c:45: warning: Function parameter or member 'KABI_RESERVE(1' not described in 'dax_device'
drivers/gpu/drm/phytium/pe220x_dc.c:110:6: warning: no previous prototype for function 'pe220x_dc_hw_reset' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/pe220x_dc.c:270:6: warning: no previous prototype for function 'pe220x_dc_hw_update_primary_hi_addr' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/pe220x_dc.c:287:6: warning: no previous prototype for function 'pe220x_dc_hw_update_cursor_hi_addr' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/pe220x_dc.c:93:6: warning: no previous prototype for function 'pe220x_dc_hw_config_pix_clock' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/pe220x_dp.c:470:5: warning: no previous prototype for function 'pe220x_dp_hw_reset' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_crtc.c:174:1: warning: no previous prototype for function 'phytium_crtc_atomic_duplicate_state' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_crtc.c:189:1: warning: no previous prototype for function 'phytium_crtc_atomic_destroy_state' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_debugfs.c:376:5: warning: no previous prototype for function 'phytium_debugfs_connector_add' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:1033:6: warning: no previous prototype for function 'phytium_dp_hw_hpd_irq_setup' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:1451:5: warning: no previous prototype for function 'phytium_dp_get_link_train_fallback_values' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:1500:5: warning: no previous prototype for function 'phytium_dp_start_link_train' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:1815:6: warning: no previous prototype for function 'phytium_dp_hpd_poll_handler' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:1962:6: warning: no previous prototype for function 'phytium_dp_fast_link_train' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:2153:6: warning: no previous prototype for function 'phytium_dp_adjust_link_train_parameter' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:2213:1: warning: no previous prototype for function 'phytium_encoder_mode_valid' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:2482:5: warning: no previous prototype for function 'phytium_get_encoder_crtc_mask' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:656:6: warning: no previous prototype for function 'phytium_dp_hw_enable_audio' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:825:6: warning: no previous prototype for function 'phytium_dp_hw_disable_video' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:963:6: warning: no previous prototype for function 'phytium_dp_hw_enable_output' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:975:6: warning: no previous prototype for function 'phytium_dp_hw_enable_input_source' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:986:6: warning: no previous prototype for function 'phytium_dp_hw_disable_input_source' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_dp.c:996:6: warning: no previous prototype for function 'phytium_dp_hw_output_is_enable' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_fbdev.c:108:5: warning: no previous prototype for function 'phytium_drm_fbdev_init' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_gem.c:186:5: warning: no previous prototype for function 'phytium_dma_transfer' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_panel.c:234:6: warning: no previous prototype for function 'phytium_dp_panel_release_backlight_funcs' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_pci.c:115:5: warning: no previous prototype for function 'phytium_pci_dma_init' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_pci.c:24:6: warning: no previous prototype for function 'phytium_pci_vram_hw_init' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_plane.c:30:6: warning: no previous prototype for function 'phytium_plane_destroy' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/phytium_plane.c:82:1: warning: no previous prototype for function 'phytium_plane_atomic_duplicate_state' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/px210_dc.c:244:6: warning: no previous prototype for function 'px210_dc_hw_plane_get_primary_format' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/px210_dc.c:253:6: warning: no previous prototype for function 'px210_dc_hw_plane_get_cursor_format' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/px210_dc.c:262:6: warning: no previous prototype for function 'px210_dc_hw_update_dcreq' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/px210_dc.c:319:6: warning: no previous prototype for function 'px210_dc_hw_update_primary_hi_addr' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/px210_dc.c:71:6: warning: no previous prototype for function 'px210_dc_hw_vram_init' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/px210_dp.c:852:6: warning: no previous prototype for function 'px210_dp_hw_spread_is_enable' [-Wmissing-prototypes]
drivers/gpu/drm/phytium/px210_dp.c:864:5: warning: no previous prototype for function 'px210_dp_hw_reset' [-Wmissing-prototypes]
drivers/i2c/busses/i2c-zhaoxin.c:176:5: warning: no previous prototype for function 'zxi2c_fifo_irq_xfer' [-Wmissing-prototypes]
drivers/i2c/busses/i2c-zhaoxin.c:314:5: warning: no previous prototype for function 'zxi2c_xfer' [-Wmissing-prototypes]
drivers/infiniband/hw/bnxt_re/ib_verbs.c:2928:24: warning: variable 'nq' set but not used [-Wunused-but-set-variable]
drivers/irqchip/irq-gic-v3-its.c:392:15: warning: no previous prototype for 'gic_data_rdist_get_vlpi_base' [-Wmissing-prototypes]
drivers/irqchip/irq-gic-v3.c:1526:6: warning: no previous prototype for 'gic_dist_enable_ipiv' [-Wmissing-prototypes]
drivers/irqchip/irq-gic-v3.c:561:6: warning: no previous prototype for 'gic_irq_set_prio' [-Wmissing-prototypes]
drivers/irqchip/irq-gic-v3.c:561:6: warning: no previous prototype for function 'gic_irq_set_prio' [-Wmissing-prototypes]
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:1001:46: sparse: sparse: incorrect type in argument 4 (different base types)
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:161:31: sparse: sparse: cast to restricted __be64
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:244:20: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:305:20: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:355:20: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:783:41: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:816:37: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_api_cmd.c:894:43: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:1823:5: sparse: sparse: symbol 'cfg_set_func_sf_en' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:1866:5: sparse: sparse: symbol 'cfg_get_func_sf_en' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:38:6: sparse: sparse: symbol 'g_rdma_mtts_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:39:6: sparse: sparse: symbol 'g_rdma_qps_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:40:6: sparse: sparse: symbol 'g_rdma_mpts_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:41:6: sparse: sparse: symbol 'g_vfs_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:55:6: sparse: sparse: symbol 'g_test_qpc_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:56:6: sparse: sparse: symbol 'g_test_qpc_resvd_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:57:6: sparse: sparse: symbol 'g_test_pagesize_reorder' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:58:6: sparse: sparse: symbol 'g_test_xid_alloc_mode' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:59:6: sparse: sparse: symbol 'g_test_gpa_check_enable' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:60:6: sparse: sparse: symbol 'g_test_qpc_alloc_mode' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:61:6: sparse: sparse: symbol 'g_test_scqc_alloc_mode' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:62:6: sparse: sparse: symbol 'g_test_max_conn' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:63:6: sparse: sparse: symbol 'g_test_max_cache_conn' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:64:6: sparse: sparse: symbol 'g_test_scqc_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:65:6: sparse: sparse: symbol 'g_test_mpt_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:66:6: sparse: sparse: symbol 'g_test_mpt_resvd' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:67:6: sparse: sparse: symbol 'g_test_scq_resvd' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:68:6: sparse: sparse: symbol 'g_test_hash_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cfg.c:69:6: sparse: sparse: symbol 'g_test_reorder_num' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:1297:31: sparse: sparse: cast to restricted __be64
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:1367:23: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:1384:5: sparse: sparse: symbol 'hinic_set_cmdq_ctxts' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:369:20: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:372:28: sparse: sparse: cast removes address space '__iomem' of expression
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:372:28: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:513:31: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_cmdq.c:519:40: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:205:51: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:219:44: sparse: sparse: incorrect type in argument 1 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:375:37: sparse: sparse: incorrect type in argument 1 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:394:37: sparse: sparse: incorrect type in argument 1 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:459:54: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:480:44: sparse: sparse: incorrect type in argument 1 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:487:44: sparse: sparse: incorrect type in argument 1 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dbgtool_knl.c:548:37: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_dcb.c:103:19: error: invalid application of 'sizeof' to an incomplete type 'struct ieee_ets'
drivers/net/ethernet/huawei/hinic/hinic_dcb.c:1201:4: sparse: sparse: symbol 'hinic_dcbnl_set_all' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_dcb.c:1601:5: sparse: sparse: symbol '__set_cos_up_map' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_dcb.c:258:6: sparse: sparse: symbol 'hinic_set_prio_tc_map' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_dcb.c:62:6: sparse: sparse: symbol 'hinic_dcb_config_init' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_dcb.c:95:6: sparse: sparse: symbol 'hinic_init_ieee_settings' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_eqs.c:391: warning: expecting prototype for hinic_aeq_unregister_sw_cb(). Prototype was for hinic_aeq_unregister_swe_cb() instead
drivers/net/ethernet/huawei/hinic/hinic_eqs.c:417: warning: expecting prototype for hinic_ceq_register_sw_cb(). Prototype was for hinic_ceq_register_cb() instead
drivers/net/ethernet/huawei/hinic/hinic_eqs.c:524:29: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_eqs.c:544:37: sparse: sparse: cast to restricted __be64
drivers/net/ethernet/huawei/hinic/hinic_eqs.c:902:25: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_eqs.c:920:28: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_ethtool.c:1858:6: sparse: sparse: symbol 'hinic_lp_test' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_ethtool.c:2271:54: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:1061:5: sparse: sparse: symbol 'hinic_msg_to_mgmt_no_ack' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:1153:22: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:1175:24: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:1978:5: sparse: sparse: symbol 'comm_pf_mbox_handler' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:227:5: sparse: sparse: symbol 'hinic_hw_rx_buf_size' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:2749:5: sparse: sparse: symbol 'hinic_ppf_ht_gpa_init' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:2795:6: sparse: sparse: symbol 'hinic_ppf_ht_gpa_deinit' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:4581:5: sparse: sparse: symbol '_set_led_status' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:4667:5: sparse: sparse: symbol 'hinic_get_phy_init_status' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:4934:21: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:4994:18: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_hwdev.c:583:28: sparse: sparse: symbol 'hw_cmd_support_vf' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_hwif.c:40:16: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_hwif.c:46:16: sparse: sparse: incorrect type in argument 1 (different base types)
drivers/net/ethernet/huawei/hinic/hinic_hwif.c:592:29: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_hwif.c:593:30: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_hwif.c:596:23: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_hwif.c:664:64: sparse: sparse: incorrect type in argument 4 (different base types)
drivers/net/ethernet/huawei/hinic/hinic_hwif.c:717: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/huawei/hinic/hinic_lld.c:1139:6: sparse: sparse: symbol 'hinic_get_ppf_hwdev_by_pdev' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_lld.c:133:1: sparse: sparse: symbol 'g_hinic_chip_list' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_lld.c:1448:19: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_lld.c:1785:57: sparse: sparse: Using plain integer as NULL pointer
drivers/net/ethernet/huawei/hinic/hinic_lld.c:1896:6: sparse: sparse: symbol 'hinic_event_process' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_lld.c:1950:53: sparse: sparse: incorrect type in argument 1 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_lld.c:2381:32: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_lld.c:2382:33: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_lld.c:2383:27: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_lld.c:447:6: sparse: sparse: symbol 'hinic_init_syncfw_timer' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_lld.c:462:6: sparse: sparse: symbol 'hinic_destroy_syncfw_timer' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_lld.c:505:31: sparse: sparse: symbol 'ver_incompat_table' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_lld.c:550:5: sparse: sparse: symbol 'hinic_version_cmp' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_lld.c:744:29: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_lld.c:745:24: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_lld.c:746:26: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_main.c:182:5: sparse: sparse: symbol 'hinic_netdev_event' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_main.c:182:5: warning: no previous prototype for 'hinic_netdev_event' [-Wmissing-prototypes]
drivers/net/ethernet/huawei/hinic/hinic_main.c:230:1: sparse: sparse: symbol 'g_hinic_netdev_notifiers_mutex' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:1009:6: sparse: sparse: symbol 'dump_mox_reg' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:1024:22: sparse: sparse: cast to restricted __be64
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:1567:25: sparse: sparse: incorrect type in assignment (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:373: warning: expecting prototype for hinic_unregister_ppf_mbox_cb(). Prototype was for hinic_unregister_pf_mbox_cb() instead
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:796:5: sparse: sparse: symbol 'set_vf_mbox_random_id' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:846:6: sparse: sparse: symbol 'check_vf_mbox_random_id' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:872:21: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_mbox.c:951:54: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_multi_host_mgmt.c:629:6: sparse: sparse: symbol 'comm_ppf_to_pf_handler' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_multi_host_mgmt.c:647:5: sparse: sparse: symbol 'hinic_nic_ppf_mbox_handler' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_multi_host_mgmt.c:656:6: sparse: sparse: symbol 'hinic_nic_ppf_to_pf_handler' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_multi_host_mgmt.c:665:5: sparse: sparse: symbol 'hinic_register_slave_ppf' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:1740:30: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:1743:23: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:1745:22: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:1949:31: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:1968:27: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:2622:5: sparse: sparse: symbol 'nic_pf_mbox_handler' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:3623:5: sparse: sparse: symbol 'hw_speed_convert' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:531:5: sparse: sparse: symbol 'hinic_hiovs_set_cpath_vlan' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:557:5: sparse: sparse: symbol 'hinic_hiovs_del_cpath_vlan' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_cfg.c:98:28: sparse: sparse: symbol 'nic_cmd_support_vf' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_dbg.c:102:24: sparse: sparse: incorrect type in return expression (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_dbg.c:161:22: sparse: sparse: cast removes address space '__iomem' of expression
drivers/net/ethernet/huawei/hinic/hinic_nic_dev.h:212:19: error: field has incomplete type 'struct ieee_pfc'
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:1028:27: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:362:6: sparse: sparse: symbol 'hinic_qp_prepare_cmdq_header' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:381:6: sparse: sparse: symbol 'hinic_sq_prepare_ctxt' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:395:24: sparse: sparse: cast to restricted __be64
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:443:6: sparse: sparse: symbol 'hinic_rq_prepare_ctxt' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:897:16: sparse: sparse: cast to restricted __be16
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:967:23: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:971:31: sparse: sparse: cast removes address space '__iomem' of expression
drivers/net/ethernet/huawei/hinic/hinic_nic_io.c:971:31: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:115:43: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:1714:35: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:182:32: sparse: sparse: incorrect type in argument 1 (different address spaces)
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:698:5: sparse: sparse: symbol 'get_pfc_info' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:720:5: sparse: sparse: symbol 'set_pfc_control' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:752:5: sparse: sparse: symbol 'set_ets' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:827:5: sparse: sparse: symbol 'get_support_up' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:855:5: sparse: sparse: symbol 'get_support_tc' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:875:5: sparse: sparse: symbol 'get_ets_info' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_nictool.c:893:5: sparse: sparse: symbol 'set_pfc_priority' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_qp.c:49:26: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_qp.c:85:21: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_rx.c:149:44: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_rx.c:151:43: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_rx.c:171:6: sparse: sparse: symbol 'hinic_rx_free_buffers' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_rx.c:560:6: sparse: sparse: symbol 'rx_pass_super_cqe' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_sml_counter.c:28:23: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_counter.c:41:25: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_counter.c:44:21: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_lt.c:158:28: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_lt.c:274:35: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_lt.c:275:35: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_lt.c:56:21: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_lt.c:68:20: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_sml_lt.c:87:26: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_tx.c:1100:5: sparse: sparse: symbol 'hinic_stop_sq' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_tx.c:112:28: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_tx.c:113:28: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_tx.c:114:25: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_tx.c:551:35: sparse: sparse: cast to restricted __be32
drivers/net/ethernet/huawei/hinic/hinic_tx.c:913:5: sparse: sparse: symbol 'hinic_setup_tx_wqe' was not declared. Should it be static?
drivers/net/ethernet/huawei/hinic/hinic_wq.c:206:54: sparse: sparse: incorrect type in argument 4 (different base types)
drivers/net/ethernet/huawei/hinic/hinic_wq.c:212:24: sparse: sparse: incorrect type in assignment (different base types)
drivers/net/ethernet/huawei/hinic/hinic_wq.c:583:16: sparse: sparse: cast to restricted __be64
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bat_cla.c:893:28: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size 15 [-Wformat-truncation=]
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1055: warning: expecting prototype for Prototype(). Prototype was for cqm_bitmap_alloc() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1108: warning: expecting prototype for Prototype(). Prototype was for cqm_bitmap_alloc_low2bit_align() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1154: warning: expecting prototype for Prototype(). Prototype was for cqm_bitmap_alloc_reserved() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1189: warning: expecting prototype for Prototype(). Prototype was for cqm_bitmap_free() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:119: warning: expecting prototype for Prototype(). Prototype was for cqm_check_align() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1212: warning: expecting prototype for Prototype(). Prototype was for cqm_single_object_table_init() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1232: warning: expecting prototype for Prototype(). Prototype was for cqm_object_table_init() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1299: warning: expecting prototype for Prototype(). Prototype was for cqm_object_table_uninit() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1334: warning: expecting prototype for Prototype(). Prototype was for cqm_object_table_insert() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1376: warning: expecting prototype for Prototype(). Prototype was for cqm_object_table_remove() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:1413: warning: expecting prototype for Prototype(). Prototype was for cqm_object_table_get() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:155: warning: expecting prototype for Prototype(). Prototype was for cqm_kmalloc_align() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:187: warning: expecting prototype for Prototype(). Prototype was for cqm_kfree_align() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:474: warning: expecting prototype for Prototype(). Prototype was for cqm_buf_alloc() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:51: warning: expecting prototype for Prototype(). Prototype was for cqm_swab64() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:545: warning: expecting prototype for Prototype(). Prototype was for cqm_buf_free() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:74: warning: expecting prototype for Prototype(). Prototype was for cqm_swab32() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:771: warning: expecting prototype for Prototype(). Prototype was for cqm_single_bitmap_init() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:841: warning: expecting prototype for Prototype(). Prototype was for cqm_bitmap_init() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:937: warning: expecting prototype for Prototype(). Prototype was for cqm_bitmap_uninit() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:96: warning: expecting prototype for Prototype(). Prototype was for cqm_shift() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_bitmap_table.c:975: warning: expecting prototype for Prototype(). Prototype was for cqm_bitmap_check_range() instead
drivers/net/ethernet/huawei/hinic3/cqm/cqm_main.c:1159:6: warning: '%s' directive output may be truncated writing up to 63 bytes into a region of size 15 [-Wformat-truncation=]
drivers/net/ethernet/huawei/hinic3/hinic3_ethtool.c:823:5: warning: no previous prototype for 'hinic3_set_rxq_recovery_flag' [-Wmissing-prototypes]
drivers/net/ethernet/huawei/hinic3/hinic3_mag_cfg.c:548:38: warning: ', rx power: ' directive output may be truncated writing 12 bytes into a region of size between 1 and 512 [-Wformat-truncation=]
drivers/net/ethernet/huawei/hinic3/hinic3_tx.c:395:5: warning: no previous prototype for 'hinic3_tx_offload' [-Wmissing-prototypes]
drivers/net/ethernet/huawei/hinic3/hw/hinic3_lld.c:1860:22: warning: assignment to 'int (*)(struct pci_dev *)' from 'int' makes pointer from integer without a cast [-Wint-conversion]
drivers/net/ethernet/huawei/hinic3/hw/hinic3_lld.c:1860:24: error: implicit declaration of function '__symbol_get'; did you mean 'symbol_get'? [-Werror=implicit-function-declaration]
drivers/net/ethernet/huawei/hinic3/hw/hinic3_lld.c:1869:3: error: implicit declaration of function '__symbol_put'; did you mean 'symbol_put'? [-Werror=implicit-function-declaration]
drivers/net/ethernet/linkdata/sxe/base/log/sxe_log.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxe/base/trace/sxe_trace.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_csum.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_dcb.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:432:6: error: no previous prototype for 'sxe_debugfs_entries_init' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:459:6: error: no previous prototype for 'sxe_debugfs_entries_exit' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:465:6: error: no previous prototype for 'sxe_debugfs_init' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:470:6: error: no previous prototype for 'sxe_debugfs_exit' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ethtool.c:2022:5: error: no previous prototype for 'sxe_reg_test' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ethtool.c:2644:5: error: no previous prototype for 'sxe_phys_id_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ethtool.c:2736:47: error: suggest braces around empty body in an 'if' statement [-Werror=empty-body]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_filter.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1033:6: error: no previous prototype for 'sxe_hw_is_link_state_up' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1064:5: error: no previous prototype for 'sxe_hw_fc_enable' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1135:6: error: no previous prototype for 'sxe_fc_autoneg_localcap_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1256:6: error: no previous prototype for 'sxe_hw_crc_configure' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1330:6: error: no previous prototype for 'sxe_hw_fc_tc_high_water_mark_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1335:6: error: no previous prototype for 'sxe_hw_fc_tc_low_water_mark_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1340:6: error: no previous prototype for 'sxe_hw_is_fc_autoneg_disabled' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1345:6: error: no previous prototype for 'sxe_hw_fc_autoneg_disable_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1360:6: error: no previous prototype for 'sxe_hw_fc_requested_mode_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1437:6: error: no previous prototype for 'sxe_hw_fc_mac_addr_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:2147:6: error: no previous prototype for 'sxe_hw_fnav_enable' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:2204:5: error: no previous prototype for 'sxe_hw_fnav_port_mask_get' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:2310:5: error: no previous prototype for 'sxe_hw_fnav_specific_rule_mask_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:2445:5: error: no previous prototype for 'sxe_hw_fnav_specific_rule_add' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:2469:5: error: no previous prototype for 'sxe_hw_fnav_specific_rule_del' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:2500:6: error: no previous prototype for 'sxe_hw_fnav_sample_rule_configure' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:2587:5: error: no previous prototype for 'sxe_hw_fnav_sample_rules_table_reinit' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3147:6: error: no previous prototype for 'sxe_hw_all_ring_disable' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3295:6: error: no previous prototype for 'sxe_hw_dcb_rx_bw_alloc_configure' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3330:6: error: no previous prototype for 'sxe_hw_dcb_tx_desc_bw_alloc_configure' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3360:6: error: no previous prototype for 'sxe_hw_dcb_tx_data_bw_alloc_configure' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3397:6: error: no previous prototype for 'sxe_hw_dcb_pfc_configure' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3565:6: error: no previous prototype for 'sxe_hw_dcb_max_mem_window_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3570:6: error: no previous prototype for 'sxe_hw_dcb_tx_ring_rate_factor_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:3674:6: error: no previous prototype for 'sxe_hw_dcb_rate_limiter_clear' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4497:5: error: no previous prototype for 'sxe_hw_hdc_lock_get' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4536:6: error: no previous prototype for 'sxe_hw_hdc_lock_release' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4552:6: error: no previous prototype for 'sxe_hw_hdc_fw_ov_clear' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4557:6: error: no previous prototype for 'sxe_hw_hdc_is_fw_over_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4567:6: error: no previous prototype for 'sxe_hw_hdc_packet_send_done' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4573:6: error: no previous prototype for 'sxe_hw_hdc_packet_header_send' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4578:6: error: no previous prototype for 'sxe_hw_hdc_packet_data_dword_send' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4584:5: error: no previous prototype for 'sxe_hw_hdc_fw_ack_header_get' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4589:5: error: no previous prototype for 'sxe_hw_hdc_packet_data_dword_rcv' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4594:5: error: no previous prototype for 'sxe_hw_hdc_fw_status_get' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4604:6: error: no previous prototype for 'sxe_hw_hdc_drv_status_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:4609:5: error: no previous prototype for 'sxe_hw_hdc_channel_state_get' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:745:5: error: no previous prototype for 'sxe_hw_irq_cause_get' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:775:6: error: no previous prototype for 'sxe_hw_irq_general_reg_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:780:5: error: no previous prototype for 'sxe_hw_irq_general_reg_get' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:790:6: error: no previous prototype for 'sxe_hw_event_irq_map' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:838:6: error: no previous prototype for 'sxe_hw_event_irq_auto_clear_set' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:876:6: error: no previous prototype for 'sxe_hw_all_irq_disable' [-Werror=missing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:994:5: error: no previous prototype for function 'sxe_hw_link_speed_get' [-Werror,-Wmissing-prototypes]
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ipsec.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ptp.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxe/sxepf/sxe_tx_proc.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxevf/base/log/sxe_log.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_csum.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:640:6: error: no previous prototype for function 'sxevf_rx_rcv_ctl_configure' [-Werror,-Wmissing-prototypes]
drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_main.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_monitor.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_netdev.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_ring.c:3: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/nebula-matrix/nbl/nbl_common/nbl_common.c:171: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/nebula-matrix/nbl/nbl_common/nbl_common.c:378:6: warning: variable 'node_size' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_common/nbl_common.c:674:6: warning: variable 'node_num' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_common/nbl_common.c:798:6: warning: variable 'node_size' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dev_user.c:458:13: warning: assignment to 'struct eventfd_ctx *' from 'int' makes pointer from integer without a cast [-Wint-conversion]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dev_user.c:756:16: warning: variable 'vfn' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dispatch.c:2593:38: warning: variable 'param' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dispatch.c:3554:38: warning: variable 'param' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dispatch.c:4331:26: warning: variable 'chan_ops' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_dispatch.c:7888:26: warning: variable 'chan_ops' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_service.c:2528:38: sparse: sparse: incorrect type in argument 2 (different address spaces)
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_service.c:3025:28: warning: variable 'ring_mgt' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_core/nbl_service.c:34: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_adminq.c:1823:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_adminq.c:550:55: warning: '%08x' directive output may be truncated writing 8 bytes into a region of size between 2 and 11 [-Wformat-truncation=]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_hw_leonis/nbl_flow_leonis.c:893:22: warning: variable 'phy_ops' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_interrupt.c:12:17: warning: variable 'dev' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_txrx.c:1196: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_vsi.c:76:24: warning: variable 'queue_mgt' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_vsi.c:83:22: warning: variable 'vsi_mgt' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_vsi.c:84:22: warning: variable 'phy_ops' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_vsi.c:96:22: warning: variable 'vsi_mgt' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_hw/nbl_vsi.c:97:22: warning: variable 'phy_ops' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/nebula-matrix/nbl/nbl_main.c:330: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/nebula-matrix/nbl/nbl_main.c:434: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/wangxun/ngbe/ngbe_debugfs.c:34: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c:1376: warning: Excess function parameter 'vmdq' description in 'ngbe_set_vmdq'
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c:1376: warning: Function parameter or member 'pool' not described in 'ngbe_set_vmdq'
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c:3328: warning: expecting prototype for ngbe_read_ee_hostif(). Prototype was for ngbe_read_ee_hostif_data() instead
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c:3667: warning: expecting prototype for ngbe_read_ee_hostif(). Prototype was for ngbe_read_ee_hostif32() instead
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c:3739: warning: expecting prototype for ngbe_write_ee_hostif(). Prototype was for ngbe_write_ee_hostif_data32() instead
drivers/net/ethernet/wangxun/ngbe/ngbe_hw.c:4272:6: warning: variable 'status' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c:3772:6: warning: variable 'vlvfb' set but not used [-Wunused-but-set-variable]
drivers/net/ethernet/wangxun/ngbe/ngbe_main.c:5771: warning: expecting prototype for ngbe_watchdog_update_link(). Prototype was for ngbe_watchdog_update_link_status() instead
drivers/net/ethernet/wangxun/ngbe/ngbe_phy.c:1737: warning: expecting prototype for ngbe_tn_check_overtemp(). Prototype was for ngbe_phy_check_overtemp() instead
drivers/net/ethernet/wangxun/ngbe/ngbe_phy.c:877: warning: expecting prototype for ngbe_identify_module(). Prototype was for ngbe_phy_identify() instead
drivers/net/ethernet/wangxun/ngbe/ngbe_sriov.c:161: warning: expecting prototype for ngbe_pet_vfs(). Prototype was for ngbe_put_vfs() instead
drivers/pinctrl/zhaoxin/pinctrl-zhaoxin.c:123:6: warning: variable 'value_back' set but not used [-Wunused-but-set-variable]
drivers/pinctrl/zhaoxin/pinctrl-zhaoxin.c:487:6: warning: variable 'test_mask' set but not used [-Wunused-but-set-variable]
drivers/platform/surface/surface3_power.c:248:3: warning: 'snprintf' will always be truncated; specified size is 10, but format string expands to at least 12 [-Wformat-truncation-non-kprintf]
drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c:545:5: error: no previous prototype for function 'ps3_pci_init' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c:899:5: error: no previous prototype for function 'ps3_pci_init_complete' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c:945:6: error: no previous prototype for function 'ps3_pci_init_complete_exit' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_cli_debug.c:1059:5: error: no previous prototype for function 'ps3_dump_context_show' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_driver_log.c:41:19: error: unused function 'time_for_log' [-Werror,-Wunused-function]
drivers/scsi/linkdata/ps3stor/./linux/ps3_driver_log.c:65:19: error: unused function 'time_for_file_name' [-Werror,-Wunused-function]
drivers/scsi/linkdata/ps3stor/./linux/ps3_dump.c:159:5: error: no previous prototype for function 'ps3_dump_file_write' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_dump.c:200:5: error: no previous prototype for function 'ps3_dump_file_close' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_dump.c:28:5: error: no previous prototype for function 'ps3_dump_local_time' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_dump.c:50:5: error: no previous prototype for function 'ps3_dump_filename_build' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/./linux/ps3_dump.c:76:5: error: no previous prototype for function 'ps3_dump_file_open' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:131:6: error: no previous prototype for function 'ps3_trigger_irq_poll' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:243:5: error: no previous prototype for function 'ps3_resp_status_convert' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:403:6: error: no previous prototype for function 'ps3_io_recv_ok_stat_inc' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:85:6: error: no previous prototype for function 'ps3_cmd_stat_content_clear' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_debug.c:883:5: error: no previous prototype for function 'ps3_dump_dir_length' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_device_manager.c:1581:5: error: no previous prototype for function 'ps3_scsi_private_init_pd' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_device_manager.c:1663:5: error: no previous prototype for function 'ps3_scsi_private_init_vd' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_device_manager_sas.c:1632:5: error: no previous prototype for function 'ps3_sas_expander_phys_refresh' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_ioc_adp.c:147:6: error: no previous prototype for function 'ps3_ioc_resource_prepare_hba' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_ioc_adp.c:36:6: error: no previous prototype for function 'ps3_ioc_resource_prepare_switch' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_ioc_adp.c:88:6: error: no previous prototype for function 'ps3_ioc_resource_prepare_raid' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_ioc_manager.c:307:5: error: no previous prototype for function 'ps3_hard_reset_to_ready' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_ioctl.c:785:6: error: no previous prototype for function 'ps3_clean_mgr_cmd' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_irq.c:21:27: error: unused variable 'PS3_INTERRUPT_CMD_DISABLE_ALL_MASK' [-Werror,-Wunused-const-variable]
drivers/scsi/linkdata/ps3stor/ps3_irq.c:22:27: error: unused variable 'PS3_INTERRUPT_CMD_ENABLE_MSIX' [-Werror,-Wunused-const-variable]
drivers/scsi/linkdata/ps3stor/ps3_irq.c:23:27: error: unused variable 'PS3_INTERRUPT_MASK_DISABLE' [-Werror,-Wunused-const-variable]
drivers/scsi/linkdata/ps3stor/ps3_irq.c:24:27: error: unused variable 'PS3_INTERRUPT_STATUS_EXIST_IRQ' [-Werror,-Wunused-const-variable]
drivers/scsi/linkdata/ps3stor/ps3_irq.c:25:27: error: unused variable 'PS3_INTERRUPT_CLEAR_IRQ' [-Werror,-Wunused-const-variable]
drivers/scsi/linkdata/ps3stor/ps3_irq.c:27:27: error: unused variable 'PS3_SSD_IOPS_MSIX_VECTORS' [-Werror,-Wunused-const-variable]
drivers/scsi/linkdata/ps3stor/ps3_irq.c:28:27: error: unused variable 'PS3_HDD_IOPS_MSIX_VECTORS' [-Werror,-Wunused-const-variable]
drivers/scsi/linkdata/ps3stor/ps3_module_para.c:609:14: error: no previous prototype for function 'ps3_cli_ver_query' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:1058:6: error: no previous prototype for function 'ps3_qos_pd_waitq_ratio_update' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2019:15: error: no previous prototype for function 'ps3_hba_qos_decision' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2040:6: error: no previous prototype for function 'ps3_hba_qos_waitq_notify' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2100:6: error: no previous prototype for function 'ps3_cmd_waitq_abort' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:211:1: error: no previous prototype for function 'ps3_qos_cmd_waitq_get' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2463:6: error: no previous prototype for function 'ps3_hba_qos_waitq_clear_all' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2827:6: error: no previous prototype for function 'ps3_hba_qos_vd_init' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2936:6: error: no previous prototype for function 'ps3_hba_qos_vd_reset' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3023:6: error: no previous prototype for function 'ps3_hba_qos_waitq_poll' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3279:15: error: no previous prototype for function 'ps3_raid_qos_decision' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3334:6: error: no previous prototype for function 'ps3_qos_mgrq_resend' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:335:15: error: no previous prototype for function 'ps3_qos_vd_cmdword_get' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3478:6: error: no previous prototype for function 'ps3_raid_qos_waitq_notify' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:351:15: error: no previous prototype for function 'ps3_qos_exclusive_cmdword_get' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:363:15: error: no previous prototype for function 'ps3_qos_tg_decision' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3821:15: error: no previous prototype for function 'ps3_raid_qos_waitq_abort' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:749:15: error: no previous prototype for function 'ps3_qos_all_pd_rc_get' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:876:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clear_all' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_qos.c:892:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clean' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_r1x_write_lock.c:1173:5: error: no previous prototype for function 'ps3_range_check_and_insert' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_r1x_write_lock.c:1231:5: error: no previous prototype for function 'ps3_r1x_hash_range_lock' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_r1x_write_lock.c:1312:6: error: no previous prototype for function 'ps3_r1x_hash_range_unlock' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_r1x_write_lock.c:578:5: error: no previous prototype for function 'ps3_r1x_hash_bit_check' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_r1x_write_lock.c:678:6: error: no previous prototype for function 'ps3_r1x_conflict_queue_hash_bit_lock' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_r1x_write_lock.c:730:5: error: no previous prototype for function 'ps3_r1x_hash_bit_lock' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_r1x_write_lock.c:988:6: error: no previous prototype for function 'ps3_r1x_hash_bit_unlock' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_rb_tree.c:154:6: error: no previous prototype for function 'rbtDelNodeDo' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_recovery.c:204:6: error: no previous prototype for function 'ps3_recovery_irq_queue_destroy' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_recovery.c:2700:6: error: no previous prototype for function 'ps3_hard_recovery_state_finish' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_recovery.c:363:5: error: no previous prototype for function 'ps3_recovery_state_transfer' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_recovery.c:72:30: error: no previous prototype for function 'ps3_recovery_context_alloc' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_recovery.c:82:6: error: no previous prototype for function 'ps3_recovery_context_free' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_recovery.c:88:6: error: no previous prototype for function 'ps3_recovery_context_delete' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_sas_transport.c:407:5: error: no previous prototype for function 'ps3_sas_update_phy_info' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:1110:5: error: no previous prototype for function 'ps3_wait_for_outstanding_complete' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:876:6: error: no previous prototype for function 'ps3_set_task_manager_busy' [-Werror,-Wmissing-prototypes]
drivers/scsi/linkdata/ps3stor/ps3_scsih.c:1958:1: error: unused function 'ps3_scsih_dev_id_get' [-Werror,-Wunused-function]
drivers/spi/spi-axi-spi-engine.c:101: warning: Function parameter or member 'p' not described in 'spi_engine_message_state'
drivers/ub/obmm/obmm_addr_check.c:53:14: warning: variable 'user' set but not used [-Wunused-but-set-variable]
drivers/xcu/xcu_group.c:41:5: warning: no previous prototype for function '__xcu_group_attach' [-Wmissing-prototypes]
fs/nfs/dir.c:1500:6: warning: no previous prototype for function 'nfs_check_have_lookup_cache_flag' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:123: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
fs/nfs/enfs/dns_process.c:125:6: warning: no previous prototype for function 'enfs_swap_name_cache' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:144:6: warning: no previous prototype for function 'enfs_domain_inc' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:213:6: warning: no previous prototype for function 'ip_list_append' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:357:5: warning: no previous prototype for function 'enfs_quick_sort' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:390:5: warning: no previous prototype for function 'enfs_dns_process_ip' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:430:5: warning: no previous prototype for function 'enfs_server_query_dns' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:490:6: warning: no previous prototype for function 'query_dns_each_name' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:578:5: warning: no previous prototype for function 'enfs_iter_nfs_clnt' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:665:6: warning: no previous prototype for function 'enfs_domain_for_each' [-Wmissing-prototypes]
fs/nfs/enfs/dns_process.c:88:6: warning: no previous prototype for function 'enfs_update_domain_name' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_config.c:551:6: warning: no previous prototype for function 'enfs_glob_match' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:111:6: warning: no previous prototype for function 'enfs_update_lookup_cache_flag_to_server' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:145:5: warning: no previous prototype for function 'enfs_query_lookup_cache' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:246:6: warning: no previous prototype for function 'enfs_query_lookup_cache_pre_check' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:264:6: warning: no previous prototype for function 'lookupcache_execute_work' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:287:5: warning: no previous prototype for function 'lookupcache_add_work' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:356:6: warning: no previous prototype for function 'lookupcache_loop_rpclnt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:405:6: warning: no previous prototype for function 'enfs_lookupcache_update_switch' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:422:5: warning: no previous prototype for function 'lookupcache_routine' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:442:5: warning: no previous prototype for function 'lookupcache_start' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:453:5: warning: no previous prototype for function 'enfs_lookupcache_workqueue_init' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:464:6: warning: no previous prototype for function 'lookupcache_workqueue_fini' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:472:5: warning: no previous prototype for function 'enfs_lookupcache_timer_init' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_lookup_cache.c:97:6: warning: no previous prototype for function 'enfs_clean_server_lookup_cache_flag' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath.c:178: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
fs/nfs/enfs/enfs_multipath.c:315:5: warning: no previous prototype for function 'enfs_configure_xprt_to_clnt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath.c:349:6: warning: no previous prototype for function 'enfs_cmp_addrs' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath.c:366:6: warning: no previous prototype for function 'enfs_xprt_addrs_is_same' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath.c:385:6: warning: no previous prototype for function 'enfs_already_have_xprt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath.c:582:6: warning: variable 'link_count' set but not used [-Wunused-but-set-variable]
fs/nfs/enfs/enfs_multipath.c:823:5: warning: no previous prototype for function 'enfs_multipath_create_thread' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath.c:919:6: warning: no previous prototype for function 'enfs_create_multi_xprt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath.c:971:6: warning: no previous prototype for function 'enfs_release_rpc_clnt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:154:5: warning: no previous prototype for function 'enfs_parse_ip_single' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:201:7: warning: no previous prototype for function 'nfs_multipath_parse_ip_list_get_cursor' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:20:6: warning: no previous prototype for function 'nfs_multipath_parse_ip_ipv6_add' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:228:6: warning: no previous prototype for function 'enfs_valid_ip' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:240:5: warning: no previous prototype for function 'nfs_multipath_parse_ip_list' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:353:6: warning: no previous prototype for function 'isInvalidDns' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:379:5: warning: no previous prototype for function 'nfs_multipath_parse_dns_list' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:423:5: warning: no previous prototype for function 'parse_remote_type' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:463:5: warning: no previous prototype for function 'nfs_multipath_parse_options_check_ipv4_valid' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:470:5: warning: no previous prototype for function 'nfs_multipath_parse_options_check_ipv6_valid' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:486:5: warning: no previous prototype for function 'nfs_multipath_parse_options_check_ip_valid' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:502:5: warning: no previous prototype for function 'nfs_multipath_parse_options_check_valid' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:528:5: warning: no previous prototype for function 'nfs_multipath_parse_options_check_duplicate' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_multipath_parse.c:553:5: warning: no previous prototype for function 'nfs_multipath_parse_options_check' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_proc.c:547:30: warning: unused variable 'shardview_proc_fops' [-Wunused-const-variable]
fs/nfs/enfs/enfs_remount.c:101:6: warning: no previous prototype for function 'enfs_clnt_delete_obsolete_xprts' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_roundrobin.c:108:1: warning: no previous prototype for function 'enfs_lb_switch_find_first_active_xprt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_roundrobin.c:119:18: warning: no previous prototype for function 'enfs_lb_switch_get_main_xprt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_roundrobin.c:169:18: warning: no previous prototype for function 'enfs_lb_get_singular_xprt' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_roundrobin.c:330:5: warning: no previous prototype for function 'enfs_lb_revert_policy' [-Wmissing-prototypes]
fs/nfs/enfs/enfs_rpc_init.c:7:5: warning: no previous prototype for function 'enfs_rpc_init' [-Wmissing-prototypes]
fs/nfs/enfs/exten_call.c:180:5: warning: no previous prototype for function 'NfsExtendDecodeFsShard' [-Wmissing-prototypes]
fs/nfs/enfs/exten_call.c:265:5: warning: no previous prototype for function 'NfsExtendDecodeLifInfo' [-Wmissing-prototypes]
fs/nfs/enfs/exten_call.c:533:5: warning: no previous prototype for function 'EnfsExtendDecodePreCheck' [-Wmissing-prototypes]
fs/nfs/enfs/exten_call.c:601:5: warning: no previous prototype for function 'dorado_extend_route' [-Wmissing-prototypes]
fs/nfs/enfs/exten_call.c:662:6: warning: no previous prototype for function 'nego_enfs_version' [-Wmissing-prototypes]
fs/nfs/enfs/exten_call.c:947:6: warning: no previous prototype for function 'NfsExtendDnsQuerySetArgs' [-Wmissing-prototypes]
fs/nfs/enfs/exten_call.c:958:6: warning: no previous prototype for function 'NfsExtendDnsQuerySetRes' [-Wmissing-prototypes]
fs/nfs/enfs/failover_path.c:239: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
fs/nfs/enfs/pm_state.c:83:6: warning: variable 'ret' set but not used [-Wunused-but-set-variable]
fs/nfs/enfs/shard_route.c:257: warning: Function parameter or member '__list_name' not described in 'DEFINE_CLEAR_LIST_FUNC'
fs/nfs/enfs/shard_route.c:257: warning: Function parameter or member '__struct_name' not described in 'DEFINE_CLEAR_LIST_FUNC'
fs/nfs/enfs/shard_route.c:333: warning: Cannot understand * @return:0 for success,otherwise for failed
fs/nfs/enfs_adapter.c:47:26: warning: no previous prototype for function 'nfs_multipath_router_get' [-Wmissing-prototypes]
fs/nfs/enfs_adapter.c:63:6: warning: no previous prototype for function 'nfs_multipath_router_put' [-Wmissing-prototypes]
fs/nfs/enfs_adapter.c:69:6: warning: no previous prototype for function 'is_valid_option' [-Wmissing-prototypes]
fs/nfs/fs_context.c:374:26: warning: no previous prototype for function 'getNfsMultiPathOpt' [-Wmissing-prototypes]
fs/proc/stat.c:227:17: warning: no previous prototype for function 'bpf_get_idle_time' [-Wmissing-prototypes]
fs/proc/stat.c:232:17: warning: no previous prototype for function 'bpf_get_iowait_time' [-Wmissing-prototypes]
fs/proc/stat.c:237:18: warning: no previous prototype for function 'bpf_show_all_irqs' [-Wmissing-prototypes]
fs/reiserfs/reiserfs.o: warning: objtool: balance_leaf+0x81f9: stack state mismatch: cfa1=4+368 cfa2=4+360
fs/resctrl/monitor.c:51: warning: Cannot understand * @closid_num_dirty_rmid The number of dirty RMID each CLOSID has.
fs/xfs/libxfs/xfs_alloc.c:103:1: warning: no previous prototype for function 'xfs_ag_fixup_aside' [-Wmissing-prototypes]
include/linux/fortify-string.h:597:4: warning: call to '__write_overflow_field' declared with 'warning' attribute: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Wattribute-warning]
include/net/sock.h:392:45: error: 'struct sock_common' has no member named 'skc_v6_daddr'; did you mean 'skc_daddr'?
kernel/cpu.c:2684: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
kernel/crash_core.c:749:1: sparse: sparse: symbol '__crash_hotplug_lock' was not declared. Should it be static?
kernel/fork.c:2233: warning: Excess function parameter 'pidfd' description in '__pidfd_prepare'
kernel/fork.c:2233: warning: Function parameter or member 'ret' not described in '__pidfd_prepare'
kernel/fork.c:2282: warning: Excess function parameter 'pidfd' description in 'pidfd_prepare'
kernel/fork.c:2282: warning: Function parameter or member 'ret' not described in 'pidfd_prepare'
kernel/irq/proc.c:338:13: warning: no previous prototype for function 'register_irqchip_proc' [-Wmissing-prototypes]
kernel/irq/proc.c:339:13: warning: no previous prototype for function 'unregister_irqchip_proc' [-Wmissing-prototypes]
kernel/locking/mutex.c:623:6: warning: variable 'ifs_clock' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
kernel/power/swap.c:1572: warning: Excess function parameter 'exclusive' description in 'swsusp_close'
kernel/sched/core.c:11465:5: warning: no previous prototype for function 'tg_set_dynamic_affinity_mode' [-Wmissing-prototypes]
kernel/sched/core.c:11506:5: warning: no previous prototype for function 'tg_set_affinity_period' [-Wmissing-prototypes]
kernel/sched/core.c:11520:5: warning: no previous prototype for function 'tg_get_affinity_period' [-Wmissing-prototypes]
kernel/xsched/cfs.c:108: warning: Excess function parameter 'gxcu' description in 'xg_update'
kernel/xsched/cfs.c:108: warning: Function parameter or member 'task_delta' not described in 'xg_update'
kernel/xsched/cfs.c:108: warning: Function parameter or member 'xg' not described in 'xg_update'
kernel/xsched/cfs.c:22:6: warning: no previous prototype for function 'xs_rq_add' [-Wmissing-prototypes]
kernel/xsched/cfs.c:233:6: warning: no previous prototype for function 'rq_init_fair' [-Wmissing-prototypes]
kernel/xsched/cfs.c:238:6: warning: no previous prototype for function 'xse_init_fair' [-Wmissing-prototypes]
kernel/xsched/cfs.c:243:6: warning: no previous prototype for function 'xse_deinit_fair' [-Wmissing-prototypes]
kernel/xsched/cfs.c:45:6: warning: no previous prototype for function 'xs_rq_remove' [-Wmissing-prototypes]
kernel/xsched/cfs.c:56: warning: Function parameter or member 'new_xrt' not described in 'xs_cfs_rq_update'
kernel/xsched/cfs.c:56: warning: Function parameter or member 'xse_cfs' not described in 'xs_cfs_rq_update'
kernel/xsched/cgroup.c:402:6: warning: no previous prototype for function 'xcu_move_task' [-Wmissing-prototypes]
kernel/xsched/cgroup.c:65: warning: Cannot understand * @brief Initialize the core components of an xsched_group.
kernel/xsched/core.c:188:5: warning: no previous prototype for function 'xsched_xse_set_class' [-Wmissing-prototypes]
kernel/xsched/core.c:514:12: warning: no previous prototype for function 'xsched_sched_init' [-Wmissing-prototypes]
kernel/xsched/rt.c:122:6: warning: no previous prototype for function 'rq_init_rt' [-Wmissing-prototypes]
kernel/xsched/rt.c:133:6: warning: no previous prototype for function 'xse_init_rt' [-Wmissing-prototypes]
kernel/xsched/rt.c:144:6: warning: no previous prototype for function 'xse_deinit_rt' [-Wmissing-prototypes]
kernel/xsched/vstream.c:99:19: warning: no previous prototype for function 'xcu_find' [-Wmissing-prototypes]
lib/kunit/test.c:764:38: warning: cast from 'void (*)(const void *)' to 'kunit_action_t *' (aka 'void (*)(void *)') converts to incompatible function type [-Wcast-function-type-strict]
lib/kunit/test.c:862:38: warning: cast from 'void (*)(const void *)' to 'kunit_action_t *' (aka 'void (*)(void *)') converts to incompatible function type [-Wcast-function-type-strict]
lib/test_kmod.c:100: warning: Function parameter or member 'task_sync' not described in 'kmod_test_device_info'
lib/test_kmod.c:134: warning: Function parameter or member 'thread_mutex' not described in 'kmod_test_device'
mm/madvise.c:285:6: warning: no previous prototype for 'force_swapin_vma' [-Wmissing-prototypes]
mm/madvise.c:285:6: warning: no previous prototype for function 'force_swapin_vma' [-Wmissing-prototypes]
mm/memblock.c:1444:20: warning: no previous prototype for 'memblock_alloc_range_nid_flags' [-Wmissing-prototypes]
mm/memblock.c:1444:20: warning: no previous prototype for function 'memblock_alloc_range_nid_flags' [-Wmissing-prototypes]
mm/memblock.c:1611: warning: expecting prototype for memblock_alloc_internal(). Prototype was for __memblock_alloc_internal() instead
mm/mempolicy.c:1145:25: warning: variable 'vma' set but not used [-Wunused-but-set-variable]
net/ipv4/tcp_comp.c:740:6: warning: no previous prototype for function 'comp_stream_read' [-Wmissing-prototypes]
net/ipv4/tcp_comp.c:779:6: warning: no previous prototype for function 'comp_setup_strp' [-Wmissing-prototypes]
security/integrity/ima/ima_tpm.c:19:6: warning: no previous prototype for 'ima_pcrread' [-Wmissing-prototypes]
security/integrity/ima/ima_tpm.c:41:5: warning: no previous prototype for 'ima_tpm_init' [-Wmissing-prototypes]
security/integrity/ima/ima_tpm.c:53:5: warning: no previous prototype for 'ima_tpm_extend' [-Wmissing-prototypes]
security/integrity/ima/ima_tpm.c:60:5: warning: no previous prototype for 'ima_tpm_calc_boot_aggregate' [-Wmissing-prototypes]
Unverified Error/Warning (likely false positive, kindly check if interested):
lib/crypto/mpi/mpi-inv.c:34:15: warning: variable 'k' set but not used [-Wunused-but-set-variable]
Error/Warning ids grouped by kconfigs:
recent_errors
|-- arm64-allmodconfig
| `-- drivers-ub-obmm-obmm_addr_check.c:warning:variable-user-set-but-not-used
|-- arm64-allnoconfig
| |-- block-genhd.c:warning:no-previous-prototype-for-part_stat_read_all
| |-- drivers-irqchip-irq-gic-v3.c:warning:no-previous-prototype-for-gic_irq_set_prio
| |-- kernel-cpu.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-pidfd_prepare
| |-- mm-madvise.c:warning:no-previous-prototype-for-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| `-- mm-memblock.c:warning:no-previous-prototype-for-memblock_alloc_range_nid_flags
|-- arm64-defconfig
| |-- arch-arm64-kernel-cpufeature.c:warning:enable_pseudo_nmi-defined-but-not-used
| |-- arch-arm64-kvm-arm.c:warning:no-previous-prototype-for-kvm_arch_rec_init
| |-- arch-arm64-kvm-cca_base.c:warning:no-previous-prototype-for-set_cca_cvm_type
| |-- drivers-irqchip-irq-gic-v3-its.c:warning:no-previous-prototype-for-gic_data_rdist_get_vlpi_base
| |-- drivers-irqchip-irq-gic-v3.c:warning:no-previous-prototype-for-gic_dist_enable_ipiv
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_debugfs.c:error:no-previous-prototype-for-sxe_debugfs_entries_exit
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_debugfs.c:error:no-previous-prototype-for-sxe_debugfs_entries_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_debugfs.c:error:no-previous-prototype-for-sxe_debugfs_exit
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_debugfs.c:error:no-previous-prototype-for-sxe_debugfs_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_ethtool.c:error:no-previous-prototype-for-sxe_phys_id_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_ethtool.c:error:no-previous-prototype-for-sxe_reg_test
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_ethtool.c:error:suggest-braces-around-empty-body-in-an-if-statement
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_fc_autoneg_localcap_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_all_irq_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_all_ring_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_crc_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_dcb_max_mem_window_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_dcb_pfc_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_dcb_rate_limiter_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_dcb_rx_bw_alloc_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_dcb_tx_data_bw_alloc_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_dcb_tx_desc_bw_alloc_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_dcb_tx_ring_rate_factor_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_event_irq_auto_clear_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_event_irq_map
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fc_autoneg_disable_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fc_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fc_mac_addr_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fc_requested_mode_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fc_tc_high_water_mark_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fc_tc_low_water_mark_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fnav_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fnav_port_mask_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fnav_sample_rule_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fnav_sample_rules_table_reinit
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fnav_specific_rule_add
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fnav_specific_rule_del
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_fnav_specific_rule_mask_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_channel_state_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_drv_status_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_fw_ack_header_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_fw_ov_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_fw_status_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_is_fw_over_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_lock_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_lock_release
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_packet_data_dword_rcv
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_packet_data_dword_send
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_packet_header_send
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_hdc_packet_send_done
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_irq_cause_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_irq_general_reg_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_irq_general_reg_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_is_fc_autoneg_disabled
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_is_link_state_up
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_link_speed_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_link_speed_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_loopback_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mac_max_frame_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mac_max_frame_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mac_pad_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mac_txrx_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mbx_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mbx_mem_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mc_filter_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mc_filter_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mta_hash_table_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_mta_hash_table_update
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_nic_reset
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_no_snoop_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pcie_vt_mode_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pending_irq_read_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pending_irq_write_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pf_rst_done_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pfc_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pool_mac_anti_spoof_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pool_rx_mode_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pool_rx_mode_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_pool_rx_ring_drop_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_is_rx_timestamp_valid
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_rx_timestamp_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_rx_timestamp_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_systime_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_systime_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_timestamp_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_timestamp_mode_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ptp_tx_timestamp_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rcv_msg_from_vf
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ring_irq_auto_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ring_irq_interval_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_ring_irq_map
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rss_key_set_all
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rss_redir_tbl_reg_write
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rss_redir_tbl_set_all
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_cap_switch_off
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_cap_switch_on
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_desc_thresh_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_dma_ctrl_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_dma_lro_ctrl_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_drop_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_lro_ack_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_lro_ctl_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_lro_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_mode_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_mode_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_multi_ring_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_nfs_filter_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_pkt_buf_size_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_pool_bitmap_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_pool_bitmap_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_queue_desc_reg_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_rcv_ctl_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_ring_desc_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_ring_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_ring_switch_not_polling
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_rx_udp_frag_checksum_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_send_msg_to_vf
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_specific_irq_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_specific_irq_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_spoof_count_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_stats_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_stats_regs_clean
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_stats_seq_clean
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_desc_thresh_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_pkt_buf_size_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_pkt_buf_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_pkt_buf_thresh_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_pool_bitmap_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_pool_bitmap_set
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_ring_desc_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_ring_head_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_ring_info_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_ring_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_ring_switch_not_polling
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_ring_tail_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_vlan_insert_get
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_tx_vlan_tag_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_uc_addr_add
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_uc_addr_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_uc_addr_del
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_uc_addr_pool_del
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_uc_addr_pool_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vf_ack_check
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vf_req_check
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vf_rst_check
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlan_filter_array_clear
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlan_filter_array_read
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlan_filter_array_write
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlan_filter_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlan_filter_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlan_pool_filter_read
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlan_tag_strip_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vlvf_slot_find
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vt_ctrl_cfg
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vt_disable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-sxe_hw_vt_pool_loopback_switch
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:suggest-braces-around-empty-body-in-an-if-statement
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_irq.c:error:no-previous-prototype-for-sxe_disable_dcb
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_irq.c:error:no-previous-prototype-for-sxe_disable_rss
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_irq.c:error:no-previous-prototype-for-sxe_lsc_irq_handler
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_irq.c:error:no-previous-prototype-for-sxe_mailbox_irq_handler
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_irq.c:error:no-previous-prototype-for-sxe_msi_irq_init
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_main.c:error:no-previous-prototype-for-sxe_allow_inval_mac
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_phy.c:error:no-previous-prototype-for-sxe_multispeed_sfp_link_configure
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_rx_proc.c:error:no-previous-prototype-for-sxe_headers_cleanup
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_rx_proc.c:error:no-previous-prototype-for-sxe_rx_buffer_page_offset_update
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_sriov.c:error:no-previous-prototype-for-sxe_set_vf_link_enable
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_sriov.c:error:variable-ret-set-but-not-used
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_xdp.c:error:no-previous-prototype-for-sxe_txrx_ring_enable
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_32bit_counter_update
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_36bit_counter_update
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_event_irq_map
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_hw_reset
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_hw_ring_irq_map
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_hw_stop
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_irq_disable
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_irq_enable
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_link_state_get
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_mailbox_read
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_mailbox_write
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_msg_read
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_msg_write
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_packet_stats_get
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_pf_ack_irq_trigger
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_pf_req_irq_trigger
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_ring_irq_interval_set
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_rx_rcv_ctl_configure
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_rx_ring_desc_configure
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_rx_ring_switch
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_specific_irq_enable
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_stats_init_value_get
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-sxevf_tx_ring_switch
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_rx_proc.c:error:no-previous-prototype-for-sxevf_rx_ring_buffers_alloc
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_tx_proc.c:error:no-previous-prototype-for-sxevf_tx_ring_alloc
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_tx_proc.c:error:no-previous-prototype-for-sxevf_tx_ring_free
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_tx_proc.c:error:suggest-braces-around-empty-body-in-an-else-statement
| `-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_tx_proc.c:error:suggest-braces-around-empty-body-in-an-if-statement
|-- arm64-randconfig-001-20251216
| `-- drivers-irqchip-irq-gic-v3.c:warning:no-previous-prototype-for-function-gic_irq_set_prio
|-- arm64-randconfig-002-20251215
| |-- arch-arm64-kernel-cpufeature.c:warning:unused-variable-enable_pseudo_nmi
| |-- drivers-net-ethernet-huawei-hinic-hinic_dcb.c:error:invalid-application-of-sizeof-to-an-incomplete-type-struct-ieee_ets
| `-- drivers-net-ethernet-huawei-hinic-hinic_nic_dev.h:error:field-has-incomplete-type-struct-ieee_pfc
|-- arm64-randconfig-002-20251218
| `-- drivers-clocksource-arm_arch_timer.c:warning:unused-variable-hisi_165010801_oem_info
|-- arm64-randconfig-003-20251216
| |-- drivers-cpufreq-cppc_cpufreq.c:error:invalid-use-of-undefined-type-struct-fb_ctr_pair
| |-- drivers-cpufreq-cppc_cpufreq.c:error:struct-fb_ctr_pair-has-no-member-named-cpu
| |-- drivers-cpufreq-cppc_cpufreq.c:error:variable-fb_ctrs-has-initializer-but-incomplete-type
| |-- drivers-cpufreq-cppc_cpufreq.c:warning:excess-elements-in-struct-initializer
| |-- drivers-cpufreq-cppc_cpufreq.c:warning:unused-variable-fb_ctrs
| |-- drivers-net-ethernet-huawei-hinic-hinic_main.c:warning:no-previous-prototype-for-hinic_netdev_event
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bat_cla.c:warning:s-directive-output-may-be-truncated-writing-up-to-bytes-into-a-region-of-size
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bitmap_alloc()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bitmap_alloc_low2bit_align()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bitmap_alloc_reserved()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bitmap_check_range()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bitmap_free()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bitmap_init()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_bitmap_uninit()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_buf_alloc()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_buf_free()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_check_align()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_kfree_align()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_kmalloc_align()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_table_get()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_table_init()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_table_insert()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_table_remove()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_object_table_uninit()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_shift()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_single_bitmap_init()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_single_object_table_init()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_swab32()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_bitmap_table.c:warning:expecting-prototype-for-Prototype().-Prototype-was-for-cqm_swab64()-instead
| |-- drivers-net-ethernet-huawei-hinic3-cqm-cqm_main.c:warning:s-directive-output-may-be-truncated-writing-up-to-bytes-into-a-region-of-size
| |-- drivers-net-ethernet-huawei-hinic3-hinic3_ethtool.c:warning:no-previous-prototype-for-hinic3_set_rxq_recovery_flag
| |-- drivers-net-ethernet-huawei-hinic3-hinic3_mag_cfg.c:warning:rx-power:directive-output-may-be-truncated-writing-bytes-into-a-region-of-size-between-and
| |-- drivers-net-ethernet-huawei-hinic3-hinic3_tx.c:warning:no-previous-prototype-for-hinic3_tx_offload
| |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_lld.c:error:implicit-declaration-of-function-__symbol_get
| |-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_lld.c:error:implicit-declaration-of-function-__symbol_put
| `-- drivers-net-ethernet-huawei-hinic3-hw-hinic3_lld.c:warning:assignment-to-int-(-)(struct-pci_dev-)-from-int-makes-pointer-from-integer-without-a-cast
|-- arm64-randconfig-r132-20251218
| |-- drivers-irqchip-irq-gic-phytium-.c:sparse:sparse:dereference-of-noderef-expression
| |-- drivers-irqchip-irq-gic-phytium-.c:sparse:sparse:dubious:x-y
| |-- drivers-irqchip-irq-gic-phytium-its.c:sparse:sparse:dereference-of-noderef-expression
| |-- drivers-irqchip-irq-gic-phytium-its.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-cpumask-usertype-mask-got-struct-cpumask-usertype-noderef-__percpu
| |-- drivers-irqchip-irq-gic-phytium-its.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-struct-raw_spinlock-usertype-lock-got-struct-raw_spinlock-noderef-__percpu
| |-- drivers-platform-mpam-mpam_resctrl.c:sparse:sparse:symbol-__mon_is_rmid_idx-was-not-declared.-Should-it-be-static
| |-- drivers-platform-mpam-mpam_resctrl.c:sparse:sparse:symbol-resctrl_mon_ctx_waiters-was-not-declared.-Should-it-be-static
| |-- security-integrity-ima-ima_digest_list.c:sparse:sparse:cast-to-restricted-__le16
| |-- security-integrity-ima-ima_digest_list.c:sparse:sparse:cast-to-restricted-__le32
| `-- security-integrity-ima-ima_digest_list.c:sparse:sparse:symbol-parser_task-was-not-declared.-Should-it-be-static
|-- loongarch-allnoconfig
| |-- block-genhd.c:warning:no-previous-prototype-for-function-part_stat_read_all
| |-- kernel-cpu.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-pidfd_prepare
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-register_irqchip_proc
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-unregister_irqchip_proc
| |-- kernel-locking-mutex.c:warning:variable-ifs_clock-is-used-uninitialized-whenever-if-condition-is-true
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| `-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
|-- x86_64-allmodconfig
| |-- arch-x86-kernel-cpu-proc.c:warning:no-previous-prototype-for-function-show_cpuinfo
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-csv3_launch_encrypt_data_alt_1
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-csv3_launch_encrypt_data_alt_2
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-end_pgoff-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-csv3_launch_encrypt_data_alt_1
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-csv3_launch_encrypt_data_alt_2
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-params-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-src_buf-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-start_pgoff-not-described-in-__csv3_launch_encrypt_data
| |-- block-blk-cgroup.c:warning:no-previous-prototype-for-function-bpf_blkcg_get_dev_iostat
| |-- block-genhd.c:warning:no-previous-prototype-for-function-part_stat_read_all
| |-- clang:warning:no-such-include-directory:drivers-infiniband-hw-hiroce3-include-mag
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Excess-function-parameter-_data-description-in-pgp_parse_packets
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Excess-function-parameter-_datalen-description-in-pgp_parse_packets
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Function-parameter-or-member-data-not-described-in-pgp_parse_packets
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Function-parameter-or-member-datalen-not-described-in-pgp_parse_packets
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-add_sgpio_zhaoxin
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-ahci_wait_em_reset
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-ahci_zhaoxin_set_em_sgpio
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-ahci_zhaoxin_set_em_sgpio_gpmode
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-set_em_messages
| |-- drivers-ata-libahci.c:warning:no-previous-prototype-for-function-get_ahci_em_messages
| |-- drivers-block-drbd-drbd_bitmap.c:warning:Function-parameter-or-member-peer_device-not-described-in-drbd_bm_write
| |-- drivers-clk-renesas-r9a06g032-clocks.c:warning:Function-parameter-or-member-dual-not-described-in-r9a06g032_clkdesc
| |-- drivers-crypto-ccp-hygon-ccp-mdev.c:warning:no-previous-prototype-for-function-ccp_pin_memory
| |-- drivers-crypto-ccp-hygon-csv-dev.c:warning:Function-parameter-or-member-api_minor-not-described-in-user_data_status
| |-- drivers-crypto-ccp-hygon-hct.c:warning:no-previous-prototype-for-function-hct_pin_memory
| |-- drivers-crypto-ccp-hygon-psp-dev.c:warning:no-previous-prototype-for-function-atomic64_exchange
| |-- drivers-crypto-ccp-hygon-psp-dev.c:warning:no-previous-prototype-for-function-psp_mutex_init
| |-- drivers-crypto-ccp-hygon-tdm-kernel-guard.c:warning:no-previous-prototype-for-function-tdm_service_exit
| |-- drivers-crypto-ccp-hygon-tdm-kernel-guard.c:warning:no-previous-prototype-for-function-tdm_service_run
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:no-previous-prototype-for-function-vpsp_do_cmd
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:no-previous-prototype-for-function-vpsp_set_default_vid_permission
| |-- drivers-dax-super.c:warning:Function-parameter-or-member-KABI_RESERVE(-not-described-in-dax_device
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_config_pix_clock
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_reset
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_update_cursor_hi_addr
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_update_primary_hi_addr
| |-- drivers-gpu-drm-phytium-pe22_dp.c:warning:no-previous-prototype-for-function-pe22_dp_hw_reset
| |-- drivers-gpu-drm-phytium-phytium_crtc.c:warning:no-previous-prototype-for-function-phytium_crtc_atomic_destroy_state
| |-- drivers-gpu-drm-phytium-phytium_crtc.c:warning:no-previous-prototype-for-function-phytium_crtc_atomic_duplicate_state
| |-- drivers-gpu-drm-phytium-phytium_debugfs.c:warning:no-previous-prototype-for-function-phytium_debugfs_connector_add
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_adjust_link_train_parameter
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_fast_link_train
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_get_link_train_fallback_values
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hpd_poll_handler
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_disable_input_source
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_disable_video
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_enable_audio
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_enable_input_source
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_enable_output
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_hpd_irq_setup
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_output_is_enable
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_start_link_train
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_encoder_mode_valid
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_get_encoder_crtc_mask
| |-- drivers-gpu-drm-phytium-phytium_fbdev.c:warning:no-previous-prototype-for-function-phytium_drm_fbdev_init
| |-- drivers-gpu-drm-phytium-phytium_gem.c:warning:no-previous-prototype-for-function-phytium_dma_transfer
| |-- drivers-gpu-drm-phytium-phytium_panel.c:warning:no-previous-prototype-for-function-phytium_dp_panel_release_backlight_funcs
| |-- drivers-gpu-drm-phytium-phytium_pci.c:warning:no-previous-prototype-for-function-phytium_pci_dma_init
| |-- drivers-gpu-drm-phytium-phytium_pci.c:warning:no-previous-prototype-for-function-phytium_pci_vram_hw_init
| |-- drivers-gpu-drm-phytium-phytium_plane.c:warning:no-previous-prototype-for-function-phytium_plane_atomic_duplicate_state
| |-- drivers-gpu-drm-phytium-phytium_plane.c:warning:no-previous-prototype-for-function-phytium_plane_destroy
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_plane_get_cursor_format
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_plane_get_primary_format
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_update_dcreq
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_update_primary_hi_addr
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_vram_init
| |-- drivers-gpu-drm-phytium-px210_dp.c:warning:no-previous-prototype-for-function-px210_dp_hw_reset
| |-- drivers-gpu-drm-phytium-px210_dp.c:warning:no-previous-prototype-for-function-px210_dp_hw_spread_is_enable
| |-- drivers-i2c-busses-i2c-zhaoxin.c:warning:no-previous-prototype-for-function-zxi2c_fifo_irq_xfer
| |-- drivers-i2c-busses-i2c-zhaoxin.c:warning:no-previous-prototype-for-function-zxi2c_xfer
| |-- drivers-infiniband-hw-bnxt_re-ib_verbs.c:warning:variable-nq-set-but-not-used
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_dcb.c:error:no-previous-prototype-for-function-sss_tool_dcb_mt_dcb_state-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_dcb.c:error:no-previous-prototype-for-function-sss_tool_dcb_mt_hw_qos_get-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_dcb.c:error:no-previous-prototype-for-function-sss_tool_dcb_mt_qos_map-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_func.c:error:no-previous-prototype-for-function-sss_tool_ioctl-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_get_loopback_mode-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_get_netdev_name-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_get_netdev_tx_timeout-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_get_pf_bw_limit-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_get_xsfp_info-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_get_xsfp_present-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_set_link_mode-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_set_loopback_mode-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_set_netdev_tx_timeout-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:no-previous-prototype-for-function-sss_tool_set_pf_bw_limit-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_phy_attr.c:error:variable-old_bw_limit-set-but-not-used-Werror-Wunused-but-set-variable
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_qp_info.c:error:no-previous-prototype-for-function-sss_tool_get_inter_num-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_qp_info.c:error:no-previous-prototype-for-function-sss_tool_get_q_num-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_qp_info.c:error:no-previous-prototype-for-function-sss_tool_get_rx_cqe_info-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_qp_info.c:error:no-previous-prototype-for-function-sss_tool_get_rx_info-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_qp_info.c:error:no-previous-prototype-for-function-sss_tool_get_rx_wqe_info-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_qp_info.c:error:no-previous-prototype-for-function-sss_tool_get_tx_info-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_qp_info.c:error:no-previous-prototype-for-function-sss_tool_get_tx_wqe_info-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_stats.c:error:no-previous-prototype-for-function-sss_tool_clear_func_stats-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_stats.c:error:no-previous-prototype-for-function-sss_tool_get_sset_count-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-.-tool-sss_tool_nic_stats.c:error:no-previous-prototype-for-function-sss_tool_get_sset_stats-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool.c:error:no-previous-prototype-for-function-sss_nic_set_ethtool_ops-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool_api.c:error:no-previous-prototype-for-function-sss_nic_finish_loop_test-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool_stats.c:error:no-previous-prototype-for-function-sss_nic_get_ethtool_stats-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool_stats.c:error:no-previous-prototype-for-function-sss_nic_get_link_ksettings-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool_stats.c:error:no-previous-prototype-for-function-sss_nic_get_sset_count-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool_stats.c:error:no-previous-prototype-for-function-sss_nic_get_strings-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool_stats.c:error:no-previous-prototype-for-function-sss_nic_set_link_ksettings-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ethtool_stats_api.c:error:no-previous-prototype-for-function-sss_nic_get_io_stats_size-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_filter.c:error:no-previous-prototype-for-function-sss_nic_clean_mac_list_filter-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_filter.c:error:no-previous-prototype-for-function-sss_nic_set_rx_mode_work-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_irq.c:error:no-previous-prototype-for-function-sss_nic_release_qp_irq-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_irq.c:error:no-previous-prototype-for-function-sss_nic_request_qp_irq-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_main.c:error:no-previous-prototype-for-function-get_nic_uld_info-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_main.c:error:no-previous-prototype-for-function-sss_nic_port_module_cable_plug-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_main.c:error:no-previous-prototype-for-function-sss_nic_port_module_cable_unplug-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_main.c:error:no-previous-prototype-for-function-sss_nic_port_module_link_err-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_netdev_ops.c:error:no-previous-prototype-for-function-sss_nic_is_netdev_ops_match-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_netdev_ops.c:error:no-previous-prototype-for-function-sss_nic_ndo_set_vf_link_state-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_netdev_ops.c:error:no-previous-prototype-for-function-sss_nic_ndo_vlan_rx_add_vid-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_netdev_ops.c:error:no-previous-prototype-for-function-sss_nic_ndo_vlan_rx_kill_vid-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_netdev_ops.c:error:no-previous-prototype-for-function-sss_nic_set_netdev_ops-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_ethtool_delete_flow-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_ethtool_get_all_flows-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_ethtool_get_flow-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_ethtool_update_flow-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_flush_rx_flow_rule-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_flush_tcam-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_flush_tcam_list-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_flush_tcam_node_list-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_ntuple.c:error:no-previous-prototype-for-function-sss_nic_validate_channel_setting_in_ntuple-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_init.c:error:no-previous-prototype-for-function-sss_nic_alloc_rq_desc_group-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_init.c:error:no-previous-prototype-for-function-sss_nic_alloc_rq_res_group-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_init.c:error:no-previous-prototype-for-function-sss_nic_free_rq_desc_group-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_init.c:error:no-previous-prototype-for-function-sss_nic_free_rq_res_group-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_init.c:error:no-previous-prototype-for-function-sss_nic_init_rq_desc_group-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_init.c:error:no-previous-prototype-for-function-sss_nic_reset_rx_rss-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_init.c:error:no-previous-prototype-for-function-sss_nic_update_rx_rss-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_rx_reset.c:error:no-previous-prototype-for-function-sss_nic_rq_watchdog_handler-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_tx_init.c:error:no-previous-prototype-for-function-sss_nic_alloc_sq_desc_group-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_tx_init.c:error:no-previous-prototype-for-function-sss_nic_alloc_sq_resource-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_tx_init.c:error:no-previous-prototype-for-function-sss_nic_flush_all_sq-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_tx_init.c:error:no-previous-prototype-for-function-sss_nic_free_sq_desc_group-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_tx_init.c:error:no-previous-prototype-for-function-sss_nic_free_sq_resource-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-3snic-sssnic-nic-sss_nic_tx_init.c:error:no-previous-prototype-for-function-sss_nic_init_all_sq-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:warning:expecting-prototype-for-hinic_aeq_unregister_sw_cb().-Prototype-was-for-hinic_aeq_unregister_swe_cb()-instead
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:warning:expecting-prototype-for-hinic_ceq_register_sw_cb().-Prototype-was-for-hinic_ceq_register_cb()-instead
| |-- drivers-net-ethernet-huawei-hinic-hinic_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-hinic-hinic_mbox.c:warning:expecting-prototype-for-hinic_unregister_ppf_mbox_cb().-Prototype-was-for-hinic_unregister_pf_mbox_cb()-instead
| |-- drivers-net-ethernet-linkdata-sxe-base-log-sxe_log.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-base-trace-sxe_trace.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_csum.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_dcb.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_filter.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-function-sxe_hw_link_speed_get-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_ipsec.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_ptp.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_tx_proc.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-base-log-sxe_log.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_csum.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-function-sxevf_rx_rcv_ctl_configure-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_main.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_monitor.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_netdev.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_ring.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_common-nbl_common.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_common-nbl_common.c:warning:variable-node_num-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_common-nbl_common.c:warning:variable-node_size-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dev_user.c:warning:variable-vfn-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dispatch.c:warning:variable-chan_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dispatch.c:warning:variable-param-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_service.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_service.c:warning:variable-ring_mgt-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_adminq.c:warning:variable-ret-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_hw_leonis-nbl_flow_leonis.c:warning:variable-phy_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_interrupt.c:warning:variable-dev-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_txrx.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-phy_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-queue_mgt-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-vsi_mgt-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_main.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_debugfs.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:Excess-function-parameter-vmdq-description-in-ngbe_set_vmdq
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:Function-parameter-or-member-pool-not-described-in-ngbe_set_vmdq
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:expecting-prototype-for-ngbe_read_ee_hostif().-Prototype-was-for-ngbe_read_ee_hostif32()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:expecting-prototype-for-ngbe_read_ee_hostif().-Prototype-was-for-ngbe_read_ee_hostif_data()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:expecting-prototype-for-ngbe_write_ee_hostif().-Prototype-was-for-ngbe_write_ee_hostif_data32()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:variable-status-set-but-not-used
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_main.c:warning:expecting-prototype-for-ngbe_watchdog_update_link().-Prototype-was-for-ngbe_watchdog_update_link_status()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_main.c:warning:variable-vlvfb-set-but-not-used
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_phy.c:warning:expecting-prototype-for-ngbe_identify_module().-Prototype-was-for-ngbe_phy_identify()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_phy.c:warning:expecting-prototype-for-ngbe_tn_check_overtemp().-Prototype-was-for-ngbe_phy_check_overtemp()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_sriov.c:warning:expecting-prototype-for-ngbe_pet_vfs().-Prototype-was-for-ngbe_put_vfs()-instead
| |-- drivers-pinctrl-zhaoxin-pinctrl-zhaoxin.c:warning:variable-test_mask-set-but-not-used
| |-- drivers-pinctrl-zhaoxin-pinctrl-zhaoxin.c:warning:variable-value_back-set-but-not-used
| |-- drivers-platform-surface-surface3_power.c:warning:snprintf-will-always-be-truncated-specified-size-is-but-format-string-expands-to-at-least
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_base.c:error:no-previous-prototype-for-function-ps3_pci_init-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_base.c:error:no-previous-prototype-for-function-ps3_pci_init_complete-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_base.c:error:no-previous-prototype-for-function-ps3_pci_init_complete_exit-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_cli_debug.c:error:no-previous-prototype-for-function-ps3_dump_context_show-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_file_close-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_file_open-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_file_write-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_filename_build-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_local_time-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_complete.c:error:no-previous-prototype-for-function-ps3_resp_status_convert-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_complete.c:error:no-previous-prototype-for-function-ps3_trigger_irq_poll-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_statistics.c:error:no-previous-prototype-for-function-ps3_cmd_stat_content_clear-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_statistics.c:error:no-previous-prototype-for-function-ps3_io_recv_ok_stat_inc-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_debug.c:error:no-previous-prototype-for-function-ps3_dump_dir_length-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_device_manager.c:error:no-previous-prototype-for-function-ps3_scsi_private_init_pd-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_device_manager.c:error:no-previous-prototype-for-function-ps3_scsi_private_init_vd-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_device_manager_sas.c:error:no-previous-prototype-for-function-ps3_sas_expander_phys_refresh-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_adp.c:error:no-previous-prototype-for-function-ps3_ioc_resource_prepare_hba-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_adp.c:error:no-previous-prototype-for-function-ps3_ioc_resource_prepare_raid-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_adp.c:error:no-previous-prototype-for-function-ps3_ioc_resource_prepare_switch-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_manager.c:error:no-previous-prototype-for-function-ps3_hard_reset_to_ready-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioctl.c:error:no-previous-prototype-for-function-ps3_clean_mgr_cmd-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_module_para.c:error:no-previous-prototype-for-function-ps3_cli_ver_query-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_cmd_waitq_abort-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_decision-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_vd_init-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_vd_reset-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_waitq_clear_all-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_waitq_notify-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_pd_quota_waitq_clean-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_pd_quota_waitq_clear_all-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_all_pd_rc_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_cmd_waitq_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_exclusive_cmdword_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_pd_waitq_ratio_update-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_tg_decision-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_vd_cmdword_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_conflict_queue_hash_bit_lock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_bit_check-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_bit_lock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_bit_unlock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_range_lock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_range_unlock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_range_check_and_insert-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_rb_tree.c:error:no-previous-prototype-for-function-rbtDelNodeDo-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_hard_recovery_state_finish-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_context_alloc-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_context_delete-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_context_free-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_irq_queue_destroy-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_state_transfer-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_sas_transport.c:error:no-previous-prototype-for-function-ps3_sas_update_phy_info-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_scsi_cmd_err.c:error:no-previous-prototype-for-function-ps3_set_task_manager_busy-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_scsi_cmd_err.c:error:no-previous-prototype-for-function-ps3_wait_for_outstanding_complete-Werror-Wmissing-prototypes
| |-- drivers-spi-spi-axi-spi-engine.c:warning:Function-parameter-or-member-p-not-described-in-spi_engine_message_state
| |-- drivers-spmi-spmi-pmic-arb.c:warning:Function-parameter-or-member-core-not-described-in-spmi_pmic_arb
| |-- drivers-xcu-xcu_group.c:warning:no-previous-prototype-for-function-__xcu_group_attach
| |-- fs-nfs-dir.c:warning:no-previous-prototype-for-function-nfs_check_have_lookup_cache_flag
| |-- fs-nfs-enfs-dns_process.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_dns_process_ip
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_domain_for_each
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_domain_inc
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_iter_nfs_clnt
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_quick_sort
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_server_query_dns
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_swap_name_cache
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_update_domain_name
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-ip_list_append
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-query_dns_each_name
| |-- fs-nfs-enfs-enfs_config.c:warning:no-previous-prototype-for-function-enfs_glob_match
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_clean_server_lookup_cache_flag
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_lookupcache_timer_init
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_lookupcache_update_switch
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_lookupcache_workqueue_init
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_query_lookup_cache
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_query_lookup_cache_pre_check
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_update_lookup_cache_flag_to_server
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_add_work
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_execute_work
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_loop_rpclnt
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_routine
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_start
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_workqueue_fini
| |-- fs-nfs-enfs-enfs_multipath.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_already_have_xprt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_cmp_addrs
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_configure_xprt_to_clnt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_create_multi_xprt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_multipath_create_thread
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_release_rpc_clnt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_xprt_addrs_is_same
| |-- fs-nfs-enfs-enfs_multipath.c:warning:variable-link_count-set-but-not-used
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-enfs_parse_ip_single
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-enfs_valid_ip
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-isInvalidDns
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_dns_list
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_ip_ipv6_add
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_ip_list
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_ip_list_get_cursor
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_duplicate
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_ip_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_ipv4_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_ipv6_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-parse_remote_type
| |-- fs-nfs-enfs-enfs_proc.c:warning:unused-variable-shardview_proc_fops
| |-- fs-nfs-enfs-enfs_remount.c:warning:no-previous-prototype-for-function-enfs_clnt_delete_obsolete_xprts
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_get_singular_xprt
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_revert_policy
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_switch_find_first_active_xprt
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_switch_get_main_xprt
| |-- fs-nfs-enfs-enfs_rpc_init.c:warning:no-previous-prototype-for-function-enfs_rpc_init
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-EnfsExtendDecodePreCheck
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDecodeFsShard
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDecodeLifInfo
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDnsQuerySetArgs
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDnsQuerySetRes
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-dorado_extend_route
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-nego_enfs_version
| |-- fs-nfs-enfs-failover_path.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- fs-nfs-enfs-pm_state.c:warning:variable-ret-set-but-not-used
| |-- fs-nfs-enfs-shard_route.c:warning:Cannot-understand-return-for-success-otherwise-for-failed
| |-- fs-nfs-enfs-shard_route.c:warning:Function-parameter-or-member-__list_name-not-described-in-DEFINE_CLEAR_LIST_FUNC
| |-- fs-nfs-enfs-shard_route.c:warning:Function-parameter-or-member-__struct_name-not-described-in-DEFINE_CLEAR_LIST_FUNC
| |-- fs-nfs-enfs_adapter.c:warning:no-previous-prototype-for-function-is_valid_option
| |-- fs-nfs-enfs_adapter.c:warning:no-previous-prototype-for-function-nfs_multipath_router_get
| |-- fs-nfs-enfs_adapter.c:warning:no-previous-prototype-for-function-nfs_multipath_router_put
| |-- fs-nfs-fs_context.c:warning:no-previous-prototype-for-function-getNfsMultiPathOpt
| |-- fs-proc-stat.c:warning:no-previous-prototype-for-function-bpf_get_idle_time
| |-- fs-proc-stat.c:warning:no-previous-prototype-for-function-bpf_get_iowait_time
| |-- fs-proc-stat.c:warning:no-previous-prototype-for-function-bpf_show_all_irqs
| |-- fs-reiserfs-reiserfs.o:warning:objtool:balance_leaf:stack-state-mismatch:cfa1-cfa2
| |-- fs-resctrl-monitor.c:warning:Cannot-understand-closid_num_dirty_rmid-The-number-of-dirty-RMID-each-CLOSID-has.
| |-- fs-xfs-libxfs-xfs_alloc.c:warning:no-previous-prototype-for-function-xfs_ag_fixup_aside
| |-- include-linux-fortify-string.h:warning:call-to-__write_overflow_field-declared-with-warning-attribute:detected-write-beyond-size-of-field-(1st-parameter)-maybe-use-struct_group()
| |-- kernel-cpu.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-pidfd_prepare
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-register_irqchip_proc
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-unregister_irqchip_proc
| |-- kernel-livepatch-core.c:warning:bad-line:
| |-- kernel-locking-mutex.c:warning:variable-ifs_clock-is-used-uninitialized-whenever-if-condition-is-true
| |-- kernel-power-swap.c:warning:Excess-function-parameter-exclusive-description-in-swsusp_close
| |-- kernel-sched-core.c:warning:no-previous-prototype-for-function-tg_get_affinity_period
| |-- kernel-sched-core.c:warning:no-previous-prototype-for-function-tg_set_affinity_period
| |-- kernel-sched-core.c:warning:no-previous-prototype-for-function-tg_set_dynamic_affinity_mode
| |-- kernel-xsched-cfs.c:warning:Excess-function-parameter-gxcu-description-in-xg_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-new_xrt-not-described-in-xs_cfs_rq_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-task_delta-not-described-in-xg_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-xg-not-described-in-xg_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-xse_cfs-not-described-in-xs_cfs_rq_update
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-rq_init_fair
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xs_rq_add
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xs_rq_remove
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xse_deinit_fair
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xse_init_fair
| |-- kernel-xsched-cgroup.c:warning:Cannot-understand-brief-Initialize-the-core-components-of-an-xsched_group.
| |-- kernel-xsched-cgroup.c:warning:no-previous-prototype-for-function-xcu_move_task
| |-- kernel-xsched-core.c:warning:no-previous-prototype-for-function-xsched_sched_init
| |-- kernel-xsched-core.c:warning:no-previous-prototype-for-function-xsched_xse_set_class
| |-- kernel-xsched-rt.c:warning:no-previous-prototype-for-function-rq_init_rt
| |-- kernel-xsched-rt.c:warning:no-previous-prototype-for-function-xse_deinit_rt
| |-- kernel-xsched-rt.c:warning:no-previous-prototype-for-function-xse_init_rt
| |-- kernel-xsched-vstream.c:warning:no-previous-prototype-for-function-xcu_find
| |-- lib-crypto-mpi-mpi-inv.c:warning:variable-k-set-but-not-used
| |-- lib-kunit-test.c:warning:cast-from-void-(-)(const-void-)-to-kunit_action_t-(aka-void-(-)(void-)-)-converts-to-incompatible-function-type
| |-- lib-test_kmod.c:warning:Function-parameter-or-member-task_sync-not-described-in-kmod_test_device_info
| |-- lib-test_kmod.c:warning:Function-parameter-or-member-thread_mutex-not-described-in-kmod_test_device
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| `-- mm-mempolicy.c:warning:variable-vma-set-but-not-used
|-- x86_64-allnoconfig
| |-- arch-x86-kernel-cpu-proc.c:warning:no-previous-prototype-for-function-show_cpuinfo
| |-- block-genhd.c:warning:no-previous-prototype-for-function-part_stat_read_all
| |-- kernel-cpu.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-pidfd_prepare
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-register_irqchip_proc
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-unregister_irqchip_proc
| |-- kernel-locking-mutex.c:warning:variable-ifs_clock-is-used-uninitialized-whenever-if-condition-is-true
| |-- mm-madvise.c:warning:no-previous-prototype-for-function-force_swapin_vma
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| `-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
|-- x86_64-allyesconfig
| |-- arch-x86-kernel-cpu-proc.c:warning:no-previous-prototype-for-function-show_cpuinfo
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-csv3_launch_encrypt_data_alt_1
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-csv3_launch_encrypt_data_alt_2
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-end_pgoff-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-csv3_launch_encrypt_data_alt_1
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-csv3_launch_encrypt_data_alt_2
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-params-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-src_buf-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-start_pgoff-not-described-in-__csv3_launch_encrypt_data
| |-- block-blk-cgroup.c:warning:no-previous-prototype-for-function-bpf_blkcg_get_dev_iostat
| |-- block-genhd.c:warning:no-previous-prototype-for-function-part_stat_read_all
| |-- clang:warning:no-such-include-directory:drivers-infiniband-hw-hiroce3-include-mag
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Excess-function-parameter-_data-description-in-pgp_parse_packets
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Excess-function-parameter-_datalen-description-in-pgp_parse_packets
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Function-parameter-or-member-data-not-described-in-pgp_parse_packets
| |-- crypto-asymmetric_keys-pgp_library.c:warning:Function-parameter-or-member-datalen-not-described-in-pgp_parse_packets
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-add_sgpio_zhaoxin
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-ahci_wait_em_reset
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-ahci_zhaoxin_set_em_sgpio
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-ahci_zhaoxin_set_em_sgpio_gpmode
| |-- drivers-ata-ahci_zhaoxin_sgpio.c:warning:no-previous-prototype-for-function-set_em_messages
| |-- drivers-ata-libahci.c:warning:no-previous-prototype-for-function-get_ahci_em_messages
| |-- drivers-block-drbd-drbd_bitmap.c:warning:Function-parameter-or-member-peer_device-not-described-in-drbd_bm_write
| |-- drivers-clk-renesas-r9a06g032-clocks.c:warning:Function-parameter-or-member-dual-not-described-in-r9a06g032_clkdesc
| |-- drivers-crypto-ccp-hygon-ccp-mdev.c:warning:no-previous-prototype-for-function-ccp_pin_memory
| |-- drivers-crypto-ccp-hygon-csv-dev.c:warning:Function-parameter-or-member-api_minor-not-described-in-user_data_status
| |-- drivers-crypto-ccp-hygon-hct.c:warning:no-previous-prototype-for-function-hct_pin_memory
| |-- drivers-crypto-ccp-hygon-psp-dev.c:warning:no-previous-prototype-for-function-atomic64_exchange
| |-- drivers-crypto-ccp-hygon-psp-dev.c:warning:no-previous-prototype-for-function-psp_mutex_init
| |-- drivers-crypto-ccp-hygon-tdm-kernel-guard.c:warning:no-previous-prototype-for-function-tdm_service_exit
| |-- drivers-crypto-ccp-hygon-tdm-kernel-guard.c:warning:no-previous-prototype-for-function-tdm_service_run
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:no-previous-prototype-for-function-vpsp_do_cmd
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:no-previous-prototype-for-function-vpsp_set_default_vid_permission
| |-- drivers-dax-super.c:warning:Function-parameter-or-member-KABI_RESERVE(-not-described-in-dax_device
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_config_pix_clock
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_reset
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_update_cursor_hi_addr
| |-- drivers-gpu-drm-phytium-pe22_dc.c:warning:no-previous-prototype-for-function-pe22_dc_hw_update_primary_hi_addr
| |-- drivers-gpu-drm-phytium-pe22_dp.c:warning:no-previous-prototype-for-function-pe22_dp_hw_reset
| |-- drivers-gpu-drm-phytium-phytium_crtc.c:warning:no-previous-prototype-for-function-phytium_crtc_atomic_destroy_state
| |-- drivers-gpu-drm-phytium-phytium_crtc.c:warning:no-previous-prototype-for-function-phytium_crtc_atomic_duplicate_state
| |-- drivers-gpu-drm-phytium-phytium_debugfs.c:warning:no-previous-prototype-for-function-phytium_debugfs_connector_add
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_adjust_link_train_parameter
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_fast_link_train
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_get_link_train_fallback_values
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hpd_poll_handler
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_disable_input_source
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_disable_video
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_enable_audio
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_enable_input_source
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_enable_output
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_hpd_irq_setup
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_hw_output_is_enable
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_dp_start_link_train
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_encoder_mode_valid
| |-- drivers-gpu-drm-phytium-phytium_dp.c:warning:no-previous-prototype-for-function-phytium_get_encoder_crtc_mask
| |-- drivers-gpu-drm-phytium-phytium_fbdev.c:warning:no-previous-prototype-for-function-phytium_drm_fbdev_init
| |-- drivers-gpu-drm-phytium-phytium_gem.c:warning:no-previous-prototype-for-function-phytium_dma_transfer
| |-- drivers-gpu-drm-phytium-phytium_panel.c:warning:no-previous-prototype-for-function-phytium_dp_panel_release_backlight_funcs
| |-- drivers-gpu-drm-phytium-phytium_pci.c:warning:no-previous-prototype-for-function-phytium_pci_dma_init
| |-- drivers-gpu-drm-phytium-phytium_pci.c:warning:no-previous-prototype-for-function-phytium_pci_vram_hw_init
| |-- drivers-gpu-drm-phytium-phytium_plane.c:warning:no-previous-prototype-for-function-phytium_plane_atomic_duplicate_state
| |-- drivers-gpu-drm-phytium-phytium_plane.c:warning:no-previous-prototype-for-function-phytium_plane_destroy
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_plane_get_cursor_format
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_plane_get_primary_format
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_update_dcreq
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_update_primary_hi_addr
| |-- drivers-gpu-drm-phytium-px210_dc.c:warning:no-previous-prototype-for-function-px210_dc_hw_vram_init
| |-- drivers-gpu-drm-phytium-px210_dp.c:warning:no-previous-prototype-for-function-px210_dp_hw_reset
| |-- drivers-gpu-drm-phytium-px210_dp.c:warning:no-previous-prototype-for-function-px210_dp_hw_spread_is_enable
| |-- drivers-i2c-busses-i2c-zhaoxin.c:warning:no-previous-prototype-for-function-zxi2c_fifo_irq_xfer
| |-- drivers-i2c-busses-i2c-zhaoxin.c:warning:no-previous-prototype-for-function-zxi2c_xfer
| |-- drivers-infiniband-hw-bnxt_re-ib_verbs.c:warning:variable-nq-set-but-not-used
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:warning:expecting-prototype-for-hinic_aeq_unregister_sw_cb().-Prototype-was-for-hinic_aeq_unregister_swe_cb()-instead
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:warning:expecting-prototype-for-hinic_ceq_register_sw_cb().-Prototype-was-for-hinic_ceq_register_cb()-instead
| |-- drivers-net-ethernet-huawei-hinic-hinic_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-hinic-hinic_mbox.c:warning:expecting-prototype-for-hinic_unregister_ppf_mbox_cb().-Prototype-was-for-hinic_unregister_pf_mbox_cb()-instead
| |-- drivers-net-ethernet-linkdata-sxe-base-log-sxe_log.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-base-trace-sxe_trace.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_csum.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_dcb.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_filter.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_hw.c:error:no-previous-prototype-for-function-sxe_hw_link_speed_get-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_ipsec.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_ptp.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_tx_proc.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-base-log-sxe_log.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_csum.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_hw.c:error:no-previous-prototype-for-function-sxevf_rx_rcv_ctl_configure-Werror-Wmissing-prototypes
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_main.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_monitor.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_netdev.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_ring.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_common-nbl_common.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_common-nbl_common.c:warning:variable-node_num-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_common-nbl_common.c:warning:variable-node_size-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dev_user.c:warning:variable-vfn-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dispatch.c:warning:variable-chan_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dispatch.c:warning:variable-param-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_service.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_service.c:warning:variable-ring_mgt-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_adminq.c:warning:variable-ret-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_hw_leonis-nbl_flow_leonis.c:warning:variable-phy_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_interrupt.c:warning:variable-dev-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_txrx.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-phy_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-queue_mgt-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-vsi_mgt-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_main.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_debugfs.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:Excess-function-parameter-vmdq-description-in-ngbe_set_vmdq
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:Function-parameter-or-member-pool-not-described-in-ngbe_set_vmdq
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:expecting-prototype-for-ngbe_read_ee_hostif().-Prototype-was-for-ngbe_read_ee_hostif32()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:expecting-prototype-for-ngbe_read_ee_hostif().-Prototype-was-for-ngbe_read_ee_hostif_data()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:expecting-prototype-for-ngbe_write_ee_hostif().-Prototype-was-for-ngbe_write_ee_hostif_data32()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_hw.c:warning:variable-status-set-but-not-used
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_main.c:warning:expecting-prototype-for-ngbe_watchdog_update_link().-Prototype-was-for-ngbe_watchdog_update_link_status()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_main.c:warning:variable-vlvfb-set-but-not-used
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_phy.c:warning:expecting-prototype-for-ngbe_identify_module().-Prototype-was-for-ngbe_phy_identify()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_phy.c:warning:expecting-prototype-for-ngbe_tn_check_overtemp().-Prototype-was-for-ngbe_phy_check_overtemp()-instead
| |-- drivers-net-ethernet-wangxun-ngbe-ngbe_sriov.c:warning:expecting-prototype-for-ngbe_pet_vfs().-Prototype-was-for-ngbe_put_vfs()-instead
| |-- drivers-pinctrl-zhaoxin-pinctrl-zhaoxin.c:warning:variable-test_mask-set-but-not-used
| |-- drivers-pinctrl-zhaoxin-pinctrl-zhaoxin.c:warning:variable-value_back-set-but-not-used
| |-- drivers-platform-surface-surface3_power.c:warning:snprintf-will-always-be-truncated-specified-size-is-but-format-string-expands-to-at-least
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_base.c:error:no-previous-prototype-for-function-ps3_pci_init-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_base.c:error:no-previous-prototype-for-function-ps3_pci_init_complete-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_base.c:error:no-previous-prototype-for-function-ps3_pci_init_complete_exit-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_cli_debug.c:error:no-previous-prototype-for-function-ps3_dump_context_show-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_driver_log.c:error:unused-function-time_for_file_name-Werror-Wunused-function
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_driver_log.c:error:unused-function-time_for_log-Werror-Wunused-function
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_file_close-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_file_open-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_file_write-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_filename_build-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-.-linux-ps3_dump.c:error:no-previous-prototype-for-function-ps3_dump_local_time-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_complete.c:error:no-previous-prototype-for-function-ps3_resp_status_convert-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_complete.c:error:no-previous-prototype-for-function-ps3_trigger_irq_poll-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_statistics.c:error:no-previous-prototype-for-function-ps3_cmd_stat_content_clear-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_cmd_statistics.c:error:no-previous-prototype-for-function-ps3_io_recv_ok_stat_inc-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_debug.c:error:no-previous-prototype-for-function-ps3_dump_dir_length-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_device_manager.c:error:no-previous-prototype-for-function-ps3_scsi_private_init_pd-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_device_manager.c:error:no-previous-prototype-for-function-ps3_scsi_private_init_vd-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_device_manager_sas.c:error:no-previous-prototype-for-function-ps3_sas_expander_phys_refresh-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_adp.c:error:no-previous-prototype-for-function-ps3_ioc_resource_prepare_hba-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_adp.c:error:no-previous-prototype-for-function-ps3_ioc_resource_prepare_raid-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_adp.c:error:no-previous-prototype-for-function-ps3_ioc_resource_prepare_switch-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioc_manager.c:error:no-previous-prototype-for-function-ps3_hard_reset_to_ready-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_ioctl.c:error:no-previous-prototype-for-function-ps3_clean_mgr_cmd-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_irq.c:error:unused-variable-PS3_HDD_IOPS_MSIX_VECTORS-Werror-Wunused-const-variable
| |-- drivers-scsi-linkdata-ps3stor-ps3_irq.c:error:unused-variable-PS3_INTERRUPT_CLEAR_IRQ-Werror-Wunused-const-variable
| |-- drivers-scsi-linkdata-ps3stor-ps3_irq.c:error:unused-variable-PS3_INTERRUPT_CMD_DISABLE_ALL_MASK-Werror-Wunused-const-variable
| |-- drivers-scsi-linkdata-ps3stor-ps3_irq.c:error:unused-variable-PS3_INTERRUPT_CMD_ENABLE_MSIX-Werror-Wunused-const-variable
| |-- drivers-scsi-linkdata-ps3stor-ps3_irq.c:error:unused-variable-PS3_INTERRUPT_MASK_DISABLE-Werror-Wunused-const-variable
| |-- drivers-scsi-linkdata-ps3stor-ps3_irq.c:error:unused-variable-PS3_INTERRUPT_STATUS_EXIST_IRQ-Werror-Wunused-const-variable
| |-- drivers-scsi-linkdata-ps3stor-ps3_irq.c:error:unused-variable-PS3_SSD_IOPS_MSIX_VECTORS-Werror-Wunused-const-variable
| |-- drivers-scsi-linkdata-ps3stor-ps3_module_para.c:error:no-previous-prototype-for-function-ps3_cli_ver_query-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_cmd_waitq_abort-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_decision-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_vd_init-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_vd_reset-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_waitq_clear_all-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_waitq_notify-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_hba_qos_waitq_poll-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_pd_quota_waitq_clean-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_pd_quota_waitq_clear_all-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_all_pd_rc_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_cmd_waitq_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_exclusive_cmdword_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_mgrq_resend-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_pd_waitq_ratio_update-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_tg_decision-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_qos_vd_cmdword_get-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_raid_qos_decision-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_raid_qos_waitq_abort-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_qos.c:error:no-previous-prototype-for-function-ps3_raid_qos_waitq_notify-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_conflict_queue_hash_bit_lock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_bit_check-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_bit_lock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_bit_unlock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_range_lock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_r1x_hash_range_unlock-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_r1x_write_lock.c:error:no-previous-prototype-for-function-ps3_range_check_and_insert-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_rb_tree.c:error:no-previous-prototype-for-function-rbtDelNodeDo-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_hard_recovery_state_finish-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_context_alloc-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_context_delete-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_context_free-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_irq_queue_destroy-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_recovery.c:error:no-previous-prototype-for-function-ps3_recovery_state_transfer-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_sas_transport.c:error:no-previous-prototype-for-function-ps3_sas_update_phy_info-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_scsi_cmd_err.c:error:no-previous-prototype-for-function-ps3_set_task_manager_busy-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_scsi_cmd_err.c:error:no-previous-prototype-for-function-ps3_wait_for_outstanding_complete-Werror-Wmissing-prototypes
| |-- drivers-scsi-linkdata-ps3stor-ps3_scsih.c:error:unused-function-ps3_scsih_dev_id_get-Werror-Wunused-function
| |-- drivers-spi-spi-axi-spi-engine.c:warning:Function-parameter-or-member-p-not-described-in-spi_engine_message_state
| |-- drivers-spmi-spmi-pmic-arb.c:warning:Function-parameter-or-member-core-not-described-in-spmi_pmic_arb
| |-- drivers-xcu-xcu_group.c:warning:no-previous-prototype-for-function-__xcu_group_attach
| |-- fs-nfs-dir.c:warning:no-previous-prototype-for-function-nfs_check_have_lookup_cache_flag
| |-- fs-nfs-enfs-dns_process.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_dns_process_ip
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_domain_for_each
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_domain_inc
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_iter_nfs_clnt
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_quick_sort
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_server_query_dns
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_swap_name_cache
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-enfs_update_domain_name
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-ip_list_append
| |-- fs-nfs-enfs-dns_process.c:warning:no-previous-prototype-for-function-query_dns_each_name
| |-- fs-nfs-enfs-enfs_config.c:warning:no-previous-prototype-for-function-enfs_glob_match
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_clean_server_lookup_cache_flag
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_lookupcache_timer_init
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_lookupcache_update_switch
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_lookupcache_workqueue_init
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_query_lookup_cache
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_query_lookup_cache_pre_check
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-enfs_update_lookup_cache_flag_to_server
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_add_work
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_execute_work
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_loop_rpclnt
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_routine
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_start
| |-- fs-nfs-enfs-enfs_lookup_cache.c:warning:no-previous-prototype-for-function-lookupcache_workqueue_fini
| |-- fs-nfs-enfs-enfs_multipath.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_already_have_xprt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_cmp_addrs
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_configure_xprt_to_clnt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_create_multi_xprt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_multipath_create_thread
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_release_rpc_clnt
| |-- fs-nfs-enfs-enfs_multipath.c:warning:no-previous-prototype-for-function-enfs_xprt_addrs_is_same
| |-- fs-nfs-enfs-enfs_multipath.c:warning:variable-link_count-set-but-not-used
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-enfs_parse_ip_single
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-enfs_valid_ip
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-isInvalidDns
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_dns_list
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_ip_ipv6_add
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_ip_list
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_ip_list_get_cursor
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_duplicate
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_ip_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_ipv4_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_ipv6_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-nfs_multipath_parse_options_check_valid
| |-- fs-nfs-enfs-enfs_multipath_parse.c:warning:no-previous-prototype-for-function-parse_remote_type
| |-- fs-nfs-enfs-enfs_proc.c:warning:unused-variable-shardview_proc_fops
| |-- fs-nfs-enfs-enfs_remount.c:warning:no-previous-prototype-for-function-enfs_clnt_delete_obsolete_xprts
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_get_singular_xprt
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_revert_policy
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_switch_find_first_active_xprt
| |-- fs-nfs-enfs-enfs_roundrobin.c:warning:no-previous-prototype-for-function-enfs_lb_switch_get_main_xprt
| |-- fs-nfs-enfs-enfs_rpc_init.c:warning:no-previous-prototype-for-function-enfs_rpc_init
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-EnfsExtendDecodePreCheck
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDecodeFsShard
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDecodeLifInfo
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDnsQuerySetArgs
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-NfsExtendDnsQuerySetRes
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-dorado_extend_route
| |-- fs-nfs-enfs-exten_call.c:warning:no-previous-prototype-for-function-nego_enfs_version
| |-- fs-nfs-enfs-failover_path.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- fs-nfs-enfs-pm_state.c:warning:variable-ret-set-but-not-used
| |-- fs-nfs-enfs-shard_route.c:warning:Cannot-understand-return-for-success-otherwise-for-failed
| |-- fs-nfs-enfs-shard_route.c:warning:Function-parameter-or-member-__list_name-not-described-in-DEFINE_CLEAR_LIST_FUNC
| |-- fs-nfs-enfs-shard_route.c:warning:Function-parameter-or-member-__struct_name-not-described-in-DEFINE_CLEAR_LIST_FUNC
| |-- fs-nfs-enfs_adapter.c:warning:no-previous-prototype-for-function-is_valid_option
| |-- fs-nfs-enfs_adapter.c:warning:no-previous-prototype-for-function-nfs_multipath_router_get
| |-- fs-nfs-enfs_adapter.c:warning:no-previous-prototype-for-function-nfs_multipath_router_put
| |-- fs-nfs-fs_context.c:warning:no-previous-prototype-for-function-getNfsMultiPathOpt
| |-- fs-proc-stat.c:warning:no-previous-prototype-for-function-bpf_get_idle_time
| |-- fs-proc-stat.c:warning:no-previous-prototype-for-function-bpf_get_iowait_time
| |-- fs-proc-stat.c:warning:no-previous-prototype-for-function-bpf_show_all_irqs
| |-- fs-resctrl-monitor.c:warning:Cannot-understand-closid_num_dirty_rmid-The-number-of-dirty-RMID-each-CLOSID-has.
| |-- fs-xfs-libxfs-xfs_alloc.c:warning:no-previous-prototype-for-function-xfs_ag_fixup_aside
| |-- include-linux-fortify-string.h:warning:call-to-__write_overflow_field-declared-with-warning-attribute:detected-write-beyond-size-of-field-(1st-parameter)-maybe-use-struct_group()
| |-- kernel-cpu.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Excess-function-parameter-pidfd-description-in-pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-__pidfd_prepare
| |-- kernel-fork.c:warning:Function-parameter-or-member-ret-not-described-in-pidfd_prepare
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-register_irqchip_proc
| |-- kernel-irq-proc.c:warning:no-previous-prototype-for-function-unregister_irqchip_proc
| |-- kernel-livepatch-core.c:warning:bad-line:
| |-- kernel-locking-mutex.c:warning:variable-ifs_clock-is-used-uninitialized-whenever-if-condition-is-true
| |-- kernel-power-swap.c:warning:Excess-function-parameter-exclusive-description-in-swsusp_close
| |-- kernel-sched-core.c:warning:no-previous-prototype-for-function-tg_get_affinity_period
| |-- kernel-sched-core.c:warning:no-previous-prototype-for-function-tg_set_affinity_period
| |-- kernel-sched-core.c:warning:no-previous-prototype-for-function-tg_set_dynamic_affinity_mode
| |-- kernel-xsched-cfs.c:warning:Excess-function-parameter-gxcu-description-in-xg_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-new_xrt-not-described-in-xs_cfs_rq_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-task_delta-not-described-in-xg_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-xg-not-described-in-xg_update
| |-- kernel-xsched-cfs.c:warning:Function-parameter-or-member-xse_cfs-not-described-in-xs_cfs_rq_update
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-rq_init_fair
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xs_rq_add
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xs_rq_remove
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xse_deinit_fair
| |-- kernel-xsched-cfs.c:warning:no-previous-prototype-for-function-xse_init_fair
| |-- kernel-xsched-cgroup.c:warning:Cannot-understand-brief-Initialize-the-core-components-of-an-xsched_group.
| |-- kernel-xsched-cgroup.c:warning:no-previous-prototype-for-function-xcu_move_task
| |-- kernel-xsched-core.c:warning:no-previous-prototype-for-function-xsched_sched_init
| |-- kernel-xsched-core.c:warning:no-previous-prototype-for-function-xsched_xse_set_class
| |-- kernel-xsched-rt.c:warning:no-previous-prototype-for-function-rq_init_rt
| |-- kernel-xsched-rt.c:warning:no-previous-prototype-for-function-xse_deinit_rt
| |-- kernel-xsched-rt.c:warning:no-previous-prototype-for-function-xse_init_rt
| |-- kernel-xsched-vstream.c:warning:no-previous-prototype-for-function-xcu_find
| |-- lib-crypto-mpi-mpi-inv.c:warning:variable-k-set-but-not-used
| |-- lib-kunit-test.c:warning:cast-from-void-(-)(const-void-)-to-kunit_action_t-(aka-void-(-)(void-)-)-converts-to-incompatible-function-type
| |-- lib-test_kmod.c:warning:Function-parameter-or-member-task_sync-not-described-in-kmod_test_device_info
| |-- lib-test_kmod.c:warning:Function-parameter-or-member-thread_mutex-not-described-in-kmod_test_device
| |-- mm-memblock.c:warning:expecting-prototype-for-memblock_alloc_internal().-Prototype-was-for-__memblock_alloc_internal()-instead
| |-- mm-memblock.c:warning:no-previous-prototype-for-function-memblock_alloc_range_nid_flags
| |-- mm-mempolicy.c:warning:variable-vma-set-but-not-used
| |-- net-ipv4-tcp_comp.c:warning:no-previous-prototype-for-function-comp_setup_strp
| `-- net-ipv4-tcp_comp.c:warning:no-previous-prototype-for-function-comp_stream_read
|-- x86_64-randconfig-006-20251216
| |-- drivers-cpufreq-acpi-cpufreq.c:warning:sched_set_itmt-defined-but-not-used
| |-- security-integrity-ima-ima_tpm.c:warning:no-previous-prototype-for-ima_pcrread
| |-- security-integrity-ima-ima_tpm.c:warning:no-previous-prototype-for-ima_tpm_calc_boot_aggregate
| |-- security-integrity-ima-ima_tpm.c:warning:no-previous-prototype-for-ima_tpm_extend
| `-- security-integrity-ima-ima_tpm.c:warning:no-previous-prototype-for-ima_tpm_init
|-- x86_64-randconfig-011-20251215
| |-- lib-kunit-test.c:warning:cast-from-void-(-)(const-void-)-to-kunit_action_t-(aka-void-(-)(void-)-)-converts-to-incompatible-function-type
| |-- lib-test_kmod.c:warning:Function-parameter-or-member-task_sync-not-described-in-kmod_test_device_info
| `-- lib-test_kmod.c:warning:Function-parameter-or-member-thread_mutex-not-described-in-kmod_test_device
|-- x86_64-randconfig-012-20251215
| |-- drivers-crypto-ccp-hygon-hct.c:warning:no-previous-prototype-for-function-hct_pin_memory
| |-- drivers-crypto-ccp-hygon-psp-dev.c:warning:no-previous-prototype-for-function-psp_mutex_init
| |-- drivers-crypto-ccp-hygon-tdm-kernel-guard.c:warning:no-previous-prototype-for-function-tdm_service_exit
| |-- drivers-crypto-ccp-hygon-tdm-kernel-guard.c:warning:no-previous-prototype-for-function-tdm_service_run
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-crypto-ccp-hygon-vpsp.c:warning:no-previous-prototype-for-function-vpsp_do_cmd
| |-- drivers-i2c-busses-i2c-zhaoxin.c:warning:no-previous-prototype-for-function-zxi2c_fifo_irq_xfer
| `-- drivers-i2c-busses-i2c-zhaoxin.c:warning:no-previous-prototype-for-function-zxi2c_xfer
|-- x86_64-randconfig-014-20251215
| |-- arch-x86-kernel-early-quirks.c:warning:no-previous-prototype-for-function-is_zhaoxin_kh40000
| |-- arch-x86-kernel-early-quirks.c:warning:no-previous-prototype-for-function-kh40000_get_direct_dma_ops
| |-- drivers-dax-super.c:warning:Function-parameter-or-member-KABI_RESERVE(-not-described-in-dax_device
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_csum.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxe-sxepf-sxe_dcb.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-linkdata-sxevf-sxevf-sxevf_csum.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_common-nbl_common.c:warning:variable-node_size-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dispatch.c:warning:variable-chan_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dispatch.c:warning:variable-param-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-phy_ops-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_vsi.c:warning:variable-vsi_mgt-set-but-not-used
| |-- drivers-net-ethernet-nebula-matrix-nbl-nbl_main.c:warning:This-comment-starts-with-but-isn-t-a-kernel-doc-comment.-Refer-Documentation-doc-guide-kernel-doc.rst
| `-- lib-crypto-mpi-mpi-inv.c:warning:variable-k-set-but-not-used
|-- x86_64-randconfig-016-20251215
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-csv3_launch_encrypt_data_alt_1
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-argp-not-described-in-csv3_launch_encrypt_data_alt_2
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-end_pgoff-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-csv3_launch_encrypt_data_alt_1
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-kvm-not-described-in-csv3_launch_encrypt_data_alt_2
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-params-not-described-in-__csv3_launch_encrypt_data
| |-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-src_buf-not-described-in-__csv3_launch_encrypt_data
| `-- arch-x86-kvm-svm-csv.c:warning:Function-parameter-or-member-start_pgoff-not-described-in-__csv3_launch_encrypt_data
|-- x86_64-randconfig-074-20251216
| `-- include-net-sock.h:error:struct-sock_common-has-no-member-named-skc_v6_daddr
|-- x86_64-randconfig-075-20251218
| `-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_dev_user.c:warning:assignment-to-struct-eventfd_ctx-from-int-makes-pointer-from-integer-without-a-cast
|-- x86_64-randconfig-122-20251217
| |-- drivers-crypto-ccp-ccp-crypto-sm2-hygon.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-crypto-ccp-ccp-crypto-sm2-hygon.c:sparse:sparse:cast-to-restricted-__be64
| |-- drivers-crypto-ccp-ccp-crypto-sm2-hygon.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-got-restricted-__be32-usertype
| |-- drivers-crypto-ccp-ccp-crypto-sm2-hygon.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-got-restricted-__be64-usertype
| |-- drivers-crypto-ccp-hygon-ccp-dev-v5.c:sparse:sparse:cast-from-restricted-__le32
| |-- drivers-crypto-ccp-hygon-ccp-dev-v5.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-restricted-__le32-usertype-sm3_len_hi-got-unsigned-int-usertype
| |-- drivers-crypto-ccp-hygon-ccp-dev-v5.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-restricted-__le32-usertype-sm3_len_lo-got-unsigned-int-usertype
| |-- drivers-crypto-ccp-hygon-ccp-dev-v5.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-got-restricted-__le32-usertype
| `-- kernel-crash_core.c:sparse:sparse:symbol-__crash_hotplug_lock-was-not-declared.-Should-it-be-static
|-- x86_64-randconfig-123-20251217
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:cast-to-restricted-__be64
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:incorrect-type-in-argument-(different-base-types)-expected-unsigned-int-flag-got-restricted-gfp_t
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-desc-got-restricted-__be64-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-got-restricted-__be64-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-hw_cmd_paddr-got-restricted-__be64-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-hw_wb_resp_paddr-got-restricted-__be64-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_api_cmd.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-next_cell_paddr-got-restricted-__be64-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-cfg_get_func_sf_en-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-cfg_set_func_sf_en-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_rdma_mpts_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_rdma_mtts_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_rdma_qps_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_gpa_check_enable-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_hash_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_max_cache_conn-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_max_conn-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_mpt_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_mpt_resvd-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_pagesize_reorder-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_qpc_alloc_mode-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_qpc_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_qpc_resvd_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_reorder_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_scq_resvd-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_scqc_alloc_mode-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_scqc_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_test_xid_alloc_mode-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cfg.c:sparse:sparse:symbol-g_vfs_num-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:cast-removes-address-space-__iomem-of-expression
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:cast-to-restricted-__be64
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-volatile-noderef-__iomem-addr-got-unsigned-char-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-unsigned-char-noderef-usertype-__iomem-db_base-got-unsigned-char-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-addressable-usertype-db_info-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-got-restricted-__be64-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_cmdq.c:sparse:sparse:symbol-hinic_set_cmdq_ctxts-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-const-noderef-__user-from-got-unsigned-char-usertype-cmd
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-const-noderef-__user-from-got-void
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-const-noderef-__user-from-got-void-buf_in
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-noderef-__user-to-got-struct-ffm_record_info-ffm_rd
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-noderef-__user-to-got-struct-pf_dev_info-dev_info
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-noderef-__user-to-got-unsigned-short-usertype-out_size
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-noderef-__user-to-got-void-ack
| |-- drivers-net-ethernet-huawei-hinic-hinic_dbgtool_knl.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-noderef-__user-to-got-void-buf_out
| |-- drivers-net-ethernet-huawei-hinic-hinic_dcb.c:sparse:sparse:symbol-__set_cos_up_map-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_dcb.c:sparse:sparse:symbol-hinic_dcb_config_init-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_dcb.c:sparse:sparse:symbol-hinic_dcbnl_set_all-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_dcb.c:sparse:sparse:symbol-hinic_init_ieee_settings-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_dcb.c:sparse:sparse:symbol-hinic_set_prio_tc_map-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:sparse:sparse:cast-to-restricted-__be64
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-desc-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_eqs.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_ethtool.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_ethtool.c:sparse:sparse:symbol-hinic_lp_test-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-addressable-assigned-usertype-val-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-udp_port-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-_set_led_status-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-comm_pf_mbox_handler-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-hinic_get_phy_init_status-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-hinic_hw_rx_buf_size-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-hinic_msg_to_mgmt_no_ack-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-hinic_ppf_ht_gpa_deinit-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-hinic_ppf_ht_gpa_init-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwdev.c:sparse:sparse:symbol-hw_cmd_support_vf-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwif.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwif.c:sparse:sparse:incorrect-type-in-argument-(different-base-types)-expected-restricted-gfp_t-usertype-gfp-got-unsigned-int-flag
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwif.c:sparse:sparse:incorrect-type-in-argument-(different-base-types)-expected-unsigned-int-val-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwif.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-unsigned-char-noderef-usertype-__iomem-cfg_regs_base-got-void-cfg_reg_base
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwif.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-unsigned-char-noderef-usertype-__iomem-db_base-got-void-db_base
| |-- drivers-net-ethernet-huawei-hinic-hinic_hwif.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-unsigned-char-noderef-usertype-__iomem-intr_regs_base-got-void-intr_reg_ba
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:Using-plain-integer-as-NULL-pointer
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-cfg_reg_base-got-void-noderef-__iomem-cfg_reg_base
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-void-assigned-cfg_reg_base-got-void-noderef-__iomem-cfg_reg_base
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-void-assigned-db_base-got-void-noderef-__iomem-db_base
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-void-assigned-intr_reg_base-got-void-noderef-__iomem-intr_reg_base
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-manufacture_id-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-short-usertype-reason_code-got-restricted-__be16-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-short-usertype-resp_code-got-restricted-__be16-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:symbol-g_hinic_chip_list-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:symbol-hinic_destroy_syncfw_timer-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:symbol-hinic_event_process-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:symbol-hinic_get_ppf_hwdev_by_pdev-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:symbol-hinic_init_syncfw_timer-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:symbol-hinic_version_cmp-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_lld.c:sparse:sparse:symbol-ver_incompat_table-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_main.c:sparse:sparse:symbol-g_hinic_netdev_notifiers_mutex-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_main.c:sparse:sparse:symbol-hinic_netdev_event-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_mbox.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_mbox.c:sparse:sparse:cast-to-restricted-__be64
| |-- drivers-net-ethernet-huawei-hinic-hinic_mbox.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-volatile-noderef-__iomem-addr-got-unsigned-char-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_mbox.c:sparse:sparse:incorrect-type-in-assignment-(different-address-spaces)-expected-unsigned-char-usertype-data-got-unsigned-char-noderef-usertype-__iomem
| |-- drivers-net-ethernet-huawei-hinic-hinic_mbox.c:sparse:sparse:symbol-check_vf_mbox_random_id-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_mbox.c:sparse:sparse:symbol-dump_mox_reg-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_mbox.c:sparse:sparse:symbol-set_vf_mbox_random_id-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_multi_host_mgmt.c:sparse:sparse:symbol-comm_ppf_to_pf_handler-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_multi_host_mgmt.c:sparse:sparse:symbol-hinic_nic_ppf_mbox_handler-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_multi_host_mgmt.c:sparse:sparse:symbol-hinic_nic_ppf_to_pf_handler-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_multi_host_mgmt.c:sparse:sparse:symbol-hinic_register_slave_ppf-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-ctx-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-group_index-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-offset-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-size-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:symbol-hinic_hiovs_del_cpath_vlan-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:symbol-hinic_hiovs_set_cpath_vlan-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:symbol-hw_speed_convert-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:symbol-nic_cmd_support_vf-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_cfg.c:sparse:sparse:symbol-nic_pf_mbox_handler-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_dbg.c:sparse:sparse:cast-removes-address-space-__iomem-of-expression
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_dbg.c:sparse:sparse:incorrect-type-in-return-expression-(different-base-types)-expected-unsigned-short-got-restricted-__be16-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:cast-removes-address-space-__iomem-of-expression
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:cast-to-restricted-__be16
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:cast-to-restricted-__be64
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-volatile-noderef-__iomem-addr-got-unsigned-long-long-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-addressable-usertype-db_info-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-short-usertype-got-restricted-__be16-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:symbol-hinic_qp_prepare_cmdq_header-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:symbol-hinic_rq_prepare_ctxt-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nic_io.c:sparse:sparse:symbol-hinic_sq_prepare_ctxt-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-const-noderef-__user-from-got-void
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-const-noderef-__user-from-got-void-in_buff
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-noderef-__user-to-got-void-out_buf
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:symbol-get_ets_info-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:symbol-get_pfc_info-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:symbol-get_support_tc-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:symbol-get_support_up-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:symbol-set_ets-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:symbol-set_pfc_control-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_nictool.c:sparse:sparse:symbol-set_pfc_priority-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_qp.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_qp.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-status-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_rx.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-addr_high-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_rx.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-addr_low-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_rx.c:sparse:sparse:symbol-hinic_rx_free_buffers-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_rx.c:sparse:sparse:symbol-rx_pass_super_cqe-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_counter.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-ctr_id-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_counter.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_counter.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-value-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_lt.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-assigned-usertype-csr_write_data_h-got-restricted-__be32-userty
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_lt.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-assigned-usertype-csr_write_data_l-got-restricted-__be32-userty
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_lt.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-assigned-usertype-val32-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_lt.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_lt.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-index-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_sml_lt.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-value-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_tx.c:sparse:sparse:cast-to-restricted-__be32
| |-- drivers-net-ethernet-huawei-hinic-hinic_tx.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-hi_addr-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_tx.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-len-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_tx.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-int-usertype-lo_addr-got-restricted-__be32-usertype
| |-- drivers-net-ethernet-huawei-hinic-hinic_tx.c:sparse:sparse:symbol-hinic_setup_tx_wqe-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_tx.c:sparse:sparse:symbol-hinic_stop_sq-was-not-declared.-Should-it-be-static
| |-- drivers-net-ethernet-huawei-hinic-hinic_wq.c:sparse:sparse:cast-to-restricted-__be64
| |-- drivers-net-ethernet-huawei-hinic-hinic_wq.c:sparse:sparse:incorrect-type-in-argument-(different-base-types)-expected-unsigned-int-flag-got-restricted-gfp_t
| `-- drivers-net-ethernet-huawei-hinic-hinic_wq.c:sparse:sparse:incorrect-type-in-assignment-(different-base-types)-expected-unsigned-long-long-usertype-got-restricted-__be64-usertype
|-- x86_64-randconfig-123-20251218
| `-- drivers-net-ethernet-nebula-matrix-nbl-nbl_core-nbl_service.c:sparse:sparse:incorrect-type-in-argument-(different-address-spaces)-expected-void-const-noderef-__user-from-got-void
`-- x86_64-randconfig-161-20251215
|-- arch-x86-kernel-cpu-proc.c:warning:no-previous-prototype-for-show_cpuinfo
|-- arch-x86-kernel-early-quirks.c:warning:no-previous-prototype-for-is_zhaoxin_kh40000
|-- arch-x86-kernel-early-quirks.c:warning:no-previous-prototype-for-kh40000_get_direct_dma_ops
`-- drivers-net-ethernet-nebula-matrix-nbl-nbl_hw-nbl_adminq.c:warning:08x-directive-output-may-be-truncated-writing-bytes-into-a-region-of-size-between-and
elapsed time: 1466m
configs tested: 6
configs skipped: 6
tested configs:
arm64 allnoconfig gcc-15.1.0
loongarch allnoconfig clang-22
x86_64 allmodconfig clang-20
x86_64 allnoconfig clang-20
x86_64 allyesconfig clang-20
x86_64 rhel-9.4-rust clang-20
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-6.6 3557/3557] security/integrity/ima/ima_digest_list.c:164:37: sparse: sparse: cast to restricted __le16
by kernel test robot 21 Dec '25
by kernel test robot 21 Dec '25
21 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 5fbe16a682d5af0c2f7145096851e31e3c921d64 [3557/3557] ima: Execute parser to upload digest lists not recognizable by the kernel
config: arm64-randconfig-r132-20251218 (https://download.01.org/0day-ci/archive/20251221/202512211327.X52XldqR-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251221/202512211327.X52XldqR-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/202512211327.X52XldqR-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
>> security/integrity/ima/ima_digest_list.c:164:37: sparse: sparse: cast to restricted __le16
security/integrity/ima/ima_digest_list.c:165:42: sparse: sparse: cast to restricted __le16
security/integrity/ima/ima_digest_list.c:166:37: sparse: sparse: cast to restricted __le16
>> security/integrity/ima/ima_digest_list.c:167:38: sparse: sparse: cast to restricted __le32
security/integrity/ima/ima_digest_list.c:168:40: sparse: sparse: cast to restricted __le32
>> security/integrity/ima/ima_digest_list.c:416:20: sparse: sparse: symbol 'parser_task' was not declared. Should it be static?
vim +164 security/integrity/ima/ima_digest_list.c
b3fef06570ef2b Roberto Sassu 2023-09-12 138
b3fef06570ef2b Roberto Sassu 2023-09-12 139 int ima_parse_compact_list(loff_t size, void *buf, int op)
b3fef06570ef2b Roberto Sassu 2023-09-12 140 {
b3fef06570ef2b Roberto Sassu 2023-09-12 141 u8 *digest;
b3fef06570ef2b Roberto Sassu 2023-09-12 142 void *bufp = buf, *bufendp = buf + size;
b3fef06570ef2b Roberto Sassu 2023-09-12 143 struct compact_list_hdr *hdr;
b3fef06570ef2b Roberto Sassu 2023-09-12 144 size_t digest_len;
b3fef06570ef2b Roberto Sassu 2023-09-12 145 int ret = 0, i;
b3fef06570ef2b Roberto Sassu 2023-09-12 146
80701e75d21f48 Roberto Sassu 2023-09-12 147 if (!(ima_digest_list_actions & ima_policy_flag))
80701e75d21f48 Roberto Sassu 2023-09-12 148 return -EACCES;
80701e75d21f48 Roberto Sassu 2023-09-12 149
b3fef06570ef2b Roberto Sassu 2023-09-12 150 while (bufp < bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12 151 if (bufp + sizeof(*hdr) > bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12 152 pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12 153 return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12 154 }
b3fef06570ef2b Roberto Sassu 2023-09-12 155
b3fef06570ef2b Roberto Sassu 2023-09-12 156 hdr = bufp;
b3fef06570ef2b Roberto Sassu 2023-09-12 157
b3fef06570ef2b Roberto Sassu 2023-09-12 158 if (hdr->version != 1) {
b3fef06570ef2b Roberto Sassu 2023-09-12 159 pr_err("compact list, unsupported version\n");
b3fef06570ef2b Roberto Sassu 2023-09-12 160 return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12 161 }
b3fef06570ef2b Roberto Sassu 2023-09-12 162
b3fef06570ef2b Roberto Sassu 2023-09-12 163 if (ima_canonical_fmt) {
b3fef06570ef2b Roberto Sassu 2023-09-12 @164 hdr->type = le16_to_cpu(hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12 165 hdr->modifiers = le16_to_cpu(hdr->modifiers);
b3fef06570ef2b Roberto Sassu 2023-09-12 166 hdr->algo = le16_to_cpu(hdr->algo);
b3fef06570ef2b Roberto Sassu 2023-09-12 @167 hdr->count = le32_to_cpu(hdr->count);
b3fef06570ef2b Roberto Sassu 2023-09-12 168 hdr->datalen = le32_to_cpu(hdr->datalen);
b3fef06570ef2b Roberto Sassu 2023-09-12 169 }
b3fef06570ef2b Roberto Sassu 2023-09-12 170
b3fef06570ef2b Roberto Sassu 2023-09-12 171 if (hdr->algo >= HASH_ALGO__LAST)
b3fef06570ef2b Roberto Sassu 2023-09-12 172 return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12 173
b3fef06570ef2b Roberto Sassu 2023-09-12 174 digest_len = hash_digest_size[hdr->algo];
b3fef06570ef2b Roberto Sassu 2023-09-12 175
b3fef06570ef2b Roberto Sassu 2023-09-12 176 if (hdr->type >= COMPACT__LAST) {
b3fef06570ef2b Roberto Sassu 2023-09-12 177 pr_err("compact list, invalid type %d\n", hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12 178 return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12 179 }
b3fef06570ef2b Roberto Sassu 2023-09-12 180
b3fef06570ef2b Roberto Sassu 2023-09-12 181 bufp += sizeof(*hdr);
b3fef06570ef2b Roberto Sassu 2023-09-12 182
b3fef06570ef2b Roberto Sassu 2023-09-12 183 for (i = 0; i < hdr->count; i++) {
b3fef06570ef2b Roberto Sassu 2023-09-12 184 if (bufp + digest_len > bufendp) {
b3fef06570ef2b Roberto Sassu 2023-09-12 185 pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12 186 return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12 187 }
b3fef06570ef2b Roberto Sassu 2023-09-12 188
b3fef06570ef2b Roberto Sassu 2023-09-12 189 digest = bufp;
b3fef06570ef2b Roberto Sassu 2023-09-12 190 bufp += digest_len;
b3fef06570ef2b Roberto Sassu 2023-09-12 191
b3fef06570ef2b Roberto Sassu 2023-09-12 192 if (op == DIGEST_LIST_OP_ADD)
b3fef06570ef2b Roberto Sassu 2023-09-12 193 ret = ima_add_digest_data_entry(digest,
b3fef06570ef2b Roberto Sassu 2023-09-12 194 hdr->algo, hdr->type, hdr->modifiers);
b3fef06570ef2b Roberto Sassu 2023-09-12 195 else if (op == DIGEST_LIST_OP_DEL)
b3fef06570ef2b Roberto Sassu 2023-09-12 196 ima_del_digest_data_entry(digest, hdr->algo,
b3fef06570ef2b Roberto Sassu 2023-09-12 197 hdr->type);
b3fef06570ef2b Roberto Sassu 2023-09-12 198 if (ret < 0 && ret != -EEXIST)
b3fef06570ef2b Roberto Sassu 2023-09-12 199 return ret;
b3fef06570ef2b Roberto Sassu 2023-09-12 200 }
b3fef06570ef2b Roberto Sassu 2023-09-12 201
b3fef06570ef2b Roberto Sassu 2023-09-12 202 if (i != hdr->count ||
b3fef06570ef2b Roberto Sassu 2023-09-12 203 bufp != (void *)hdr + sizeof(*hdr) + hdr->datalen) {
b3fef06570ef2b Roberto Sassu 2023-09-12 204 pr_err("compact list, invalid data\n");
b3fef06570ef2b Roberto Sassu 2023-09-12 205 return -EINVAL;
b3fef06570ef2b Roberto Sassu 2023-09-12 206 }
b3fef06570ef2b Roberto Sassu 2023-09-12 207 }
b3fef06570ef2b Roberto Sassu 2023-09-12 208
b3fef06570ef2b Roberto Sassu 2023-09-12 209 return bufp - buf;
b3fef06570ef2b Roberto Sassu 2023-09-12 210 }
80701e75d21f48 Roberto Sassu 2023-09-12 211
:::::: The code at line 164 was first introduced by commit
:::::: b3fef06570ef2b61dd7181e5c1d128bfcbf6b2ef ima: Add parser of compact digest list
:::::: TO: Roberto Sassu <roberto.sassu(a)huawei.com>
:::::: CC: zgzxx <zhangguangzhi3(a)huawei.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-6.6 1/1] drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:883:6: error: no previous prototype for function 'sss_nic_port_module_cable_plug'
by kernel test robot 21 Dec '25
by kernel test robot 21 Dec '25
21 Dec '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 6864d14bb90f03a1e5b7fbcc04fc2ba4d692bd3e [1/1] support 3SNIC 910/920/930 NIC
config: x86_64-allmodconfig (https://download.01.org/0day-ci/archive/20251221/202512211239.WIsno7Ky-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251221/202512211239.WIsno7Ky-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/202512211239.WIsno7Ky-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:6:
In file included from include/linux/pci.h:1663:
In file included from include/linux/dmapool.h:14:
In file included from include/linux/scatterlist.h:8:
In file included from include/linux/mm.h:2204:
include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:883:6: error: no previous prototype for function 'sss_nic_port_module_cable_plug' [-Werror,-Wmissing-prototypes]
883 | void sss_nic_port_module_cable_plug(struct sss_nic_dev *nic_dev, void *event_data)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:883:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
883 | void sss_nic_port_module_cable_plug(struct sss_nic_dev *nic_dev, void *event_data)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:889:6: error: no previous prototype for function 'sss_nic_port_module_cable_unplug' [-Werror,-Wmissing-prototypes]
889 | void sss_nic_port_module_cable_unplug(struct sss_nic_dev *nic_dev, void *event_data)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:889:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
889 | void sss_nic_port_module_cable_unplug(struct sss_nic_dev *nic_dev, void *event_data)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:895:6: error: no previous prototype for function 'sss_nic_port_module_link_err' [-Werror,-Wmissing-prototypes]
895 | void sss_nic_port_module_link_err(struct sss_nic_dev *nic_dev, void *event_data)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:895:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
895 | void sss_nic_port_module_link_err(struct sss_nic_dev *nic_dev, void *event_data)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:1034:22: error: no previous prototype for function 'get_nic_uld_info' [-Werror,-Wmissing-prototypes]
1034 | struct sss_uld_info *get_nic_uld_info(void)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c:1034:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
1034 | struct sss_uld_info *get_nic_uld_info(void)
| ^
| static
9 errors generated.
--
In file included from drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:6:
In file included from include/net/xfrm.h:9:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:8:
In file included from include/linux/cacheflush.h:5:
In file included from arch/x86/include/asm/cacheflush.h:5:
In file included from include/linux/mm.h:2204:
include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:42:5: error: no previous prototype for function 'sss_nic_alloc_sq_resource' [-Werror,-Wmissing-prototypes]
42 | int sss_nic_alloc_sq_resource(struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:42:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
42 | int sss_nic_alloc_sq_resource(struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:87:6: error: no previous prototype for function 'sss_nic_free_sq_resource' [-Werror,-Wmissing-prototypes]
87 | void sss_nic_free_sq_resource(struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:87:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
87 | void sss_nic_free_sq_resource(struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:104:6: error: no previous prototype for function 'sss_nic_init_all_sq' [-Werror,-Wmissing-prototypes]
104 | void sss_nic_init_all_sq(struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:104:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
104 | void sss_nic_init_all_sq(struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:128:5: error: no previous prototype for function 'sss_nic_alloc_sq_desc_group' [-Werror,-Wmissing-prototypes]
128 | int sss_nic_alloc_sq_desc_group(struct sss_nic_dev *nic_dev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:128:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
128 | int sss_nic_alloc_sq_desc_group(struct sss_nic_dev *nic_dev)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:153:6: error: no previous prototype for function 'sss_nic_free_sq_desc_group' [-Werror,-Wmissing-prototypes]
153 | void sss_nic_free_sq_desc_group(struct sss_nic_dev *nic_dev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:153:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
153 | void sss_nic_free_sq_desc_group(struct sss_nic_dev *nic_dev)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:200:6: error: no previous prototype for function 'sss_nic_flush_all_sq' [-Werror,-Wmissing-prototypes]
200 | void sss_nic_flush_all_sq(struct sss_nic_dev *nic_dev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_tx_init.c:200:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
200 | void sss_nic_flush_all_sq(struct sss_nic_dev *nic_dev)
| ^
| static
11 errors generated.
--
In file included from drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:8:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:8:
In file included from include/linux/cacheflush.h:5:
In file included from arch/x86/include/asm/cacheflush.h:5:
In file included from include/linux/mm.h:2204:
include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:80:5: error: no previous prototype for function 'sss_nic_alloc_rq_res_group' [-Werror,-Wmissing-prototypes]
80 | int sss_nic_alloc_rq_res_group(struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:80:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
80 | int sss_nic_alloc_rq_res_group(struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:136:6: error: no previous prototype for function 'sss_nic_free_rq_res_group' [-Werror,-Wmissing-prototypes]
136 | void sss_nic_free_rq_res_group(struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:136:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
136 | void sss_nic_free_rq_res_group(struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:208:5: error: no previous prototype for function 'sss_nic_init_rq_desc_group' [-Werror,-Wmissing-prototypes]
208 | int sss_nic_init_rq_desc_group(struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:208:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
208 | int sss_nic_init_rq_desc_group(struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:235:6: error: no previous prototype for function 'sss_nic_free_rq_desc_group' [-Werror,-Wmissing-prototypes]
235 | void sss_nic_free_rq_desc_group(struct sss_nic_dev *nic_dev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:235:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
235 | void sss_nic_free_rq_desc_group(struct sss_nic_dev *nic_dev)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:241:5: error: no previous prototype for function 'sss_nic_alloc_rq_desc_group' [-Werror,-Wmissing-prototypes]
241 | int sss_nic_alloc_rq_desc_group(struct sss_nic_dev *nic_dev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:241:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
241 | int sss_nic_alloc_rq_desc_group(struct sss_nic_dev *nic_dev)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:267:5: error: no previous prototype for function 'sss_nic_update_rx_rss' [-Werror,-Wmissing-prototypes]
267 | int sss_nic_update_rx_rss(struct sss_nic_dev *nic_dev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:267:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
267 | int sss_nic_update_rx_rss(struct sss_nic_dev *nic_dev)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:282:6: error: no previous prototype for function 'sss_nic_reset_rx_rss' [-Werror,-Wmissing-prototypes]
282 | void sss_nic_reset_rx_rss(struct net_device *netdev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_init.c:282:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
282 | void sss_nic_reset_rx_rss(struct net_device *netdev)
| ^
| static
12 errors generated.
--
In file included from drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_reset.c:8:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:8:
In file included from include/linux/cacheflush.h:5:
In file included from arch/x86/include/asm/cacheflush.h:5:
In file included from include/linux/mm.h:2204:
include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_reset.c:179:6: error: no previous prototype for function 'sss_nic_rq_watchdog_handler' [-Werror,-Wmissing-prototypes]
179 | void sss_nic_rq_watchdog_handler(struct work_struct *work)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_rx_reset.c:179:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
179 | void sss_nic_rq_watchdog_handler(struct work_struct *work)
| ^
| static
6 errors generated.
--
In file included from drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:7:
In file included from include/linux/etherdevice.h:20:
In file included from include/linux/if_ether.h:19:
In file included from include/linux/skbuff.h:17:
In file included from include/linux/bvec.h:10:
In file included from include/linux/highmem.h:8:
In file included from include/linux/cacheflush.h:5:
In file included from arch/x86/include/asm/cacheflush.h:5:
In file included from include/linux/mm.h:2204:
include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:350:6: error: no previous prototype for function 'sss_nic_flush_tcam_list' [-Werror,-Wmissing-prototypes]
350 | void sss_nic_flush_tcam_list(struct sss_nic_tcam_info *tcam_info)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:350:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
350 | void sss_nic_flush_tcam_list(struct sss_nic_tcam_info *tcam_info)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:366:6: error: no previous prototype for function 'sss_nic_flush_tcam_node_list' [-Werror,-Wmissing-prototypes]
366 | void sss_nic_flush_tcam_node_list(struct sss_nic_tcam_info *tcam_info)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:366:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
366 | void sss_nic_flush_tcam_node_list(struct sss_nic_tcam_info *tcam_info)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:382:6: error: no previous prototype for function 'sss_nic_flush_rx_flow_rule' [-Werror,-Wmissing-prototypes]
382 | void sss_nic_flush_rx_flow_rule(struct sss_nic_rx_rule *rx_flow_rule)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:382:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
382 | void sss_nic_flush_rx_flow_rule(struct sss_nic_rx_rule *rx_flow_rule)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:397:6: error: no previous prototype for function 'sss_nic_flush_tcam' [-Werror,-Wmissing-prototypes]
397 | void sss_nic_flush_tcam(struct sss_nic_dev *nic_dev)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:397:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
397 | void sss_nic_flush_tcam(struct sss_nic_dev *nic_dev)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:797:5: error: no previous prototype for function 'sss_nic_ethtool_update_flow' [-Werror,-Wmissing-prototypes]
797 | int sss_nic_ethtool_update_flow(struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:797:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
797 | int sss_nic_ethtool_update_flow(struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:842:5: error: no previous prototype for function 'sss_nic_ethtool_delete_flow' [-Werror,-Wmissing-prototypes]
842 | int sss_nic_ethtool_delete_flow(struct sss_nic_dev *nic_dev, u32 location)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:842:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
842 | int sss_nic_ethtool_delete_flow(struct sss_nic_dev *nic_dev, u32 location)
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:864:5: error: no previous prototype for function 'sss_nic_ethtool_get_flow' [-Werror,-Wmissing-prototypes]
864 | int sss_nic_ethtool_get_flow(const struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:864:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
864 | int sss_nic_ethtool_get_flow(const struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:887:5: error: no previous prototype for function 'sss_nic_ethtool_get_all_flows' [-Werror,-Wmissing-prototypes]
887 | int sss_nic_ethtool_get_all_flows(const struct sss_nic_dev *nic_dev,
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:887:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
887 | int sss_nic_ethtool_get_all_flows(const struct sss_nic_dev *nic_dev,
| ^
| static
>> drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:905:6: error: no previous prototype for function 'sss_nic_validate_channel_setting_in_ntuple' [-Werror,-Wmissing-prototypes]
905 | bool sss_nic_validate_channel_setting_in_ntuple(const struct sss_nic_dev *nic_dev, u32 q_num)
| ^
drivers/net/ethernet/3snic/sssnic/nic/sss_nic_ntuple.c:905:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
905 | bool sss_nic_validate_channel_setting_in_ntuple(const struct sss_nic_dev *nic_dev, u32 q_num)
| ^
| static
14 errors generated.
..
vim +/sss_nic_port_module_cable_plug +883 drivers/net/ethernet/3snic/sssnic/nic/sss_nic_main.c
882
> 883 void sss_nic_port_module_cable_plug(struct sss_nic_dev *nic_dev, void *event_data)
884 {
885 nicif_info(nic_dev, link, nic_dev->netdev,
886 "Port module event: Cable plugged\n");
887 }
888
> 889 void sss_nic_port_module_cable_unplug(struct sss_nic_dev *nic_dev, void *event_data)
890 {
891 nicif_info(nic_dev, link, nic_dev->netdev,
892 "Port module event: Cable unplugged\n");
893 }
894
> 895 void sss_nic_port_module_link_err(struct sss_nic_dev *nic_dev, void *event_data)
896 {
897 struct sss_nic_port_module_event *port_event = event_data;
898 enum link_err_type err_type = port_event->err_type;
899
900 nicif_info(nic_dev, link, nic_dev->netdev,
901 "Fail to link, err_type: 0x%x\n", err_type);
902 }
903
904 static void sss_nic_port_module_event_handler(struct sss_nic_dev *nic_dev,
905 struct sss_event_info *event)
906 {
907 struct sss_nic_port_module_event *port_event = (void *)event->event_data;
908 enum port_module_event_type type = port_event->type;
909
910 sss_nic_port_module_event_handler_t handler[SSSNIC_PORT_MODULE_MAX_EVENT] = {
911 sss_nic_port_module_cable_plug,
912 sss_nic_port_module_cable_unplug,
913 sss_nic_port_module_link_err,
914 };
915
916 if (type >= SSSNIC_PORT_MODULE_MAX_EVENT) {
917 nicif_err(nic_dev, link, nic_dev->netdev,
918 "Unknown port module type %d\n", type);
919 return;
920 }
921
922 if (handler[type])
923 handler[type](nic_dev, event->event_data);
924 }
925
926 static void sss_nic_link_down(struct sss_nic_dev *nic_dev, struct sss_event_info *event)
927 {
928 struct net_device *netdev = nic_dev->netdev;
929
930 if (!SSS_CHANNEL_RES_VALID(nic_dev) ||
931 test_bit(SSSNIC_LP_TEST, &nic_dev->flags) ||
932 test_bit(SSSNIC_FORCE_LINK_UP, &nic_dev->flags))
933 return;
934
935 if (!netif_carrier_ok(netdev))
936 return;
937
938 netif_carrier_off(netdev);
939 nic_dev->link_status = false;
940 nicif_info(nic_dev, link, netdev, "Link is down\n");
941 }
942
943 static void sss_nic_link_up(struct sss_nic_dev *nic_dev, struct sss_event_info *event)
944 {
945 struct net_device *netdev = nic_dev->netdev;
946
947 if (!SSS_CHANNEL_RES_VALID(nic_dev) ||
948 test_bit(SSSNIC_LP_TEST, &nic_dev->flags) ||
949 test_bit(SSSNIC_FORCE_LINK_UP, &nic_dev->flags))
950 return;
951
952 if (netif_carrier_ok(netdev))
953 return;
954
955 netif_carrier_on(netdev);
956 nic_dev->link_status = true;
957
958 nicif_info(nic_dev, link, netdev, "Link is up\n");
959 }
960
961 static void sss_nic_comm_fail_envet_handler(struct sss_nic_dev *nic_dev,
962 struct sss_event_info *event)
963 {
964 struct sss_fault_event *fault = (void *)event->event_data;
965
966 if (fault->fault_level == SSS_FAULT_LEVEL_SERIOUS_FLR &&
967 fault->info.chip.func_id == sss_get_global_func_id(nic_dev->hwdev))
968 sss_nic_link_down(nic_dev, event);
969 }
970
971 static void sss_nic_event_handler(struct sss_nic_dev *nic_dev, struct sss_event_info *event)
972 {
973 sss_nic_event_handler_t handler[SSSNIC_EVENT_MAX] = {
974 sss_nic_link_down,
975 sss_nic_link_up,
976 sss_nic_port_module_event_handler,
977 NULL,
978 };
979
980 if (event->type >= SSSNIC_EVENT_MAX)
981 return;
982
983 if (handler[event->type])
984 handler[event->type](nic_dev, event);
985 }
986
987 static void sss_nic_comm_event_handler(struct sss_nic_dev *nic_dev,
988 struct sss_event_info *event)
989 {
990 sss_nic_event_handler_t handler[SSS_EVENT_MAX] = {
991 sss_nic_link_down,
992 sss_nic_link_down,
993 sss_nic_comm_fail_envet_handler,
994 sss_nic_sriov_state_change,
995 NULL,
996 sss_nic_link_down,
997 };
998
999 if (event->type >= SSS_EVENT_MAX)
1000 return;
1001
1002 if (handler[event->type])
1003 handler[event->type](nic_dev, event);
1004 }
1005
1006 static void sss_nic_event(struct sss_hal_dev *uld_dev, void *adapter,
1007 struct sss_event_info *event)
1008 {
1009 struct sss_nic_dev *nic_dev = adapter;
1010
1011 if (!nic_dev || !event || !sss_support_nic(uld_dev->hwdev))
1012 return;
1013
1014 if (event->service == SSS_EVENT_SRV_NIC) {
1015 sss_nic_event_handler(nic_dev, event);
1016 return;
1017 }
1018
1019 if (event->service == SSS_EVENT_SRV_COMM) {
1020 sss_nic_comm_event_handler(nic_dev, event);
1021 return;
1022 }
1023 }
1024
1025 struct sss_uld_info g_nic_uld_info = {
1026 .probe = sss_nic_probe,
1027 .remove = sss_nic_remove,
1028 .suspend = NULL,
1029 .resume = NULL,
1030 .event = sss_nic_event,
1031 .ioctl = sss_tool_ioctl,
1032 };
1033
> 1034 struct sss_uld_info *get_nic_uld_info(void)
1035 {
1036 return &g_nic_uld_info;
1037 }
1038
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0
[openeuler:OLK-6.6 3563/3563] drivers/scsi/linkdata/ps3stor/ps3_qos.c:3023:6: error: no previous prototype for function 'ps3_hba_qos_waitq_poll'
by kernel test robot 21 Dec '25
by kernel test robot 21 Dec '25
21 Dec '25
Hi openeuler-ci-bot,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 04473ee9ed912a16fff0d8846ad565bbf3d63c77
commit: 663a9a1c191fd26f1d8cb44edb6e0e50dd0536b2 [3563/3563] !14287 [OLK-6.6] SCSI: Support Linkdata HBA/RAID Controllers
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20251221/202512211148.JPQqoPy8-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251221/202512211148.JPQqoPy8-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/202512211148.JPQqoPy8-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/scsi/linkdata/ps3stor/ps3_qos.c:211:1: error: no previous prototype for function 'ps3_qos_cmd_waitq_get' [-Werror,-Wmissing-prototypes]
211 | ps3_qos_cmd_waitq_get(struct ps3_qos_tg_context *qos_tg_ctx,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:210:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
210 | struct qos_wait_queue *
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:335:15: error: no previous prototype for function 'ps3_qos_vd_cmdword_get' [-Werror,-Wmissing-prototypes]
335 | unsigned char ps3_qos_vd_cmdword_get(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:335:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
335 | unsigned char ps3_qos_vd_cmdword_get(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:351:15: error: no previous prototype for function 'ps3_qos_exclusive_cmdword_get' [-Werror,-Wmissing-prototypes]
351 | unsigned char ps3_qos_exclusive_cmdword_get(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:351:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
351 | unsigned char ps3_qos_exclusive_cmdword_get(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:363:15: error: no previous prototype for function 'ps3_qos_tg_decision' [-Werror,-Wmissing-prototypes]
363 | unsigned char ps3_qos_tg_decision(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:363:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
363 | unsigned char ps3_qos_tg_decision(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:749:15: error: no previous prototype for function 'ps3_qos_all_pd_rc_get' [-Werror,-Wmissing-prototypes]
749 | unsigned char ps3_qos_all_pd_rc_get(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:749:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
749 | unsigned char ps3_qos_all_pd_rc_get(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:876:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clear_all' [-Werror,-Wmissing-prototypes]
876 | void ps3_pd_quota_waitq_clear_all(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:876:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
876 | void ps3_pd_quota_waitq_clear_all(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:892:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clean' [-Werror,-Wmissing-prototypes]
892 | void ps3_pd_quota_waitq_clean(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:892:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
892 | void ps3_pd_quota_waitq_clean(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:1058:6: error: no previous prototype for function 'ps3_qos_pd_waitq_ratio_update' [-Werror,-Wmissing-prototypes]
1058 | void ps3_qos_pd_waitq_ratio_update(struct ps3_qos_pd_mgr *qos_pd_mgr)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:1058:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
1058 | void ps3_qos_pd_waitq_ratio_update(struct ps3_qos_pd_mgr *qos_pd_mgr)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2019:15: error: no previous prototype for function 'ps3_hba_qos_decision' [-Werror,-Wmissing-prototypes]
2019 | unsigned char ps3_hba_qos_decision(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2019:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2019 | unsigned char ps3_hba_qos_decision(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2040:6: error: no previous prototype for function 'ps3_hba_qos_waitq_notify' [-Werror,-Wmissing-prototypes]
2040 | void ps3_hba_qos_waitq_notify(struct ps3_instance *instance)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2040:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2040 | void ps3_hba_qos_waitq_notify(struct ps3_instance *instance)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2100:6: error: no previous prototype for function 'ps3_cmd_waitq_abort' [-Werror,-Wmissing-prototypes]
2100 | bool ps3_cmd_waitq_abort(struct ps3_cmd *aborted_cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2100:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2100 | bool ps3_cmd_waitq_abort(struct ps3_cmd *aborted_cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2463:6: error: no previous prototype for function 'ps3_hba_qos_waitq_clear_all' [-Werror,-Wmissing-prototypes]
2463 | void ps3_hba_qos_waitq_clear_all(struct ps3_instance *instance, int resp_status)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2463:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2463 | void ps3_hba_qos_waitq_clear_all(struct ps3_instance *instance, int resp_status)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2827:6: error: no previous prototype for function 'ps3_hba_qos_vd_init' [-Werror,-Wmissing-prototypes]
2827 | void ps3_hba_qos_vd_init(struct ps3_instance *instance,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2827:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2827 | void ps3_hba_qos_vd_init(struct ps3_instance *instance,
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2936:6: error: no previous prototype for function 'ps3_hba_qos_vd_reset' [-Werror,-Wmissing-prototypes]
2936 | void ps3_hba_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2936:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2936 | void ps3_hba_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3023:6: error: no previous prototype for function 'ps3_hba_qos_waitq_poll' [-Werror,-Wmissing-prototypes]
3023 | void ps3_hba_qos_waitq_poll(struct ps3_instance *instance)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3023:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3023 | void ps3_hba_qos_waitq_poll(struct ps3_instance *instance)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3279:15: error: no previous prototype for function 'ps3_raid_qos_decision' [-Werror,-Wmissing-prototypes]
3279 | unsigned char ps3_raid_qos_decision(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3279:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3279 | unsigned char ps3_raid_qos_decision(struct ps3_cmd *cmd)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3334:6: error: no previous prototype for function 'ps3_qos_mgrq_resend' [-Werror,-Wmissing-prototypes]
3334 | void ps3_qos_mgrq_resend(struct ps3_qos_softq_mgr *softq_mgr)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3334:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3334 | void ps3_qos_mgrq_resend(struct ps3_qos_softq_mgr *softq_mgr)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3478:6: error: no previous prototype for function 'ps3_raid_qos_waitq_notify' [-Werror,-Wmissing-prototypes]
3478 | void ps3_raid_qos_waitq_notify(struct ps3_instance *instance)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3478:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3478 | void ps3_raid_qos_waitq_notify(struct ps3_instance *instance)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3821:15: error: no previous prototype for function 'ps3_raid_qos_waitq_abort' [-Werror,-Wmissing-prototypes]
3821 | unsigned char ps3_raid_qos_waitq_abort(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3821:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3821 | unsigned char ps3_raid_qos_waitq_abort(struct ps3_cmd *cmd)
| ^
| static
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
--
>> drivers/scsi/linkdata/ps3stor/ps3_scsih.c:1958:1: error: unused function 'ps3_scsih_dev_id_get' [-Werror,-Wunused-function]
1958 | ps3_scsih_dev_id_get(const struct scsi_cmnd *s_cmd)
| ^~~~~~~~~~~~~~~~~~~~
1 error generated.
--
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:21:27: error: unused variable 'PS3_INTERRUPT_CMD_DISABLE_ALL_MASK' [-Werror,-Wunused-const-variable]
21 | static const unsigned int PS3_INTERRUPT_CMD_DISABLE_ALL_MASK = 0x02;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:22:27: error: unused variable 'PS3_INTERRUPT_CMD_ENABLE_MSIX' [-Werror,-Wunused-const-variable]
22 | static const unsigned int PS3_INTERRUPT_CMD_ENABLE_MSIX = 0x01;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:23:27: error: unused variable 'PS3_INTERRUPT_MASK_DISABLE' [-Werror,-Wunused-const-variable]
23 | static const unsigned int PS3_INTERRUPT_MASK_DISABLE = 0x00000002;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:24:27: error: unused variable 'PS3_INTERRUPT_STATUS_EXIST_IRQ' [-Werror,-Wunused-const-variable]
24 | static const unsigned int PS3_INTERRUPT_STATUS_EXIST_IRQ = 0x00000001;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:25:27: error: unused variable 'PS3_INTERRUPT_CLEAR_IRQ' [-Werror,-Wunused-const-variable]
25 | static const unsigned int PS3_INTERRUPT_CLEAR_IRQ = 0x00000001;
| ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:27:27: error: unused variable 'PS3_SSD_IOPS_MSIX_VECTORS' [-Werror,-Wunused-const-variable]
27 | static const unsigned int PS3_SSD_IOPS_MSIX_VECTORS = 8;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:28:27: error: unused variable 'PS3_HDD_IOPS_MSIX_VECTORS' [-Werror,-Wunused-const-variable]
28 | static const unsigned int PS3_HDD_IOPS_MSIX_VECTORS = 8;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
7 errors generated.
--
>> drivers/scsi/linkdata/ps3stor/./linux/ps3_driver_log.c:41:19: error: unused function 'time_for_log' [-Werror,-Wunused-function]
41 | static inline int time_for_log(char *buff, int buf_len)
| ^~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/./linux/ps3_driver_log.c:65:19: error: unused function 'time_for_file_name' [-Werror,-Wunused-function]
65 | static inline int time_for_file_name(char *buff, int buf_len)
| ^~~~~~~~~~~~~~~~~~
2 errors generated.
vim +/ps3_hba_qos_waitq_poll +3023 drivers/scsi/linkdata/ps3stor/ps3_qos.c
97a2bb6ece556f liujie_answer 2024-12-24 2935
97a2bb6ece556f liujie_answer 2024-12-24 @2936 void ps3_hba_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
97a2bb6ece556f liujie_answer 2024-12-24 2937 {
97a2bb6ece556f liujie_answer 2024-12-24 2938 struct ps3_qos_vd_mgr *qos_vd_mgr = NULL;
97a2bb6ece556f liujie_answer 2024-12-24 2939
97a2bb6ece556f liujie_answer 2024-12-24 2940 qos_vd_mgr = ps3_qos_vd_mgr_get_by_id(instance, disk_id);
97a2bb6ece556f liujie_answer 2024-12-24 2941 qos_vd_mgr->valid = PS3_FALSE;
97a2bb6ece556f liujie_answer 2024-12-24 2942 }
97a2bb6ece556f liujie_answer 2024-12-24 2943
97a2bb6ece556f liujie_answer 2024-12-24 2944 void ps3_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
97a2bb6ece556f liujie_answer 2024-12-24 2945 {
97a2bb6ece556f liujie_answer 2024-12-24 2946 if (!PS3_QOS_INITED(instance))
97a2bb6ece556f liujie_answer 2024-12-24 2947 return;
97a2bb6ece556f liujie_answer 2024-12-24 2948
97a2bb6ece556f liujie_answer 2024-12-24 2949 if (instance->qos_context.opts.qos_vd_reset)
97a2bb6ece556f liujie_answer 2024-12-24 2950 instance->qos_context.opts.qos_vd_reset(instance, disk_id);
97a2bb6ece556f liujie_answer 2024-12-24 2951 }
97a2bb6ece556f liujie_answer 2024-12-24 2952
97a2bb6ece556f liujie_answer 2024-12-24 2953 static void ps3_qos_pd_notify_timeout(struct ps3_instance *instance)
97a2bb6ece556f liujie_answer 2024-12-24 2954 {
97a2bb6ece556f liujie_answer 2024-12-24 2955 struct ps3_qos_pd_context *qos_pd_ctx = NULL;
97a2bb6ece556f liujie_answer 2024-12-24 2956 unsigned short i = 0;
97a2bb6ece556f liujie_answer 2024-12-24 2957 struct ps3_qos_pd_mgr *qos_pd_mgr = NULL;
97a2bb6ece556f liujie_answer 2024-12-24 2958 unsigned long timeout_jiffies = 0;
97a2bb6ece556f liujie_answer 2024-12-24 2959
97a2bb6ece556f liujie_answer 2024-12-24 2960 qos_pd_ctx = &instance->qos_context.pd_ctx;
97a2bb6ece556f liujie_answer 2024-12-24 2961 for (i = 1; i <= instance->qos_context.max_pd_count; i++) {
97a2bb6ece556f liujie_answer 2024-12-24 2962 qos_pd_mgr = ps3_qos_pd_mgr_get(instance, i);
97a2bb6ece556f liujie_answer 2024-12-24 2963 timeout_jiffies = qos_pd_mgr->last_sched_jiffies +
97a2bb6ece556f liujie_answer 2024-12-24 2964 PS3_QOS_WAITQ_TIMEOUT * HZ;
97a2bb6ece556f liujie_answer 2024-12-24 2965 if (time_after(jiffies, timeout_jiffies)) {
97a2bb6ece556f liujie_answer 2024-12-24 2966 if (ps3_qos_single_pd_notify(qos_pd_ctx, qos_pd_mgr)) {
97a2bb6ece556f liujie_answer 2024-12-24 2967 LOG_INFO(
97a2bb6ece556f liujie_answer 2024-12-24 2968 "awake qos pd quota waitq by poll. host_no:%u vid:%u pid:%u\n",
97a2bb6ece556f liujie_answer 2024-12-24 2969 PS3_HOST(instance), qos_pd_mgr->vd_id,
97a2bb6ece556f liujie_answer 2024-12-24 2970 qos_pd_mgr->disk_id);
97a2bb6ece556f liujie_answer 2024-12-24 2971 }
97a2bb6ece556f liujie_answer 2024-12-24 2972 }
97a2bb6ece556f liujie_answer 2024-12-24 2973 }
97a2bb6ece556f liujie_answer 2024-12-24 2974 }
97a2bb6ece556f liujie_answer 2024-12-24 2975
97a2bb6ece556f liujie_answer 2024-12-24 2976 static unsigned char ps3_qos_vd_notify_timeout(struct ps3_instance *instance)
97a2bb6ece556f liujie_answer 2024-12-24 2977 {
97a2bb6ece556f liujie_answer 2024-12-24 2978 struct ps3_qos_vd_context *qos_vd_ctx = NULL;
97a2bb6ece556f liujie_answer 2024-12-24 2979 unsigned short i = 0;
97a2bb6ece556f liujie_answer 2024-12-24 2980 struct ps3_qos_vd_mgr *qos_vd_mgr = NULL;
97a2bb6ece556f liujie_answer 2024-12-24 2981 unsigned long timeout_jiffies = 0;
97a2bb6ece556f liujie_answer 2024-12-24 2982 unsigned char notified = PS3_FALSE;
97a2bb6ece556f liujie_answer 2024-12-24 2983
97a2bb6ece556f liujie_answer 2024-12-24 2984 for (i = 1; i <= instance->qos_context.max_vd_count; i++) {
97a2bb6ece556f liujie_answer 2024-12-24 2985 qos_vd_ctx = &instance->qos_context.vd_ctx;
97a2bb6ece556f liujie_answer 2024-12-24 2986 qos_vd_mgr = &qos_vd_ctx->qos_vd_mgrs[i];
97a2bb6ece556f liujie_answer 2024-12-24 2987 timeout_jiffies = qos_vd_mgr->last_sched_jiffies +
97a2bb6ece556f liujie_answer 2024-12-24 2988 PS3_QOS_WAITQ_TIMEOUT * HZ;
97a2bb6ece556f liujie_answer 2024-12-24 2989 if (time_after(jiffies, timeout_jiffies)) {
97a2bb6ece556f liujie_answer 2024-12-24 2990 if (ps3_qos_single_vd_notify(qos_vd_ctx, qos_vd_mgr)) {
97a2bb6ece556f liujie_answer 2024-12-24 2991 notified = PS3_TRUE;
97a2bb6ece556f liujie_answer 2024-12-24 2992 LOG_INFO(
97a2bb6ece556f liujie_answer 2024-12-24 2993 "awake qos vd quota waitq by poll. host_no:%u vid:%u\n",
97a2bb6ece556f liujie_answer 2024-12-24 2994 PS3_HOST(instance), qos_vd_mgr->id);
97a2bb6ece556f liujie_answer 2024-12-24 2995 }
97a2bb6ece556f liujie_answer 2024-12-24 2996 }
97a2bb6ece556f liujie_answer 2024-12-24 2997 }
97a2bb6ece556f liujie_answer 2024-12-24 2998
97a2bb6ece556f liujie_answer 2024-12-24 2999 return notified;
97a2bb6ece556f liujie_answer 2024-12-24 3000 }
97a2bb6ece556f liujie_answer 2024-12-24 3001
97a2bb6ece556f liujie_answer 2024-12-24 3002 static unsigned char ps3_qos_tg_notify_timeout(struct ps3_instance *instance)
97a2bb6ece556f liujie_answer 2024-12-24 3003 {
97a2bb6ece556f liujie_answer 2024-12-24 3004 struct ps3_qos_tg_context *qos_tg_ctx = NULL;
97a2bb6ece556f liujie_answer 2024-12-24 3005 unsigned char notified = PS3_FALSE;
97a2bb6ece556f liujie_answer 2024-12-24 3006 unsigned long timeout_jiffies = 0;
97a2bb6ece556f liujie_answer 2024-12-24 3007
97a2bb6ece556f liujie_answer 2024-12-24 3008 qos_tg_ctx = &instance->qos_context.tg_ctx;
97a2bb6ece556f liujie_answer 2024-12-24 3009 timeout_jiffies =
97a2bb6ece556f liujie_answer 2024-12-24 3010 qos_tg_ctx->last_sched_jiffies + PS3_QOS_WAITQ_TIMEOUT * HZ;
97a2bb6ece556f liujie_answer 2024-12-24 3011 if (qos_tg_ctx->total_wait_cmd_cnt &&
97a2bb6ece556f liujie_answer 2024-12-24 3012 ps3_qos_tag_rsc_available(instance) &&
97a2bb6ece556f liujie_answer 2024-12-24 3013 time_after(jiffies, timeout_jiffies)) {
97a2bb6ece556f liujie_answer 2024-12-24 3014 queue_work(qos_tg_ctx->work_queue, &qos_tg_ctx->resend_work);
97a2bb6ece556f liujie_answer 2024-12-24 3015 notified = PS3_TRUE;
97a2bb6ece556f liujie_answer 2024-12-24 3016 LOG_INFO("awake qos cmd waitq by poll. host_no:%u\n",
97a2bb6ece556f liujie_answer 2024-12-24 3017 PS3_HOST(instance));
97a2bb6ece556f liujie_answer 2024-12-24 3018 }
97a2bb6ece556f liujie_answer 2024-12-24 3019
97a2bb6ece556f liujie_answer 2024-12-24 3020 return notified;
97a2bb6ece556f liujie_answer 2024-12-24 3021 }
97a2bb6ece556f liujie_answer 2024-12-24 3022
97a2bb6ece556f liujie_answer 2024-12-24 @3023 void ps3_hba_qos_waitq_poll(struct ps3_instance *instance)
97a2bb6ece556f liujie_answer 2024-12-24 3024 {
97a2bb6ece556f liujie_answer 2024-12-24 3025 if (!ps3_qos_tg_notify_timeout(instance)) {
97a2bb6ece556f liujie_answer 2024-12-24 3026 if (!ps3_qos_vd_notify_timeout(instance))
97a2bb6ece556f liujie_answer 2024-12-24 3027 ps3_qos_pd_notify_timeout(instance);
97a2bb6ece556f liujie_answer 2024-12-24 3028 }
97a2bb6ece556f liujie_answer 2024-12-24 3029 }
97a2bb6ece556f liujie_answer 2024-12-24 3030
:::::: The code at line 3023 was first introduced by commit
:::::: 97a2bb6ece556f3882263ee8df2b77f10c511311 SCSI: Linkdata: Supports Linkdata HBA/RAID Controllers
:::::: TO: liujie_answer <liujie5(a)linkdatatechnology.com>
:::::: CC: liujie_answer <liujie5(a)linkdatatechnology.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0