mailweb.openeuler.org
Manage this list

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

Kernel

Threads by month
  • ----- 2025 -----
  • 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
kernel@openeuler.org

  • 47 participants
  • 19848 discussions
[openeuler:OLK-6.6 2658/2658] net/ipv4/tcp_comp.c:740:6: warning: no previous prototype for function 'comp_stream_read'
by kernel test robot 06 Aug '25

06 Aug '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: 8551213150db5f8eebd27273dae93f6fe258d63a commit: c31dcf6c5ab41f07da38d3f270987807735ec93e [2658/2658] tcp_comp: implement tcp compression config: loongarch-randconfig-2005-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061529.suELGrA5-lkp@…) compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project faa4c4c2dc804c31845d8f036345fac00e016f2d) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061529.suELGrA5-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/202508061529.suELGrA5-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from net/ipv4/tcp_comp.c:8: In file included from include/linux/skmsg.h:7: In file included from include/linux/bpf.h:20: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2181: include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 509 | item]; | ~~~~ include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 516 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 528 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ In file included from net/ipv4/tcp_comp.c:8: In file included from include/linux/skmsg.h:13: In file included from include/net/tcp.h:32: In file included from include/net/inet_hashtables.h:26: include/net/ip.h:463:14: warning: default initialization of an object of type 'typeof (rt->dst.expires)' (aka 'const unsigned long') leaves the object uninitialized [-Wdefault-const-init-var-unsafe] 463 | if (mtu && time_before(jiffies, rt->dst.expires)) | ^ include/linux/jiffies.h:135:26: note: expanded from macro 'time_before' 135 | #define time_before(a,b) time_after(b,a) | ^ include/linux/jiffies.h:125:3: note: expanded from macro 'time_after' 125 | (typecheck(unsigned long, a) && \ | ^ include/linux/typecheck.h:11:12: note: expanded from macro 'typecheck' 11 | typeof(x) __dummy2; \ | ^ >> net/ipv4/tcp_comp.c:740:6: warning: no previous prototype for function 'comp_stream_read' [-Wmissing-prototypes] 740 | bool comp_stream_read(struct sock *sk) | ^ net/ipv4/tcp_comp.c:740:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 740 | bool comp_stream_read(struct sock *sk) | ^ | static >> net/ipv4/tcp_comp.c:779:6: warning: no previous prototype for function 'comp_setup_strp' [-Wmissing-prototypes] 779 | void comp_setup_strp(struct sock *sk, struct tcp_comp_context *ctx) | ^ net/ipv4/tcp_comp.c:779:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 779 | void comp_setup_strp(struct sock *sk, struct tcp_comp_context *ctx) | ^ | static 7 warnings generated. vim +/comp_stream_read +740 net/ipv4/tcp_comp.c 739 > 740 bool comp_stream_read(struct sock *sk) 741 { 742 struct tcp_comp_context *ctx = comp_get_ctx(sk); 743 744 if (!ctx) 745 return false; 746 747 if (ctx->rx.pkt || ctx->rx.dpkt) 748 return true; 749 750 return false; 751 } 752 753 static void comp_data_ready(struct sock *sk) 754 { 755 struct tcp_comp_context *ctx = comp_get_ctx(sk); 756 757 strp_data_ready(&ctx->rx.strp); 758 } 759 760 static void comp_queue(struct strparser *strp, struct sk_buff *skb) 761 { 762 struct tcp_comp_context *ctx = comp_get_ctx(strp->sk); 763 764 ctx->rx.pkt = skb; 765 strp_pause(strp); 766 ctx->rx.saved_data_ready(strp->sk); 767 } 768 769 static int comp_read_size(struct strparser *strp, struct sk_buff *skb) 770 { 771 struct strp_msg *rxm = strp_msg(skb); 772 773 if (rxm->offset > skb->len) 774 return 0; 775 776 return skb->len - rxm->offset; 777 } 778 > 779 void comp_setup_strp(struct sock *sk, struct tcp_comp_context *ctx) 780 { 781 struct strp_callbacks cb; 782 783 memset(&cb, 0, sizeof(cb)); 784 cb.rcv_msg = comp_queue; 785 cb.parse_msg = comp_read_size; 786 strp_init(&ctx->rx.strp, sk, &cb); 787 788 write_lock_bh(&sk->sk_callback_lock); 789 ctx->rx.saved_data_ready = sk->sk_data_ready; 790 sk->sk_data_ready = comp_data_ready; 791 write_unlock_bh(&sk->sk_callback_lock); 792 793 strp_check_rcv(&ctx->rx.strp); 794 } 795 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[PATCH OLK-6.6] kbuild: userprogs: use correct linker when mixing clang and GNU ld
by Tengda Wu 06 Aug '25

06 Aug '25
From: Thomas Weißschuh <thomas.weissschuh(a)linutronix.de> mainline inclusion from mainline-v6.17 commit 936599ca514973d44a766b7376c6bbdc96b6a8cc category: bugfix bugzilla: https://gitee.com/openeuler/kernel/issues/ICRNOY Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?… -------------------------------- The userprogs infrastructure does not expect clang being used with GNU ld and in that case uses /usr/bin/ld for linking, not the configured $(LD). This fallback is problematic as it will break when cross-compiling. Mixing clang and GNU ld is used for example when building for SPARC64, as ld.lld is not sufficient; see Documentation/kbuild/llvm.rst. Relax the check around --ld-path so it gets used for all linkers. Fixes: dfc1b168a8c4 ("kbuild: userprogs: use correct lld when linking through clang") Cc: stable(a)vger.kernel.org Signed-off-by: Thomas Weißschuh <thomas.weissschuh(a)linutronix.de> Reviewed-by: Nathan Chancellor <nathan(a)kernel.org> Signed-off-by: Masahiro Yamada <masahiroy(a)kernel.org> Conflicts: Makefile [Context conflicts] Signed-off-by: Tengda Wu <wutengda2(a)huawei.com> --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 4cbc72182f6b..2a6541892eea 100644 --- a/Makefile +++ b/Makefile @@ -1060,7 +1060,7 @@ KBUILD_USERCFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS)) # userspace programs are linked via the compiler, use the correct linker -ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_LD_IS_LLD),yy) +ifdef CONFIG_CC_IS_CLANG KBUILD_USERLDFLAGS += $(call cc-option, --ld-path=$(LD)) endif -- 2.34.1
2 1
0 0
[openeuler:OLK-5.10 3106/3106] block/bfq-cgroup.c:692: warning: Function parameter or member 'bfqg' not described in '__bfq_bic_change_cgroup'
by kernel test robot 06 Aug '25

06 Aug '25
tree: https://gitee.com/openeuler/kernel.git OLK-5.10 head: a8c621aa031669a6835da1431d9765e3bbbc3621 commit: b8fcf506e7428600d59004a436f0ce98a21874d7 [3106/3106] bfq: Get rid of __bio_blkcg() usage config: arm64-randconfig-003-20250806 (https://download.01.org/0day-ci/archive/20250806/202508062043.ijR1VTdp-lkp@…) compiler: aarch64-linux-gcc (GCC) 9.5.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508062043.ijR1VTdp-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/202508062043.ijR1VTdp-lkp@intel.com/ All warnings (new ones prefixed by >>): >> block/bfq-cgroup.c:692: warning: Function parameter or member 'bfqg' not described in '__bfq_bic_change_cgroup' >> block/bfq-cgroup.c:692: warning: Excess function parameter 'blkcg' description in '__bfq_bic_change_cgroup' block/bfq-cgroup.c:841: warning: Function parameter or member 'ioprio_class' not described in 'bfq_reparent_leaf_entity' block/bfq-cgroup.c:871: warning: Function parameter or member 'ioprio_class' not described in 'bfq_reparent_active_queues' vim +692 block/bfq-cgroup.c ea25da48086d3b Paolo Valente 2017-04-19 678 ea25da48086d3b Paolo Valente 2017-04-19 679 /** ea25da48086d3b Paolo Valente 2017-04-19 680 * __bfq_bic_change_cgroup - move @bic to @cgroup. ea25da48086d3b Paolo Valente 2017-04-19 681 * @bfqd: the queue descriptor. ea25da48086d3b Paolo Valente 2017-04-19 682 * @bic: the bic to move. ea25da48086d3b Paolo Valente 2017-04-19 683 * @blkcg: the blk-cgroup to move to. ea25da48086d3b Paolo Valente 2017-04-19 684 * 8f9bebc33dd718 Paolo Valente 2017-06-05 685 * Move bic to blkcg, assuming that bfqd->lock is held; which makes 8f9bebc33dd718 Paolo Valente 2017-06-05 686 * sure that the reference to cgroup is valid across the call (see 8f9bebc33dd718 Paolo Valente 2017-06-05 687 * comments in bfq_bic_update_cgroup on this issue) ea25da48086d3b Paolo Valente 2017-04-19 688 */ b8fcf506e74286 Jan Kara 2022-11-21 689 static void *__bfq_bic_change_cgroup(struct bfq_data *bfqd, ea25da48086d3b Paolo Valente 2017-04-19 690 struct bfq_io_cq *bic, b8fcf506e74286 Jan Kara 2022-11-21 691 struct bfq_group *bfqg) ea25da48086d3b Paolo Valente 2017-04-19 @692 { ea25da48086d3b Paolo Valente 2017-04-19 693 struct bfq_queue *async_bfqq = bic_to_bfqq(bic, 0); ea25da48086d3b Paolo Valente 2017-04-19 694 struct bfq_queue *sync_bfqq = bic_to_bfqq(bic, 1); ea25da48086d3b Paolo Valente 2017-04-19 695 struct bfq_entity *entity; ea25da48086d3b Paolo Valente 2017-04-19 696 ea25da48086d3b Paolo Valente 2017-04-19 697 if (async_bfqq) { ea25da48086d3b Paolo Valente 2017-04-19 698 entity = &async_bfqq->entity; ea25da48086d3b Paolo Valente 2017-04-19 699 ea25da48086d3b Paolo Valente 2017-04-19 700 if (entity->sched_data != &bfqg->sched_data) { ea25da48086d3b Paolo Valente 2017-04-19 701 bic_set_bfqq(bic, NULL, 0); c8997736650060 Paolo Valente 2020-03-21 702 bfq_release_process_ref(bfqd, async_bfqq); ea25da48086d3b Paolo Valente 2017-04-19 703 } ea25da48086d3b Paolo Valente 2017-04-19 704 } ea25da48086d3b Paolo Valente 2017-04-19 705 ea25da48086d3b Paolo Valente 2017-04-19 706 if (sync_bfqq) { 0154382317ee69 Jan Kara 2022-09-29 707 if (!sync_bfqq->new_bfqq && !bfq_bfqq_coop(sync_bfqq)) { 0154382317ee69 Jan Kara 2022-09-29 708 /* We are the only user of this bfqq, just move it */ 0154382317ee69 Jan Kara 2022-09-29 709 if (sync_bfqq->entity.sched_data != &bfqg->sched_data) ea25da48086d3b Paolo Valente 2017-04-19 710 bfq_bfqq_move(bfqd, sync_bfqq, bfqg); 0154382317ee69 Jan Kara 2022-09-29 711 } else { 0154382317ee69 Jan Kara 2022-09-29 712 struct bfq_queue *bfqq; 0154382317ee69 Jan Kara 2022-09-29 713 0154382317ee69 Jan Kara 2022-09-29 714 /* 0154382317ee69 Jan Kara 2022-09-29 715 * The queue was merged to a different queue. Check 0154382317ee69 Jan Kara 2022-09-29 716 * that the merge chain still belongs to the same 0154382317ee69 Jan Kara 2022-09-29 717 * cgroup. 0154382317ee69 Jan Kara 2022-09-29 718 */ 0154382317ee69 Jan Kara 2022-09-29 719 for (bfqq = sync_bfqq; bfqq; bfqq = bfqq->new_bfqq) 0154382317ee69 Jan Kara 2022-09-29 720 if (bfqq->entity.sched_data != 0154382317ee69 Jan Kara 2022-09-29 721 &bfqg->sched_data) 0154382317ee69 Jan Kara 2022-09-29 722 break; 0154382317ee69 Jan Kara 2022-09-29 723 if (bfqq) { 0154382317ee69 Jan Kara 2022-09-29 724 /* 0154382317ee69 Jan Kara 2022-09-29 725 * Some queue changed cgroup so the merge is 0154382317ee69 Jan Kara 2022-09-29 726 * not valid anymore. We cannot easily just 0154382317ee69 Jan Kara 2022-09-29 727 * cancel the merge (by clearing new_bfqq) as 0154382317ee69 Jan Kara 2022-09-29 728 * there may be other processes using this 0154382317ee69 Jan Kara 2022-09-29 729 * queue and holding refs to all queues below 0154382317ee69 Jan Kara 2022-09-29 730 * sync_bfqq->new_bfqq. Similarly if the merge 0154382317ee69 Jan Kara 2022-09-29 731 * already happened, we need to detach from 0154382317ee69 Jan Kara 2022-09-29 732 * bfqq now so that we cannot merge bio to a 0154382317ee69 Jan Kara 2022-09-29 733 * request from the old cgroup. 0154382317ee69 Jan Kara 2022-09-29 734 */ 0154382317ee69 Jan Kara 2022-09-29 735 bfq_put_cooperator(sync_bfqq); 0154382317ee69 Jan Kara 2022-09-29 736 bfq_release_process_ref(bfqd, sync_bfqq); 0154382317ee69 Jan Kara 2022-09-29 737 bic_set_bfqq(bic, NULL, 1); 0154382317ee69 Jan Kara 2022-09-29 738 } 0154382317ee69 Jan Kara 2022-09-29 739 } ea25da48086d3b Paolo Valente 2017-04-19 740 } ea25da48086d3b Paolo Valente 2017-04-19 741 ea25da48086d3b Paolo Valente 2017-04-19 742 return bfqg; ea25da48086d3b Paolo Valente 2017-04-19 743 } ea25da48086d3b Paolo Valente 2017-04-19 744 :::::: The code at line 692 was first introduced by commit :::::: ea25da48086d3bbebf3a2eeff387ea00ed96f5c4 block, bfq: split bfq-iosched.c into multiple source files :::::: TO: Paolo Valente <paolo.valente(a)linaro.org> :::::: CC: Jens Axboe <axboe(a)fb.com> -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:OLK-5.10 3106/3106] drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:752:6: warning: no previous prototype for 'ngbe_add_uc_addr'
by kernel test robot 06 Aug '25

06 Aug '25
tree: https://gitee.com/openeuler/kernel.git OLK-5.10 head: a8c621aa031669a6835da1431d9765e3bbbc3621 commit: a5961b4bc6ce09a70902686ecc848a47493a9251 [3106/3106] openeuler: net: ngbe: add ngbe module support config: x86_64-buildonly-randconfig-2003-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061443.vbBAmdyk-lkp@…) compiler: gcc-11 (Debian 11.3.0-12) 11.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061443.vbBAmdyk-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/202508061443.vbBAmdyk-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from drivers/net/ethernet/netswift/ngbe/ngbe_phy.h:8, from drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:6: drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb': drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable] 741 | u32 cur_diff = 0; | ^~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_hw.c: At top level: >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:752:6: warning: no previous prototype for 'ngbe_add_uc_addr' [-Wmissing-prototypes] 752 | void ngbe_add_uc_addr(struct ngbe_hw *hw, u8 *addr, u32 vmdq) | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:885:6: warning: no previous prototype for 'ngbe_set_mta' [-Wmissing-prototypes] 885 | void ngbe_set_mta(struct ngbe_hw *hw, u8 *mc_addr) | ^~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:1889:5: warning: no previous prototype for 'ngbe_host_interface_pass_command' [-Wmissing-prototypes] 1889 | s32 ngbe_host_interface_pass_command(struct ngbe_hw *hw, u32 *buffer, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2186:5: warning: no previous prototype for 'ngbe_setup_mac_link_hostif' [-Wmissing-prototypes] 2186 | s32 ngbe_setup_mac_link_hostif(struct ngbe_hw *hw, u32 speed) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2222:5: warning: no previous prototype for 'ngbe_crc16_ccitt' [-Wmissing-prototypes] 2222 | u16 ngbe_crc16_ccitt(const u8 *buf, int size) | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2339:4: warning: no previous prototype for 'fmgr_cmd_op' [-Wmissing-prototypes] 2339 | u8 fmgr_cmd_op(struct ngbe_hw *hw, u32 cmd, u32 cmd_addr) | ^~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2360:4: warning: no previous prototype for 'fmgr_usr_cmd_op' [-Wmissing-prototypes] 2360 | u8 fmgr_usr_cmd_op(struct ngbe_hw *hw, u32 usr_cmd) | ^~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2370:4: warning: no previous prototype for 'flash_erase_chip' [-Wmissing-prototypes] 2370 | u8 flash_erase_chip(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2376:4: warning: no previous prototype for 'flash_erase_sector' [-Wmissing-prototypes] 2376 | u8 flash_erase_sector(struct ngbe_hw *hw, u32 sec_addr) | ^~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2392:4: warning: no previous prototype for 'flash_write_dword' [-Wmissing-prototypes] 2392 | u8 flash_write_dword(struct ngbe_hw *hw, u32 addr, u32 dword) | ^~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3296:5: warning: no previous prototype for 'ngbe_get_copper_link_capabilities' [-Wmissing-prototypes] 3296 | s32 ngbe_get_copper_link_capabilities(struct ngbe_hw *hw, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3456:5: warning: no previous prototype for 'ngbe_reset_misc' [-Wmissing-prototypes] 3456 | int ngbe_reset_misc(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3910:5: warning: no previous prototype for 'ngbe_read_ee_hostif_data' [-Wmissing-prototypes] 3910 | s32 ngbe_read_ee_hostif_data(struct ngbe_hw *hw, u16 offset, | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3981:5: warning: no previous prototype for 'ngbe_phy_led_oem_chk' [-Wmissing-prototypes] 3981 | s32 ngbe_phy_led_oem_chk(struct ngbe_hw *hw, u32 *data) | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:4163:5: warning: no previous prototype for 'ngbe_read_ee_hostif_data32' [-Wmissing-prototypes] 4163 | s32 ngbe_read_ee_hostif_data32(struct ngbe_hw *hw, u16 offset, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:4225:5: warning: no previous prototype for 'ngbe_write_ee_hostif_data' [-Wmissing-prototypes] 4225 | s32 ngbe_write_ee_hostif_data(struct ngbe_hw *hw, u16 offset, | ^~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:4282:5: warning: no previous prototype for 'ngbe_write_ee_hostif_data32' [-Wmissing-prototypes] 4282 | s32 ngbe_write_ee_hostif_data32(struct ngbe_hw *hw, u16 offset, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2689:17: warning: 'ngbe_emc_therm_limit' defined but not used [-Wunused-const-variable=] 2689 | static const u8 ngbe_emc_therm_limit[4] = { | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2682:17: warning: 'ngbe_emc_temp_data' defined but not used [-Wunused-const-variable=] 2682 | static const u8 ngbe_emc_temp_data[4] = { | ^~~~~~~~~~~~~~~~~~ -- In file included from drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:5: drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb': drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable] 741 | u32 cur_diff = 0; | ^~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c: At top level: >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:113:5: warning: no previous prototype for 'ngbe_poll_for_msg' [-Wmissing-prototypes] 113 | int ngbe_poll_for_msg(struct ngbe_hw *hw, u16 mbx_id) | ^~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:143:5: warning: no previous prototype for 'ngbe_poll_for_ack' [-Wmissing-prototypes] 143 | int ngbe_poll_for_ack(struct ngbe_hw *hw, u16 mbx_id) | ^~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:244:5: warning: no previous prototype for 'ngbe_read_v2p_mailbox' [-Wmissing-prototypes] 244 | u32 ngbe_read_v2p_mailbox(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:262:5: warning: no previous prototype for 'ngbe_check_for_bit_vf' [-Wmissing-prototypes] 262 | int ngbe_check_for_bit_vf(struct ngbe_hw *hw, u32 mask) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:278:5: warning: no previous prototype for 'ngbe_check_for_msg_vf' [-Wmissing-prototypes] 278 | int ngbe_check_for_msg_vf(struct ngbe_hw *hw, u16 __always_unused mbx_id) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:298:5: warning: no previous prototype for 'ngbe_check_for_ack_vf' [-Wmissing-prototypes] 298 | int ngbe_check_for_ack_vf(struct ngbe_hw *hw, u16 __always_unused mbx_id) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:318:5: warning: no previous prototype for 'ngbe_check_for_rst_vf' [-Wmissing-prototypes] 318 | int ngbe_check_for_rst_vf(struct ngbe_hw *hw, u16 __always_unused mbx_id) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:337:5: warning: no previous prototype for 'ngbe_obtain_mbx_lock_vf' [-Wmissing-prototypes] 337 | int ngbe_obtain_mbx_lock_vf(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:365:5: warning: no previous prototype for 'ngbe_write_mbx_vf' [-Wmissing-prototypes] 365 | int ngbe_write_mbx_vf(struct ngbe_hw *hw, u32 *msg, u16 size, | ^~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:403:5: warning: no previous prototype for 'ngbe_read_mbx_vf' [-Wmissing-prototypes] 403 | int ngbe_read_mbx_vf(struct ngbe_hw *hw, u32 *msg, u16 size, | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:461:5: warning: no previous prototype for 'ngbe_check_for_bit_pf' [-Wmissing-prototypes] 461 | int ngbe_check_for_bit_pf(struct ngbe_hw *hw, u32 mask) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:481:5: warning: no previous prototype for 'ngbe_check_for_msg_pf' [-Wmissing-prototypes] 481 | int ngbe_check_for_msg_pf(struct ngbe_hw *hw, u16 vf) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:501:5: warning: no previous prototype for 'ngbe_check_for_ack_pf' [-Wmissing-prototypes] 501 | int ngbe_check_for_ack_pf(struct ngbe_hw *hw, u16 vf) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:521:5: warning: no previous prototype for 'ngbe_check_for_rst_pf' [-Wmissing-prototypes] 521 | int ngbe_check_for_rst_pf(struct ngbe_hw *hw, u16 vf) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:544:5: warning: no previous prototype for 'ngbe_obtain_mbx_lock_pf' [-Wmissing-prototypes] 544 | int ngbe_obtain_mbx_lock_pf(struct ngbe_hw *hw, u16 vf) | ^~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:572:5: warning: no previous prototype for 'ngbe_write_mbx_pf' [-Wmissing-prototypes] 572 | int ngbe_write_mbx_pf(struct ngbe_hw *hw, u32 *msg, u16 size, | ^~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:612:5: warning: no previous prototype for 'ngbe_read_mbx_pf' [-Wmissing-prototypes] 612 | int ngbe_read_mbx_pf(struct ngbe_hw *hw, u32 *msg, u16 size, | ^~~~~~~~~~~~~~~~ -- In file included from drivers/net/ethernet/netswift/ngbe/ngbe_ptp.c:4: drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb': drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable] 741 | u32 cur_diff = 0; | ^~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_ptp.c: In function 'ngbe_ptp_check_pps_event': >> drivers/net/ethernet/netswift/ngbe/ngbe_ptp.c:253:32: warning: variable 'event' set but not used [-Wunused-but-set-variable] 253 | struct ptp_clock_event event; | ^~~~~ -- In file included from drivers/net/ethernet/netswift/ngbe/ngbe_phy.h:8, from drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:4: drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb': drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable] 741 | u32 cur_diff = 0; | ^~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_phy.c: At top level: >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:16:6: warning: no previous prototype for 'ngbe_check_reset_blocked' [-Wmissing-prototypes] 16 | bool ngbe_check_reset_blocked(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:33:5: warning: no previous prototype for 'ngbe_phy_read_reg' [-Wmissing-prototypes] 33 | s32 ngbe_phy_read_reg(struct ngbe_hw *hw, | ^~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:56:5: warning: no previous prototype for 'ngbe_phy_write_reg' [-Wmissing-prototypes] 56 | s32 ngbe_phy_write_reg(struct ngbe_hw *hw, | ^~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:74:5: warning: no previous prototype for 'ngbe_check_internal_phy_id' [-Wmissing-prototypes] 74 | s32 ngbe_check_internal_phy_id(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:273:5: warning: no previous prototype for 'ngbe_check_mdi_phy_id' [-Wmissing-prototypes] 273 | s32 ngbe_check_mdi_phy_id(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:337:6: warning: no previous prototype for 'ngbe_validate_phy_addr' [-Wmissing-prototypes] 337 | bool ngbe_validate_phy_addr(struct ngbe_hw *hw, u32 phy_addr) | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:353:5: warning: no previous prototype for 'ngbe_check_yt_phy_id' [-Wmissing-prototypes] 353 | s32 ngbe_check_yt_phy_id(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1242:5: warning: no previous prototype for 'ngbe_phy_get_advertised_pause' [-Wmissing-prototypes] 1242 | s32 ngbe_phy_get_advertised_pause(struct ngbe_hw *hw, u8 *pause_bit) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1279:5: warning: no previous prototype for 'ngbe_phy_get_lp_advertised_pause' [-Wmissing-prototypes] 1279 | s32 ngbe_phy_get_lp_advertised_pause(struct ngbe_hw *hw, u8 *pause_bit) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1324:5: warning: no previous prototype for 'ngbe_phy_set_pause_advertisement' [-Wmissing-prototypes] 1324 | s32 ngbe_phy_set_pause_advertisement(struct ngbe_hw *hw, u16 pause_bit) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1450:5: warning: no previous prototype for 'ngbe_phy_setup' [-Wmissing-prototypes] 1450 | s32 ngbe_phy_setup(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~ -- In file included from drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c:15: drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb': drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable] 741 | u32 cur_diff = 0; | ^~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c: At top level: >> drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c:128:5: warning: no previous prototype for 'ngbe_get_link_ksettings' [-Wmissing-prototypes] 128 | int ngbe_get_link_ksettings(struct net_device *netdev, | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c: In function 'ngbe_set_link_ksettings': >> drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c:318:25: warning: variable 'old' set but not used [-Wunused-but-set-variable] 318 | u32 advertised, old; | ^~~ -- In file included from drivers/net/ethernet/netswift/ngbe/ngbe_main.c:23: drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb': drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable] 741 | u32 cur_diff = 0; | ^~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_main.c: At top level: >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:139:6: warning: no previous prototype for 'ngbe_service_event_schedule' [-Wmissing-prototypes] 139 | void ngbe_service_event_schedule(struct ngbe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_main.c: In function 'ngbe_tx_timeout': drivers/net/ethernet/netswift/ngbe/ngbe_main.c:401:14: warning: variable 'real_tx_hang' set but not used [-Wunused-but-set-variable] 401 | bool real_tx_hang = false; | ^~~~~~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_main.c: At top level: >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3159:6: warning: no previous prototype for 'ngbe_configure_isb' [-Wmissing-prototypes] 3159 | void ngbe_configure_isb(struct ngbe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3173:6: warning: no previous prototype for 'ngbe_configure_port' [-Wmissing-prototypes] 3173 | void ngbe_configure_port(struct ngbe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3529:6: warning: no previous prototype for 'ngbe_disable_device' [-Wmissing-prototypes] 3529 | void ngbe_disable_device(struct ngbe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3644:5: warning: no previous prototype for 'ngbe_init_shared_code' [-Wmissing-prototypes] 3644 | s32 ngbe_init_shared_code(struct ngbe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:5791:5: warning: no previous prototype for 'ngbe_skb_pad_nonzero' [-Wmissing-prototypes] 5791 | int ngbe_skb_pad_nonzero(struct sk_buff *skb, int pad) | ^~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_main.c: In function 'ngbe_mii_ioctl': drivers/net/ethernet/netswift/ngbe/ngbe_main.c:5989:20: warning: variable 'devad' set but not used [-Wunused-but-set-variable] 5989 | int prtad, devad, ret = 0; | ^~~~~ drivers/net/ethernet/netswift/ngbe/ngbe_main.c:5989:13: warning: variable 'prtad' set but not used [-Wunused-but-set-variable] 5989 | int prtad, devad, ret = 0; | ^~~~~ -- drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:602: warning: Function parameter or member 'pools' not described in 'ngbe_set_rar' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:602: warning: Excess function parameter 'vmdq' description in 'ngbe_set_rar' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:753: warning: Function parameter or member 'vmdq' not described in 'ngbe_add_uc_addr' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:886: warning: Function parameter or member 'mc_addr' not described in 'ngbe_set_mta' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:886: warning: Excess function parameter 'hash_value' description in 'ngbe_set_mta' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:1505: warning: Function parameter or member 'pool' not described in 'ngbe_set_vmdq' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:1505: warning: Excess function parameter 'vmdq' description in 'ngbe_set_vmdq' >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2340: warning: Function parameter or member 'hw' not described in 'fmgr_cmd_op' >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2340: warning: Function parameter or member 'cmd' not described in 'fmgr_cmd_op' >> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2340: warning: Function parameter or member 'cmd_addr' not described in 'fmgr_cmd_op' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2703: warning: bad line: (8.1542E-08)N^3 + (-1.6743E-11)N^4 drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2710: warning: Excess function parameter 'data' description in 'ngbe_get_thermal_sensor_data' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3441: warning: Function parameter or member 'need_restart_AN' not described in 'ngbe_setup_copper_link' drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3441: warning: Excess function parameter 'autoneg_wait_to_complete' description in 'ngbe_setup_copper_link' -- drivers/net/ethernet/netswift/ngbe/ngbe_main.c:226: warning: Function parameter or member 'quiet' not described in 'ngbe_read_reg' >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:398: warning: Function parameter or member 'txqueue' not described in 'ngbe_tx_timeout' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:1608: warning: Function parameter or member 'queues' not described in 'ngbe_irq_enable' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:1608: warning: Function parameter or member 'flush' not described in 'ngbe_irq_enable' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:1997: warning: Function parameter or member 'adapter' not described in 'ngbe_configure_msi_and_legacy' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:2389: warning: Function parameter or member 'adapter' not described in 'ngbe_configure_bridge_mode' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:2856: warning: Function parameter or member 'pool' not described in 'ngbe_write_uc_addr_list' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3684: warning: cannot understand function prototype: 'const u32 def_rss_key[10] = ' >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4267: warning: Function parameter or member 'pdev' not described in '__ngbe_shutdown' >> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4267: warning: Function parameter or member 'enable_wake' not described in '__ngbe_shutdown' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4558: warning: Function parameter or member 'adapter' not described in 'ngbe_check_hang_subtask' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4620: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_update_link_status' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4716: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_link_is_up' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4761: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_link_is_down' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4828: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_flush_tx' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4898: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_subtask' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4927: warning: Function parameter or member 't' not described in 'ngbe_service_timer' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4927: warning: Excess function parameter 'data' description in 'ngbe_service_timer' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6022: warning: Function parameter or member 'dev' not described in 'ngbe_setup_tc' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6022: warning: Excess function parameter 'netdev' description in 'ngbe_setup_tc' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6273: warning: Excess function parameter 'device_id' description in 'ngbe_wol_supported' drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6273: warning: Excess function parameter 'subdev_id' description in 'ngbe_wol_supported' vim +/ngbe_add_uc_addr +752 drivers/net/ethernet/netswift/ngbe/ngbe_hw.c 589 590 /** 591 * ngbe_set_rar - Set Rx address register 592 * @hw: pointer to hardware structure 593 * @index: Receive address register to write 594 * @addr: Address to put into receive address register 595 * @vmdq: VMDq "set" or "pool" index 596 * @enable_addr: set flag that address is active 597 * 598 * Puts an ethernet address into a receive address register. 599 **/ 600 s32 ngbe_set_rar(struct ngbe_hw *hw, u32 index, u8 *addr, u64 pools, 601 u32 enable_addr) > 602 { 603 u32 rar_low, rar_high; 604 u32 rar_entries = hw->mac.num_rar_entries; 605 606 /* Make sure we are using a valid rar index range */ 607 if (index >= rar_entries) { 608 ERROR_REPORT2(NGBE_ERROR_ARGUMENT, 609 "RAR index %d is out of range.\n", index); 610 return NGBE_ERR_INVALID_ARGUMENT; 611 } 612 613 /* select the MAC address */ 614 wr32(hw, NGBE_PSR_MAC_SWC_IDX, index); 615 616 /* setup VMDq pool mapping */ 617 wr32(hw, NGBE_PSR_MAC_SWC_VM, pools & 0xFFFFFFFF); 618 619 /* HW expects these in little endian so we reverse the byte 620 * order from network order (big endian) to little endian 621 * 622 * Some parts put the VMDq setting in the extra RAH bits, 623 * so save everything except the lower 16 bits that hold part 624 * of the address and the address valid bit. 625 */ 626 rar_low = ((u32)addr[5] | 627 ((u32)addr[4] << 8) | 628 ((u32)addr[3] << 16) | 629 ((u32)addr[2] << 24)); 630 rar_high = ((u32)addr[1] | 631 ((u32)addr[0] << 8)); 632 if (enable_addr != 0) 633 rar_high |= NGBE_PSR_MAC_SWC_AD_H_AV; 634 635 wr32(hw, NGBE_PSR_MAC_SWC_AD_L, rar_low); 636 wr32m(hw, NGBE_PSR_MAC_SWC_AD_H, 637 (NGBE_PSR_MAC_SWC_AD_H_AD(~0) | 638 NGBE_PSR_MAC_SWC_AD_H_ADTYPE(~0) | 639 NGBE_PSR_MAC_SWC_AD_H_AV), 640 rar_high); 641 642 return 0; 643 } 644 645 /** 646 * ngbe_clear_rar - Remove Rx address register 647 * @hw: pointer to hardware structure 648 * @index: Receive address register to write 649 * 650 * Clears an ethernet address from a receive address register. 651 **/ 652 s32 ngbe_clear_rar(struct ngbe_hw *hw, u32 index) 653 { 654 u32 rar_entries = hw->mac.num_rar_entries; 655 656 /* Make sure we are using a valid rar index range */ 657 if (index >= rar_entries) { 658 ERROR_REPORT2(NGBE_ERROR_ARGUMENT, 659 "RAR index %d is out of range.\n", index); 660 return NGBE_ERR_INVALID_ARGUMENT; 661 } 662 663 /* Some parts put the VMDq setting in the extra RAH bits, 664 * so save everything except the lower 16 bits that hold part 665 * of the address and the address valid bit. 666 */ 667 wr32(hw, NGBE_PSR_MAC_SWC_IDX, index); 668 669 wr32(hw, NGBE_PSR_MAC_SWC_VM, 0); 670 wr32(hw, NGBE_PSR_MAC_SWC_AD_L, 0); 671 wr32m(hw, NGBE_PSR_MAC_SWC_AD_H, 672 (NGBE_PSR_MAC_SWC_AD_H_AD(~0) | 673 NGBE_PSR_MAC_SWC_AD_H_ADTYPE(~0) | 674 NGBE_PSR_MAC_SWC_AD_H_AV), 675 0); 676 677 return 0; 678 } 679 680 /** 681 * ngbe_init_rx_addrs - Initializes receive address filters. 682 * @hw: pointer to hardware structure 683 * 684 * Places the MAC address in receive address register 0 and clears the rest 685 * of the receive address registers. Clears the multicast table. Assumes 686 * the receiver is in reset when the routine is called. 687 **/ 688 s32 ngbe_init_rx_addrs(struct ngbe_hw *hw) 689 { 690 u32 i; 691 u32 rar_entries = hw->mac.num_rar_entries; 692 u32 psrctl; 693 694 /* If the current mac address is valid, assume it is a software override 695 * to the permanent address. 696 * Otherwise, use the permanent address from the eeprom. 697 */ 698 if (ngbe_validate_mac_addr(hw->mac.addr) == 699 NGBE_ERR_INVALID_MAC_ADDR) { 700 /* Get the MAC address from the RAR0 for later reference */ 701 TCALL(hw, mac.ops.get_mac_addr, hw->mac.addr); 702 703 DEBUGOUT3(" Keeping Current RAR0 Addr =%.2X %.2X %.2X %.2X %.2X %.2X\n", 704 hw->mac.addr[0], hw->mac.addr[1], 705 hw->mac.addr[2], hw->mac.addr[3], 706 hw->mac.addr[4], hw->mac.addr[5]); 707 } else { 708 /* Setup the receive address. */ 709 DEBUGOUT("Overriding MAC Address in RAR[0]\n"); 710 DEBUGOUT3(" New MAC Addr =%.2X %.2X %.2X %.2X %.2X %.2X\n", 711 hw->mac.addr[0], hw->mac.addr[1], 712 hw->mac.addr[2], hw->mac.addr[3], 713 hw->mac.addr[4], hw->mac.addr[5]); 714 715 TCALL(hw, mac.ops.set_rar, 0, hw->mac.addr, 0, 716 NGBE_PSR_MAC_SWC_AD_H_AV); 717 } 718 hw->addr_ctrl.overflow_promisc = 0; 719 720 hw->addr_ctrl.rar_used_count = 1; 721 722 /* Zero out the other receive addresses. */ 723 DEBUGOUT1("Clearing RAR[1-%d]\n", rar_entries - 1); 724 for (i = 1; i < rar_entries; i++) { 725 wr32(hw, NGBE_PSR_MAC_SWC_IDX, i); 726 wr32(hw, NGBE_PSR_MAC_SWC_AD_L, 0); 727 wr32(hw, NGBE_PSR_MAC_SWC_AD_H, 0); 728 } 729 730 /* Clear the MTA */ 731 hw->addr_ctrl.mta_in_use = 0; 732 psrctl = rd32(hw, NGBE_PSR_CTL); 733 psrctl &= ~(NGBE_PSR_CTL_MO | NGBE_PSR_CTL_MFE); 734 psrctl |= hw->mac.mc_filter_type << NGBE_PSR_CTL_MO_SHIFT; 735 wr32(hw, NGBE_PSR_CTL, psrctl); 736 DEBUGOUT(" Clearing MTA\n"); 737 for (i = 0; i < hw->mac.mcft_size; i++) 738 wr32(hw, NGBE_PSR_MC_TBL(i), 0); 739 740 TCALL(hw, mac.ops.init_uta_tables); 741 742 return 0; 743 } 744 745 /** 746 * ngbe_add_uc_addr - Adds a secondary unicast address. 747 * @hw: pointer to hardware structure 748 * @addr: new address 749 * 750 * Adds it to unused receive address register or goes into promiscuous mode. 751 **/ > 752 void ngbe_add_uc_addr(struct ngbe_hw *hw, u8 *addr, u32 vmdq) 753 { 754 u32 rar_entries = hw->mac.num_rar_entries; 755 u32 rar; 756 757 DEBUGOUT6(" UC Addr = %.2X %.2X %.2X %.2X %.2X %.2X\n", 758 addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]); 759 760 /* Place this address in the RAR if there is room, 761 * else put the controller into promiscuous mode 762 */ 763 if (hw->addr_ctrl.rar_used_count < rar_entries) { 764 rar = hw->addr_ctrl.rar_used_count; 765 TCALL(hw, mac.ops.set_rar, rar, addr, vmdq, 766 NGBE_PSR_MAC_SWC_AD_H_AV); 767 DEBUGOUT1("Added a secondary address to RAR[%d]\n", rar); 768 hw->addr_ctrl.rar_used_count++; 769 } else { 770 hw->addr_ctrl.overflow_promisc++; 771 } 772 } 773 774 /** 775 * ngbe_update_uc_addr_list - Updates MAC list of secondary addresses 776 * @hw: pointer to hardware structure 777 * @addr_list: the list of new addresses 778 * @addr_count: number of addresses 779 * @next: iterator function to walk the address list 780 * 781 * The given list replaces any existing list. Clears the secondary addrs from 782 * receive address registers. Uses unused receive address registers for the 783 * first secondary addresses, and falls back to promiscuous mode as needed. 784 * 785 * Drivers using secondary unicast addresses must set user_set_promisc when 786 * manually putting the device into promiscuous mode. 787 **/ 788 s32 ngbe_update_uc_addr_list(struct ngbe_hw *hw, u8 *addr_list, 789 u32 addr_count, ngbe_mc_addr_itr next) 790 { 791 u8 *addr; 792 u32 i; 793 u32 old_promisc_setting = hw->addr_ctrl.overflow_promisc; 794 u32 uc_addr_in_use; 795 u32 vmdq; 796 797 /* Clear accounting of old secondary address list, 798 * don't count RAR[0] 799 */ 800 uc_addr_in_use = hw->addr_ctrl.rar_used_count - 1; 801 hw->addr_ctrl.rar_used_count -= uc_addr_in_use; 802 hw->addr_ctrl.overflow_promisc = 0; 803 804 /* Zero out the other receive addresses */ 805 DEBUGOUT1("Clearing RAR[1-%d]\n", uc_addr_in_use + 1); 806 for (i = 0; i < uc_addr_in_use; i++) { 807 wr32(hw, NGBE_PSR_MAC_SWC_IDX, 1 + i); 808 wr32(hw, NGBE_PSR_MAC_SWC_AD_L, 0); 809 wr32(hw, NGBE_PSR_MAC_SWC_AD_H, 0); 810 } 811 812 /* Add the new addresses */ 813 for (i = 0; i < addr_count; i++) { 814 DEBUGOUT(" Adding the secondary addresses:\n"); 815 addr = next(hw, &addr_list, &vmdq); 816 ngbe_add_uc_addr(hw, addr, vmdq); 817 } 818 819 if (hw->addr_ctrl.overflow_promisc) { 820 /* enable promisc if not already in overflow or set by user */ 821 if (!old_promisc_setting && !hw->addr_ctrl.user_set_promisc) { 822 DEBUGOUT(" Entering address overflow promisc mode\n"); 823 wr32m(hw, NGBE_PSR_CTL, 824 NGBE_PSR_CTL_UPE, NGBE_PSR_CTL_UPE); 825 } 826 } else { 827 /* only disable if set by overflow, not by user */ 828 if (old_promisc_setting && !hw->addr_ctrl.user_set_promisc) { 829 DEBUGOUT(" Leaving address overflow promisc mode\n"); 830 wr32m(hw, NGBE_PSR_CTL, 831 NGBE_PSR_CTL_UPE, 0); 832 } 833 } 834 835 return 0; 836 } 837 838 /** 839 * ngbe_mta_vector - Determines bit-vector in multicast table to set 840 * @hw: pointer to hardware structure 841 * @mc_addr: the multicast address 842 * 843 * Extracts the 12 bits, from a multicast address, to determine which 844 * bit-vector to set in the multicast table. The hardware uses 12 bits, from 845 * incoming rx multicast addresses, to determine the bit-vector to check in 846 * the MTA. Which of the 4 combination, of 12-bits, the hardware uses is set 847 * by the MO field of the MCSTCTRL. The MO field is set during initialization 848 * to mc_filter_type. 849 **/ 850 static s32 ngbe_mta_vector(struct ngbe_hw *hw, u8 *mc_addr) 851 { 852 u32 vector = 0; 853 854 switch (hw->mac.mc_filter_type) { 855 case 0: /* use bits [47:36] of the address */ 856 vector = ((mc_addr[4] >> 4) | (((u16)mc_addr[5]) << 4)); 857 break; 858 case 1: /* use bits [46:35] of the address */ 859 vector = ((mc_addr[4] >> 3) | (((u16)mc_addr[5]) << 5)); 860 break; 861 case 2: /* use bits [45:34] of the address */ 862 vector = ((mc_addr[4] >> 2) | (((u16)mc_addr[5]) << 6)); 863 break; 864 case 3: /* use bits [43:32] of the address */ 865 vector = ((mc_addr[4]) | (((u16)mc_addr[5]) << 8)); 866 break; 867 default: /* Invalid mc_filter_type */ 868 DEBUGOUT("MC filter type param set incorrectly\n"); 869 ASSERT(0); 870 break; 871 } 872 873 /* vector can only be 12-bits or boundary will be exceeded */ 874 vector &= 0xFFF; 875 return vector; 876 } 877 878 /** 879 * ngbe_set_mta - Set bit-vector in multicast table 880 * @hw: pointer to hardware structure 881 * @hash_value: Multicast address hash value 882 * 883 * Sets the bit-vector in the multicast table. 884 **/ > 885 void ngbe_set_mta(struct ngbe_hw *hw, u8 *mc_addr) 886 { 887 u32 vector; 888 u32 vector_bit; 889 u32 vector_reg; 890 891 hw->addr_ctrl.mta_in_use++; 892 893 vector = ngbe_mta_vector(hw, mc_addr); 894 DEBUGOUT1(" bit-vector = 0x%03X\n", vector); 895 896 /* The MTA is a register array of 128 32-bit registers. It is treated 897 * like an array of 4096 bits. We want to set bit 898 * BitArray[vector_value]. So we figure out what register the bit is 899 * in, read it, OR in the new bit, then write back the new value. The 900 * register is determined by the upper 7 bits of the vector value and 901 * the bit within that register are determined by the lower 5 bits of 902 * the value. 903 */ 904 vector_reg = (vector >> 5) & 0x7F; 905 vector_bit = vector & 0x1F; 906 hw->mac.mta_shadow[vector_reg] |= (1 << vector_bit); 907 } 908 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:OLK-6.6 2658/2658] drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c:545:5: error: no previous prototype for function 'ps3_pci_init'
by kernel test robot 06 Aug '25

06 Aug '25
Hi liujie_answer, FYI, the error/warning still remains. tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: 8551213150db5f8eebd27273dae93f6fe258d63a commit: 97a2bb6ece556f3882263ee8df2b77f10c511311 [2658/2658] SCSI: Linkdata: Supports Linkdata HBA/RAID Controllers config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20250806/202508062054.9vtkPxs1-lkp@…) compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508062054.9vtkPxs1-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/202508062054.9vtkPxs1-lkp@intel.com/ All errors (new ones prefixed by >>): In file included from drivers/scsi/linkdata/ps3stor/ps3_ioc_manager.c:5: In file included from include/linux/pci.h:38: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2253: 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/scsi/linkdata/ps3stor/ps3_ioc_manager.c:307:5: error: no previous prototype for function 'ps3_hard_reset_to_ready' [-Werror,-Wmissing-prototypes] 307 | int ps3_hard_reset_to_ready(struct ps3_instance *instance) | ^ drivers/scsi/linkdata/ps3stor/ps3_ioc_manager.c:307:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 307 | int ps3_hard_reset_to_ready(struct ps3_instance *instance) | ^ | static 6 errors generated. -- In file included from drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:5: In file included from include/linux/pci.h:38: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2253: 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/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:876:6: error: no previous prototype for function 'ps3_set_task_manager_busy' [-Werror,-Wmissing-prototypes] 876 | void ps3_set_task_manager_busy(struct ps3_instance *instance, | ^ drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:876:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 876 | void ps3_set_task_manager_busy(struct ps3_instance *instance, | ^ | static >> 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] 1110 | int ps3_wait_for_outstanding_complete(struct ps3_instance *instance) | ^ drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:1110:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 1110 | int ps3_wait_for_outstanding_complete(struct ps3_instance *instance) | ^ | static 7 errors generated. -- In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:14: In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.h:6: In file included from drivers/scsi/linkdata/ps3stor/ps3_irq.h:8: In file included from include/scsi/scsi_host.h:5: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2253: 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/scsi/linkdata/ps3stor/ps3_cmd_complete.c:131:6: error: no previous prototype for function 'ps3_trigger_irq_poll' [-Werror,-Wmissing-prototypes] 131 | void ps3_trigger_irq_poll(struct ps3_irq *irq) | ^ drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:131:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 131 | void ps3_trigger_irq_poll(struct ps3_irq *irq) | ^ | static >> drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:243:5: error: no previous prototype for function 'ps3_resp_status_convert' [-Werror,-Wmissing-prototypes] 243 | int ps3_resp_status_convert(unsigned int resp_status) | ^ drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:243:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 243 | int ps3_resp_status_convert(unsigned int resp_status) | ^ | static 7 errors generated. -- In file included from drivers/scsi/linkdata/ps3stor/ps3_qos.c:7: In file included from include/scsi/scsi_host.h:5: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2253: 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/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 fatal error: too many errors emitted, stopping now [-ferror-limit=] 20 errors generated. -- In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:6: In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.h:7: In file included from include/scsi/scsi_cmnd.h:5: In file included from include/linux/dma-mapping.h:8: In file included from include/linux/device.h:32: In file included from include/linux/device/driver.h:21: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2253: 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/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:85:6: error: no previous prototype for function 'ps3_cmd_stat_content_clear' [-Werror,-Wmissing-prototypes] 85 | void ps3_cmd_stat_content_clear(struct ps3_instance *instance) | ^ drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:85:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 85 | void ps3_cmd_stat_content_clear(struct ps3_instance *instance) | ^ | static >> 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] 403 | void ps3_io_recv_ok_stat_inc(struct ps3_instance *ins, | ^ drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:403:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 403 | void ps3_io_recv_ok_stat_inc(struct ps3_instance *ins, | ^ | static 7 errors generated. .. vim +/ps3_pci_init +545 drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c 544 > 545 int ps3_pci_init(struct pci_dev *pdev, struct ps3_instance *instance) 546 { 547 resource_size_t base_addr = 0; 548 int ret = PS3_SUCCESS; 549 550 ret = pci_enable_device_mem(pdev); 551 if (ret != PS3_SUCCESS) { 552 LOG_ERROR("hno:%u pci id[%u] pci enable failed\n", 553 PS3_HOST(instance), pdev->dev.id); 554 goto l_pci_enable_device_mem_failed; 555 } 556 557 pci_set_master(pdev); 558 559 instance->reg_bar = PS3_REGISTER_BAR_INDEX; 560 ret = (pci_resource_flags(pdev, instance->reg_bar) & IORESOURCE_MEM); 561 if (!ret) { 562 LOG_ERROR("hno:%u Bar %lu isnot IORESOURCE_MEM\n", 563 PS3_HOST(instance), instance->reg_bar); 564 goto l_bar_check_failed; 565 } 566 ret = pci_request_selected_regions(pdev, 1 << instance->reg_bar, 567 "PS3 pci regions"); 568 if (ret != PS3_SUCCESS) { 569 LOG_ERROR("hno:%u IO memory region busy\n", PS3_HOST(instance)); 570 goto l_pci_request_selected_regions_failed; 571 } 572 #if defined(PS3_SUPPORT_PCIE_REPORT) 573 pci_enable_pcie_error_reporting(pdev); 574 #endif 575 if (instance->ioc_adpter->reg_set) { 576 instance->reg_set = 577 (struct Ps3Fifo __iomem *)instance->ioc_adpter->reg_set( 578 pdev, instance->reg_bar); 579 } else { 580 instance->reg_set = (struct Ps3Fifo __iomem *)ioremap( 581 pci_resource_start(pdev, instance->reg_bar), 582 PS3_REGISTER_SET_SIZE); 583 } 584 if (instance->reg_set == NULL) { 585 LOG_ERROR("hno:%u ioremap failed\n", PS3_HOST(instance)); 586 goto l_ioremap_failed; 587 } else { 588 pci_set_drvdata(pdev, instance); 589 } 590 591 ps3_atomic_set(&instance->watchdog_reg_read_fail_count, 0); 592 LOG_INFO( 593 "reg_bar_idx = %lu, bar_base_paddr = 0x%llx, reg_set_vaddr = 0x%p\n", 594 instance->reg_bar, (unsigned long long)base_addr, instance->reg_set); 595 596 return PS3_SUCCESS; 597 l_ioremap_failed: 598 pci_release_selected_regions(instance->pdev, 1 << instance->reg_bar); 599 #if defined(PS3_SUPPORT_PCIE_REPORT) 600 pci_disable_pcie_error_reporting(pdev); 601 #endif 602 l_pci_request_selected_regions_failed: 603 pci_disable_device(instance->pdev); 604 l_bar_check_failed: 605 l_pci_enable_device_mem_failed: 606 return -PS3_FAILED; 607 } 608 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:OLK-6.6 2658/2658] drivers/char/ipmi/ipmi_si_ls2k500.c:92:5: warning: no previous prototype for function 'ipmi_si_sim_setup'
by kernel test robot 06 Aug '25

06 Aug '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: 8551213150db5f8eebd27273dae93f6fe258d63a commit: 4fbeaa84ef36adce930088074f8c088e5dd780c0 [2658/2658] ipmi: add ls2k500 bmc ipmi support. config: loongarch-randconfig-2005-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061418.ItIqDS25-lkp@…) compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project faa4c4c2dc804c31845d8f036345fac00e016f2d) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061418.ItIqDS25-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/202508061418.ItIqDS25-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from drivers/char/ipmi/ipmi_si_ls2k500.c:10: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2174: include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 509 | item]; | ~~~~ include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 516 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 528 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ >> drivers/char/ipmi/ipmi_si_ls2k500.c:92:5: warning: no previous prototype for function 'ipmi_si_sim_setup' [-Wmissing-prototypes] 92 | int ipmi_si_sim_setup(struct si_sm_io *io) | ^ drivers/char/ipmi/ipmi_si_ls2k500.c:92:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 92 | int ipmi_si_sim_setup(struct si_sm_io *io) | ^ | static 5 warnings generated. vim +/ipmi_si_sim_setup +92 drivers/char/ipmi/ipmi_si_ls2k500.c 91 > 92 int ipmi_si_sim_setup(struct si_sm_io *io) 93 { 94 io->inputb = intf_sim_inb; 95 io->outputb = intf_sim_outb; 96 io->io_cleanup = ipmi_ls2k500_cleanup; 97 return 0; 98 } 99 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:openEuler-1.0-LTS 1743/1743] drivers/net/phy/ax88796b.o: warning: objtool: missing symbol for section .init.text
by kernel test robot 06 Aug '25

06 Aug '25
tree: https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS head: 58693b1f5fa8f02b34ab9a02096472232731e864 commit: 56e625aa545a24e8d3fa44b5fbcdedd88e443dcc [1743/1743] net: phy: rename Asix Electronics PHY driver config: x86_64-buildonly-randconfig-2001-20250802 (https://download.01.org/0day-ci/archive/20250806/202508061308.PqhzSJTN-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/20250806/202508061308.PqhzSJTN-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/202508061308.PqhzSJTN-lkp@intel.com/ All warnings (new ones prefixed by >>): >> drivers/net/phy/ax88796b.o: warning: objtool: missing symbol for section .init.text -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:OLK-5.10 3106/3106] drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:432:6: error: no previous prototype for 'sxe_debugfs_entries_init'
by kernel test robot 06 Aug '25

06 Aug '25
Hi liujie_answer, FYI, the error/warning still remains. tree: https://gitee.com/openeuler/kernel.git OLK-5.10 head: a8c621aa031669a6835da1431d9765e3bbbc3621 commit: 8cee206b5558245197158bd20895f95cc28d8468 [3106/3106] Ethernet: Linkdata: Supports Linkdata ethernet Controllers config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20250806/202508061906.p1Ly2hcJ-lkp@…) compiler: gcc-11 (Debian 11.3.0-12) 11.3.0 reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061906.p1Ly2hcJ-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/202508061906.p1Ly2hcJ-lkp@intel.com/ All errors (new ones prefixed by >>): >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_xdp.c:403:6: error: no previous prototype for 'sxe_txrx_ring_enable' [-Werror=missing-prototypes] 403 | void sxe_txrx_ring_enable(struct sxe_adapter *adapter, u32 ring_idx) | ^~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors -- >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:432:6: error: no previous prototype for 'sxe_debugfs_entries_init' [-Werror=missing-prototypes] 432 | void sxe_debugfs_entries_init(struct sxe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:459:6: error: no previous prototype for 'sxe_debugfs_entries_exit' [-Werror=missing-prototypes] 459 | void sxe_debugfs_entries_exit(struct sxe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:465:6: error: no previous prototype for 'sxe_debugfs_init' [-Werror=missing-prototypes] 465 | void sxe_debugfs_init(void) | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:470:6: error: no previous prototype for 'sxe_debugfs_exit' [-Werror=missing-prototypes] 470 | void sxe_debugfs_exit(void) | ^~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors -- >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ethtool.c:2022:5: error: no previous prototype for 'sxe_reg_test' [-Werror=missing-prototypes] 2022 | int sxe_reg_test(struct sxe_adapter *adapter) | ^~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ethtool.c:2644:5: error: no previous prototype for 'sxe_phys_id_set' [-Werror=missing-prototypes] 2644 | int sxe_phys_id_set(struct net_device *netdev, enum ethtool_phys_id_state state) | ^~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ethtool.c: In function 'sxe_get_module_eeprom': >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_ethtool.c:2736:47: error: suggest braces around empty body in an 'if' statement [-Werror=empty-body] 2736 | LOG_ERROR("read sfp failed\n"); | ^ cc1: all warnings being treated as errors -- >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:230:6: error: no previous prototype for 'sxe_hw_no_snoop_disable' [-Werror=missing-prototypes] 230 | void sxe_hw_no_snoop_disable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:262:6: error: no previous prototype for 'sxe_hw_uc_addr_pool_del' [-Werror=missing-prototypes] 262 | void sxe_hw_uc_addr_pool_del(struct sxe_hw *hw, u32 rar_idx, u32 pool_idx) | ^~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:283:5: error: no previous prototype for 'sxe_hw_uc_addr_pool_enable' [-Werror=missing-prototypes] 283 | s32 sxe_hw_uc_addr_pool_enable(struct sxe_hw *hw, u8 rar_idx, u8 pool_idx) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:337:5: error: no previous prototype for 'sxe_hw_nic_reset' [-Werror=missing-prototypes] 337 | s32 sxe_hw_nic_reset(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:367:6: error: no previous prototype for 'sxe_hw_pf_rst_done_set' [-Werror=missing-prototypes] 367 | void sxe_hw_pf_rst_done_set(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:735:5: error: no previous prototype for 'sxe_hw_pending_irq_read_clear' [-Werror=missing-prototypes] 735 | u32 sxe_hw_pending_irq_read_clear(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:740:6: error: no previous prototype for 'sxe_hw_pending_irq_write_clear' [-Werror=missing-prototypes] 740 | void sxe_hw_pending_irq_write_clear(struct sxe_hw *hw, u32 value) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:745:5: error: no previous prototype for 'sxe_hw_irq_cause_get' [-Werror=missing-prototypes] 745 | u32 sxe_hw_irq_cause_get(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:765:6: error: no previous prototype for 'sxe_hw_ring_irq_auto_disable' [-Werror=missing-prototypes] 765 | void sxe_hw_ring_irq_auto_disable(struct sxe_hw *hw, bool is_msix) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> 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] 775 | void sxe_hw_irq_general_reg_set(struct sxe_hw *hw, u32 value) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> 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] 780 | u32 sxe_hw_irq_general_reg_get(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:790:6: error: no previous prototype for 'sxe_hw_event_irq_map' [-Werror=missing-prototypes] 790 | void sxe_hw_event_irq_map(struct sxe_hw *hw, u8 offset, u16 irq_idx) | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:806:6: error: no previous prototype for 'sxe_hw_ring_irq_map' [-Werror=missing-prototypes] 806 | void sxe_hw_ring_irq_map(struct sxe_hw *hw, bool is_tx, u16 reg_idx, | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:823:6: error: no previous prototype for 'sxe_hw_ring_irq_interval_set' [-Werror=missing-prototypes] 823 | void sxe_hw_ring_irq_interval_set(struct sxe_hw *hw, u16 irq_idx, u32 interval) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> 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] 838 | void sxe_hw_event_irq_auto_clear_set(struct sxe_hw *hw, u32 value) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:843:6: error: no previous prototype for 'sxe_hw_specific_irq_disable' [-Werror=missing-prototypes] 843 | void sxe_hw_specific_irq_disable(struct sxe_hw *hw, u32 value) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:848:6: error: no previous prototype for 'sxe_hw_specific_irq_enable' [-Werror=missing-prototypes] 848 | void sxe_hw_specific_irq_enable(struct sxe_hw *hw, u32 value) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:876:6: error: no previous prototype for 'sxe_hw_all_irq_disable' [-Werror=missing-prototypes] 876 | void sxe_hw_all_irq_disable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:994:5: error: no previous prototype for 'sxe_hw_link_speed_get' [-Werror=missing-prototypes] 994 | u32 sxe_hw_link_speed_get(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1014:6: error: no previous prototype for 'sxe_hw_link_speed_set' [-Werror=missing-prototypes] 1014 | void sxe_hw_link_speed_set(struct sxe_hw *hw, u32 speed) | ^~~~~~~~~~~~~~~~~~~~~ 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] 1033 | bool sxe_hw_is_link_state_up(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1055:6: error: no previous prototype for 'sxe_hw_mac_pad_enable' [-Werror=missing-prototypes] 1055 | void sxe_hw_mac_pad_enable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1064:5: error: no previous prototype for 'sxe_hw_fc_enable' [-Werror=missing-prototypes] 1064 | s32 sxe_hw_fc_enable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1135:6: error: no previous prototype for 'sxe_fc_autoneg_localcap_set' [-Werror=missing-prototypes] 1135 | void sxe_fc_autoneg_localcap_set(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1164:5: error: no previous prototype for 'sxe_hw_pfc_enable' [-Werror=missing-prototypes] 1164 | s32 sxe_hw_pfc_enable(struct sxe_hw *hw, u8 tc_idx) | ^~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1256:6: error: no previous prototype for 'sxe_hw_crc_configure' [-Werror=missing-prototypes] 1256 | void sxe_hw_crc_configure(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1264:6: error: no previous prototype for 'sxe_hw_loopback_switch' [-Werror=missing-prototypes] 1264 | void sxe_hw_loopback_switch(struct sxe_hw *hw, bool is_enable) | ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1276:6: error: no previous prototype for 'sxe_hw_mac_txrx_enable' [-Werror=missing-prototypes] 1276 | void sxe_hw_mac_txrx_enable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1285:6: error: no previous prototype for 'sxe_hw_mac_max_frame_set' [-Werror=missing-prototypes] 1285 | void sxe_hw_mac_max_frame_set(struct sxe_hw *hw, u32 max_frame) | ^~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1298:5: error: no previous prototype for 'sxe_hw_mac_max_frame_get' [-Werror=missing-prototypes] 1298 | u32 sxe_hw_mac_max_frame_get(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~ 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] 1330 | void sxe_hw_fc_tc_high_water_mark_set(struct sxe_hw *hw, u8 tc_idx, u32 mark) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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] 1335 | void sxe_hw_fc_tc_low_water_mark_set(struct sxe_hw *hw, u8 tc_idx, u32 mark) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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] 1340 | bool sxe_hw_is_fc_autoneg_disabled(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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] 1345 | void sxe_hw_fc_autoneg_disable_set(struct sxe_hw *hw, bool is_disabled) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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] 1360 | void sxe_hw_fc_requested_mode_set(struct sxe_hw *hw, enum sxe_fc_mode mode) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1388:5: error: no previous prototype for 'sxe_hw_rx_mode_get' [-Werror=missing-prototypes] 1388 | u32 sxe_hw_rx_mode_get(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1393:5: error: no previous prototype for 'sxe_hw_pool_rx_mode_get' [-Werror=missing-prototypes] 1393 | u32 sxe_hw_pool_rx_mode_get(struct sxe_hw *hw, u16 pool_idx) | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1398:6: error: no previous prototype for 'sxe_hw_rx_mode_set' [-Werror=missing-prototypes] 1398 | void sxe_hw_rx_mode_set(struct sxe_hw *hw, u32 filter_ctrl) | ^~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1403:6: error: no previous prototype for 'sxe_hw_pool_rx_mode_set' [-Werror=missing-prototypes] 1403 | void sxe_hw_pool_rx_mode_set(struct sxe_hw *hw, u32 vmolr, u16 pool_idx) | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1408:6: error: no previous prototype for 'sxe_hw_rx_lro_enable' [-Werror=missing-prototypes] 1408 | void sxe_hw_rx_lro_enable(struct sxe_hw *hw, bool is_enable) | ^~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1420:6: error: no previous prototype for 'sxe_hw_rx_nfs_filter_disable' [-Werror=missing-prototypes] 1420 | void sxe_hw_rx_nfs_filter_disable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1428:6: error: no previous prototype for 'sxe_hw_rx_udp_frag_checksum_disable' [-Werror=missing-prototypes] 1428 | void sxe_hw_rx_udp_frag_checksum_disable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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] 1437 | void sxe_hw_fc_mac_addr_set(struct sxe_hw *hw, u8 *mac_addr) | ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1449:5: error: no previous prototype for 'sxe_hw_uc_addr_add' [-Werror=missing-prototypes] 1449 | s32 sxe_hw_uc_addr_add(struct sxe_hw *hw, u32 rar_idx, u8 *addr, u32 pool_idx) | ^~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1484:5: error: no previous prototype for 'sxe_hw_uc_addr_del' [-Werror=missing-prototypes] 1484 | s32 sxe_hw_uc_addr_del(struct sxe_hw *hw, u32 index) | ^~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1510:6: error: no previous prototype for 'sxe_hw_mta_hash_table_set' [-Werror=missing-prototypes] 1510 | void sxe_hw_mta_hash_table_set(struct sxe_hw *hw, u8 index, u32 value) | ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1515:6: error: no previous prototype for 'sxe_hw_mta_hash_table_update' [-Werror=missing-prototypes] 1515 | void sxe_hw_mta_hash_table_update(struct sxe_hw *hw, u8 reg_idx, u8 bit_idx) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1525:5: error: no previous prototype for 'sxe_hw_mc_filter_get' [-Werror=missing-prototypes] 1525 | u32 sxe_hw_mc_filter_get(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1530:6: error: no previous prototype for 'sxe_hw_mc_filter_enable' [-Werror=missing-prototypes] 1530 | void sxe_hw_mc_filter_enable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1554:6: error: no previous prototype for 'sxe_hw_uc_addr_clear' [-Werror=missing-prototypes] 1554 | void sxe_hw_uc_addr_clear(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1587:6: error: no previous prototype for 'sxe_hw_vt_ctrl_cfg' [-Werror=missing-prototypes] 1587 | void sxe_hw_vt_ctrl_cfg(struct sxe_hw *hw, u8 default_pool) | ^~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1601:6: error: no previous prototype for 'sxe_hw_vt_disable' [-Werror=missing-prototypes] 1601 | void sxe_hw_vt_disable(struct sxe_hw *hw) | ^~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_hw.c:1675:5: error: no previous prototype for 'sxe_hw_vlan_pool_filter_read' [-Werror=missing-prototypes] 1675 | u32 sxe_hw_vlan_pool_filter_read(struct sxe_hw *hw, u16 reg_index) -- >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_irq.c:136:5: error: no previous prototype for 'sxe_msi_irq_init' [-Werror=missing-prototypes] 136 | int sxe_msi_irq_init(struct sxe_adapter *adapter) | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_irq.c:182:6: error: no previous prototype for 'sxe_disable_dcb' [-Werror=missing-prototypes] 182 | void sxe_disable_dcb(struct sxe_adapter *adapter) | ^~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_irq.c:212:6: error: no previous prototype for 'sxe_disable_rss' [-Werror=missing-prototypes] 212 | void sxe_disable_rss(struct sxe_adapter *adapter) | ^~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_irq.c:729:6: error: no previous prototype for 'sxe_lsc_irq_handler' [-Werror=missing-prototypes] 729 | void sxe_lsc_irq_handler(struct sxe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_irq.c:745:6: error: no previous prototype for 'sxe_mailbox_irq_handler' [-Werror=missing-prototypes] 745 | void sxe_mailbox_irq_handler(struct sxe_adapter *adapter) | ^~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors -- >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_main.c:70:6: error: no previous prototype for 'sxe_allow_inval_mac' [-Werror=missing-prototypes] 70 | bool sxe_allow_inval_mac(void) | ^~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors -- >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_phy.c:733:5: error: no previous prototype for 'sxe_multispeed_sfp_link_configure' [-Werror=missing-prototypes] 733 | s32 sxe_multispeed_sfp_link_configure(struct sxe_adapter *adapter, u32 speed) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors -- >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_rx_proc.c:1431:6: error: no previous prototype for 'sxe_headers_cleanup' [-Werror=missing-prototypes] 1431 | bool sxe_headers_cleanup(struct sxe_ring *rx_ring, | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_rx_proc.c:1569:6: error: no previous prototype for 'sxe_rx_buffer_page_offset_update' [-Werror=missing-prototypes] 1569 | void sxe_rx_buffer_page_offset_update(struct sxe_ring *rx_ring, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors -- drivers/net/ethernet/linkdata/sxe/sxepf/sxe_sriov.c: In function 'sxe_vf_uc_addr_del': >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_sriov.c:766:13: error: variable 'ret' set but not used [-Werror=unused-but-set-variable] 766 | s32 ret; | ^~~ drivers/net/ethernet/linkdata/sxe/sxepf/sxe_sriov.c: At top level: >> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_sriov.c:1552:6: error: no previous prototype for 'sxe_set_vf_link_enable' [-Werror=missing-prototypes] 1552 | void sxe_set_vf_link_enable(struct sxe_adapter *adapter, s32 vf_idx, s32 state) | ^~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors -- >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:160:6: error: no previous prototype for 'sxevf_hw_stop' [-Werror=missing-prototypes] 160 | void sxevf_hw_stop(struct sxevf_hw *hw) | ^~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:187:6: error: no previous prototype for 'sxevf_msg_write' [-Werror=missing-prototypes] 187 | void sxevf_msg_write(struct sxevf_hw *hw, u8 index, u32 msg) | ^~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:196:5: error: no previous prototype for 'sxevf_msg_read' [-Werror=missing-prototypes] 196 | u32 sxevf_msg_read(struct sxevf_hw *hw, u8 index) | ^~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:206:5: error: no previous prototype for 'sxevf_mailbox_read' [-Werror=missing-prototypes] 206 | u32 sxevf_mailbox_read(struct sxevf_hw *hw) | ^~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:211:6: error: no previous prototype for 'sxevf_mailbox_write' [-Werror=missing-prototypes] 211 | void sxevf_mailbox_write(struct sxevf_hw *hw, u32 value) | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:216:6: error: no previous prototype for 'sxevf_pf_req_irq_trigger' [-Werror=missing-prototypes] 216 | void sxevf_pf_req_irq_trigger(struct sxevf_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:221:6: error: no previous prototype for 'sxevf_pf_ack_irq_trigger' [-Werror=missing-prototypes] 221 | void sxevf_pf_ack_irq_trigger(struct sxevf_hw *hw) | ^~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:226:6: error: no previous prototype for 'sxevf_event_irq_map' [-Werror=missing-prototypes] 226 | void sxevf_event_irq_map(struct sxevf_hw *hw, u16 vector) | ^~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:240:6: error: no previous prototype for 'sxevf_specific_irq_enable' [-Werror=missing-prototypes] 240 | void sxevf_specific_irq_enable(struct sxevf_hw *hw, u32 value) | ^~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:245:6: error: no previous prototype for 'sxevf_irq_enable' [-Werror=missing-prototypes] 245 | void sxevf_irq_enable(struct sxevf_hw *hw, u32 mask) | ^~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:251:6: error: no previous prototype for 'sxevf_irq_disable' [-Werror=missing-prototypes] 251 | void sxevf_irq_disable(struct sxevf_hw *hw) | ^~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:259:6: error: no previous prototype for 'sxevf_hw_ring_irq_map' [-Werror=missing-prototypes] 259 | void sxevf_hw_ring_irq_map(struct sxevf_hw *hw, bool is_tx, u16 hw_ring_idx, | ^~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:276:6: error: no previous prototype for 'sxevf_ring_irq_interval_set' [-Werror=missing-prototypes] 276 | void sxevf_ring_irq_interval_set(struct sxevf_hw *hw, u16 irq_idx, u32 interval) | ^~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:313:6: error: no previous prototype for 'sxevf_hw_reset' [-Werror=missing-prototypes] 313 | void sxevf_hw_reset(struct sxevf_hw *hw) | ^~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:324:5: error: no previous prototype for 'sxevf_link_state_get' [-Werror=missing-prototypes] 324 | u32 sxevf_link_state_get(struct sxevf_hw *hw) | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:539:6: error: no previous prototype for 'sxevf_tx_ring_switch' [-Werror=missing-prototypes] 539 | void sxevf_tx_ring_switch(struct sxevf_hw *hw, u8 reg_idx, bool is_on) | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:594:6: error: no previous prototype for 'sxevf_rx_ring_switch' [-Werror=missing-prototypes] 594 | void sxevf_rx_ring_switch(struct sxevf_hw *hw, u8 reg_idx, bool is_on) | ^~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:626:6: error: no previous prototype for 'sxevf_rx_ring_desc_configure' [-Werror=missing-prototypes] 626 | void sxevf_rx_ring_desc_configure(struct sxevf_hw *hw, u32 desc_mem_len, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:640:6: error: no previous prototype for 'sxevf_rx_rcv_ctl_configure' [-Werror=missing-prototypes] 640 | void sxevf_rx_rcv_ctl_configure(struct sxevf_hw *hw, u8 reg_idx, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ >> drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:697:6: error: no previous prototype for 'sxevf_32bit_counter_update' [-Werror=missing-prototypes] 697 | void sxevf_32bit_counter_update(struct sxevf_hw *hw, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:710:6: error: no previous prototype for 'sxevf_36bit_counter_update' [-Werror=missing-prototypes] 710 | void sxevf_36bit_counter_update(struct sxevf_hw *hw, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:726:6: error: no previous prototype for 'sxevf_packet_stats_get' [-Werror=missing-prototypes] 726 | void sxevf_packet_stats_get(struct sxevf_hw *hw, struct sxevf_hw_stats *stats) | ^~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/linkdata/sxevf/sxevf/sxevf_hw.c:740:6: error: no previous prototype for 'sxevf_stats_init_value_get' [-Werror=missing-prototypes] 740 | void sxevf_stats_init_value_get(struct sxevf_hw *hw, | ^~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors .. vim +/sxe_debugfs_entries_init +432 drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c 431 > 432 void sxe_debugfs_entries_init(struct sxe_adapter *adapter) 433 { 434 struct dentry *dir; 435 const char *name = pci_name(adapter->pdev); 436 437 adapter->debugfs_entries = debugfs_create_dir(name, sxe_debugfs_root); 438 dir = debugfs_create_file("reg_ops", 0600, adapter->debugfs_entries, 439 adapter, &sxe_debugfs_reg_ops_fops); 440 if (!dir || dir == ERR_PTR(-ENODEV)) 441 LOG_INFO_BDF("debugfs:reg_ops file create failed\n"); 442 443 dir = debugfs_create_file("netdev_ops", 0600, adapter->debugfs_entries, 444 adapter, &sxe_debugfs_netdev_ops_fops); 445 if (!dir || dir == ERR_PTR(-ENODEV)) 446 LOG_INFO_BDF("debugfs:netdev_ops file create failed\n"); 447 448 dir = debugfs_create_file("hw_stats", 0400, adapter->debugfs_entries, 449 adapter, &sxe_debugfs_hw_stats_fops); 450 if (!dir || dir == ERR_PTR(-ENODEV)) 451 LOG_INFO_BDF("debugfs:hw_stats file create failed\n"); 452 453 dir = debugfs_create_file("sfp_info", 0400, adapter->debugfs_entries, 454 adapter, &sxe_debugfs_sfp_info_fops); 455 if (!dir || dir == ERR_PTR(-ENODEV)) 456 LOG_INFO_BDF("debugfs:sfp_info file create failed\n"); 457 } 458 > 459 void sxe_debugfs_entries_exit(struct sxe_adapter *adapter) 460 { 461 debugfs_remove_recursive(adapter->debugfs_entries); 462 adapter->debugfs_entries = NULL; 463 } 464 > 465 void sxe_debugfs_init(void) 466 { 467 sxe_debugfs_root = debugfs_create_dir(SXE_DRV_NAME, NULL); 468 } 469 > 470 void sxe_debugfs_exit(void) -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[openeuler:OLK-6.6 2658/2658] drivers/video/fbdev/ls2k500sfb.c:254:13: warning: no previous prototype for function 'ls2k500sfb_interrupt'
by kernel test robot 06 Aug '25

06 Aug '25
tree: https://gitee.com/openeuler/kernel.git OLK-6.6 head: 8551213150db5f8eebd27273dae93f6fe258d63a commit: 8248d42b7c5f4338a54f26d8efebec8614b43466 [2658/2658] fbdev: add ls2k500sfb driver for ls2k500 bmc. config: loongarch-randconfig-2005-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061235.qxpfqpxl-lkp@…) compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project faa4c4c2dc804c31845d8f036345fac00e016f2d) reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061235.qxpfqpxl-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/202508061235.qxpfqpxl-lkp@intel.com/ All warnings (new ones prefixed by >>): In file included from drivers/video/fbdev/ls2k500sfb.c:12: In file included from include/linux/module.h:19: In file included from include/linux/elf.h:6: In file included from arch/loongarch/include/asm/elf.h:13: In file included from arch/loongarch/include/asm/vdso.h:10: In file included from include/linux/mm.h:2174: include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 509 | item]; | ~~~~ include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 516 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion] 522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_" | ~~~~~~~~~~~ ^ ~~~ include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion] 527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~ ^ 528 | NR_VM_NUMA_EVENT_ITEMS + | ~~~~~~~~~~~~~~~~~~~~~~ >> drivers/video/fbdev/ls2k500sfb.c:254:13: warning: no previous prototype for function 'ls2k500sfb_interrupt' [-Wmissing-prototypes] 254 | irqreturn_t ls2k500sfb_interrupt(int irq, void *arg) | ^ drivers/video/fbdev/ls2k500sfb.c:254:1: note: declare 'static' if the function is not intended to be used outside of this translation unit 254 | irqreturn_t ls2k500sfb_interrupt(int irq, void *arg) | ^ | static 5 warnings generated. vim +/ls2k500sfb_interrupt +254 drivers/video/fbdev/ls2k500sfb.c 253 > 254 irqreturn_t ls2k500sfb_interrupt(int irq, void *arg) 255 { 256 struct ls2k500sfb_struct *priv = arg; 257 struct pci_dev *pdev = priv->dev; 258 259 if (irq == pdev->irq) 260 pr_info("ls2k500sfb pcie interrupt\n"); 261 else 262 pr_info("ls2k500sfb gpio interrupt\n"); 263 if (system_state != SYSTEM_RUNNING) 264 return IRQ_HANDLED; 265 266 if (!priv->running) { 267 if (!resetdelay || time_after(jiffies, priv->reset_time + resetdelay * HZ)) { 268 priv->running = 1; 269 queue_work(priv->wq, &priv->work); 270 } 271 priv->reset_time = jiffies; 272 } 273 return IRQ_HANDLED; 274 } 275 -- 0-DAY CI Kernel Test Service https://github.com/intel/lkp-tests/wiki
1 0
0 0
[PATCH OLK-6.6 V1] sched: More flexible use of CPU quota when CPU is idle
by Cheng Yu 06 Aug '25

06 Aug '25
From: Zheng Zucheng <zhengzucheng(a)huawei.com> hulk inclusion category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/ICE7WC -------------------------------- This feature allows users to use CPU quota more flexibly when CPU is idle and it will cause the CPU quota to be exceeded. So, it cannot be used in scenarios where there are strict restrictions on the use of the CPU quota, such as some commercial scenarios that charge based on the use of CPU quota. Signed-off-by: Zheng Zucheng <zhengzucheng(a)huawei.com> Signed-off-by: Liao Chang <liaochang1(a)huawei.com> Signed-off-by: Cheng Yu <serein.chengyu(a)huawei.com> --- arch/arm64/Kconfig | 1 + arch/arm64/configs/openeuler_defconfig | 1 + arch/arm64/kernel/idle.c | 35 +++++- init/Kconfig | 18 +++ kernel/sched/core.c | 32 +++++ kernel/sched/fair.c | 168 +++++++++++++++++++++++-- kernel/sched/features.h | 4 + kernel/sched/idle.c | 7 ++ kernel/sched/sched.h | 15 +++ 9 files changed, 272 insertions(+), 9 deletions(-) diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 5422d1502fd6..4c44afb9cc74 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -105,6 +105,7 @@ config ARM64 select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_SUPPORTS_INT128 if CC_HAS_INT128 select ARCH_SUPPORTS_NUMA_BALANCING + select ARCH_SUPPORTS_SCHED_SOFT_QUOTA select ARCH_SUPPORTS_PAGE_TABLE_CHECK select ARCH_SUPPORTS_PER_VMA_LOCK select ARCH_WANT_BATCHED_UNMAP_TLB_FLUSH diff --git a/arch/arm64/configs/openeuler_defconfig b/arch/arm64/configs/openeuler_defconfig index 3cfff0701479..eeb4d8210e2f 100644 --- a/arch/arm64/configs/openeuler_defconfig +++ b/arch/arm64/configs/openeuler_defconfig @@ -209,6 +209,7 @@ CONFIG_USER_NS=y CONFIG_PID_NS=y CONFIG_NET_NS=y CONFIG_SCHED_STEAL=y +CONFIG_SCHED_SOFT_QUOTA=y CONFIG_CHECKPOINT_RESTORE=y CONFIG_SCHED_AUTOGROUP=y CONFIG_RELAY=y diff --git a/arch/arm64/kernel/idle.c b/arch/arm64/kernel/idle.c index 46a40b693da8..31d9bfbe10b8 100644 --- a/arch/arm64/kernel/idle.c +++ b/arch/arm64/kernel/idle.c @@ -45,6 +45,26 @@ void noinstr arch_cpu_idle(void) } EXPORT_SYMBOL_GPL(arch_cpu_idle); +#ifdef CONFIG_SCHED_SOFT_QUOTA +static DEFINE_PER_CPU(int, sibling_idle) = 1; + +int is_sibling_idle(void) +{ + return this_cpu_read(sibling_idle); +} + +static void smt_measurement_begin(void) +{ +} + +static void smt_measurement_done(void) +{ +} +#else +static inline void smt_measurement_begin(void) { } +static inline void smt_measurement_done(void) { } +#endif + #ifdef CONFIG_ACTLR_XCALL_XINT struct arm_cpuidle_xcall_xint_context { unsigned long actlr_el1; @@ -57,6 +77,8 @@ void arch_cpu_idle_enter(void) { struct arm_cpuidle_xcall_xint_context *context; + smt_measurement_begin(); + if (!system_uses_xcall_xint()) return; @@ -71,6 +93,8 @@ void arch_cpu_idle_exit(void) { struct arm_cpuidle_xcall_xint_context *context; + smt_measurement_done(); + if (!system_uses_xcall_xint()) return; @@ -81,6 +105,13 @@ void arch_cpu_idle_exit(void) put_cpu_var(contexts); } #else -void arch_cpu_idle_enter(void) {} -void arch_cpu_idle_exit(void) {} +void arch_cpu_idle_enter(void) +{ + smt_measurement_begin(); +} + +void arch_cpu_idle_exit(void) +{ + smt_measurement_done(); +} #endif diff --git a/init/Kconfig b/init/Kconfig index c8bd58347a87..9310fcda2988 100644 --- a/init/Kconfig +++ b/init/Kconfig @@ -1174,6 +1174,24 @@ config SCHED_SOFT_DOMAIN If in doubt, say N. +# +# For architectures that want to enable the support for SCHED_SOFT_QUOTA +# +config ARCH_SUPPORTS_SCHED_SOFT_QUOTA + bool + +config SCHED_SOFT_QUOTA + bool "More flexible use of CPU quota" + depends on ARCH_SUPPORTS_SCHED_SOFT_QUOTA + depends on CFS_BANDWIDTH + default n + help + This option allows users to use CPU quota more flexibly when CPU + is idle. It is better for users to have some understanding of + CFS_BANDWIDTH. It cannot be used in scenarios where there are strict + restrictions on the use of the CPU quota, such as some commercial + scenarios that charge based on the use of CPU quota. + config SCHED_MM_CID def_bool n depends on SMP && RSEQ diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 1b497efc763b..6bc9897569a9 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -11682,6 +11682,30 @@ static inline s64 cpu_qos_read(struct cgroup_subsys_state *css, } #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA +static int cpu_soft_quota_write(struct cgroup_subsys_state *css, + struct cftype *cftype, s64 soft_quota) +{ + struct task_group *tg = css_tg(css); + + if (soft_quota != 1 && soft_quota != 0) + return -EINVAL; + + if (tg->soft_quota == soft_quota) + return 0; + + tg->soft_quota = soft_quota; + + return 0; +} + +static inline s64 cpu_soft_quota_read(struct cgroup_subsys_state *css, + struct cftype *cft) +{ + return css_tg(css)->soft_quota; +} +#endif + #ifdef CONFIG_BPF_SCHED void sched_settag(struct task_struct *tsk, s64 tag) { @@ -11928,6 +11952,14 @@ static struct cftype cpu_legacy_files[] = { .write_s64 = cpu_qos_write, }, #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA + { + .name = "soft_quota", + .flags = CFTYPE_NOT_ON_ROOT, + .read_s64 = cpu_soft_quota_read, + .write_s64 = cpu_soft_quota_write, + }, +#endif #ifdef CONFIG_BPF_SCHED { .name = "tag", diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 71661d6c5b54..2e2ad083aec4 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -186,6 +186,10 @@ unsigned int sysctl_qos_level_weights[5] = { static long qos_reweight(long shares, struct task_group *tg); #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA +static DEFINE_PER_CPU_SHARED_ALIGNED(struct list_head, soft_quota_throttled_cfs_rq); +#endif + #ifdef CONFIG_CFS_BANDWIDTH /* * Amount of runtime to allocate from global (tg) to local (per-cfs_rq) pool @@ -219,6 +223,10 @@ extern unsigned int sysctl_smart_grid_strategy_ctrl; static int sysctl_affinity_adjust_delay_ms = 5000; #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA +unsigned int sysctl_soft_runtime_ratio = 20; +#endif + #ifdef CONFIG_SYSCTL static struct ctl_table sched_fair_sysctls[] = { { @@ -318,6 +326,17 @@ static struct ctl_table sched_fair_sysctls[] = { .extra1 = SYSCTL_ZERO, .extra2 = &hundred_thousand, }, +#endif +#ifdef CONFIG_SCHED_SOFT_QUOTA + { + .procname = "sched_soft_runtime_ratio", + .data = &sysctl_soft_runtime_ratio, + .maxlen = sizeof(sysctl_soft_runtime_ratio), + .mode = 0644, + .proc_handler = proc_dointvec_minmax, + .extra1 = SYSCTL_ONE, + .extra2 = SYSCTL_ONE_HUNDRED, + }, #endif {} }; @@ -588,10 +607,11 @@ static inline struct sched_entity *parent_entity(const struct sched_entity *se) return se->parent; } -static void +static bool find_matching_se(struct sched_entity **se, struct sched_entity **pse) { int se_depth, pse_depth; + bool ret = false; /* * preemption test can be made between sibling entities who are in the @@ -605,6 +625,10 @@ find_matching_se(struct sched_entity **se, struct sched_entity **pse) pse_depth = (*pse)->depth; while (se_depth > pse_depth) { +#ifdef CONFIG_SCHED_SOFT_QUOTA + if (!ret && cfs_rq_of(*se)->soft_quota_enable == 1) + ret = true; +#endif se_depth--; *se = parent_entity(*se); } @@ -615,9 +639,15 @@ find_matching_se(struct sched_entity **se, struct sched_entity **pse) } while (!is_same_group(*se, *pse)) { +#ifdef CONFIG_SCHED_SOFT_QUOTA + if (!ret && cfs_rq_of(*se)->soft_quota_enable == 1) + ret = true; +#endif *se = parent_entity(*se); *pse = parent_entity(*pse); } + + return ret; } static int tg_is_idle(struct task_group *tg) @@ -663,9 +693,10 @@ static inline struct sched_entity *parent_entity(struct sched_entity *se) return NULL; } -static inline void +static inline bool find_matching_se(struct sched_entity **se, struct sched_entity **pse) { + return false; } static inline int tg_is_idle(struct task_group *tg) @@ -6026,6 +6057,14 @@ static bool throttle_cfs_rq(struct cfs_rq *cfs_rq) SCHED_WARN_ON(cfs_rq->throttled_clock); if (cfs_rq->nr_running) cfs_rq->throttled_clock = rq_clock(rq); + +#ifdef CONFIG_SCHED_SOFT_QUOTA + if (cfs_rq->tg->soft_quota == 1) { + list_add(&cfs_rq->soft_quota_throttled_list, + &per_cpu(soft_quota_throttled_cfs_rq, cpu_of(rq))); + } +#endif + return true; } @@ -6042,6 +6081,10 @@ void unthrottle_cfs_rq(struct cfs_rq *cfs_rq) se = cfs_rq->tg->se[cpu_of(rq)]; +#ifdef CONFIG_SCHED_SOFT_QUOTA + list_del_init(&cfs_rq->soft_quota_throttled_list); +#endif + #ifdef CONFIG_QOS_SCHED /* * if this cfs_rq throttled by qos, not need unthrottle it. @@ -6240,6 +6283,16 @@ static bool distribute_cfs_runtime(struct cfs_bandwidth *cfs_b) } rq_lock_irqsave(rq, &rf); + +#ifdef CONFIG_SCHED_SOFT_QUOTA + if (cfs_rq->soft_quota_enable == 1) { + if (cfs_rq->runtime_remaining > 0) + cfs_rq->runtime_remaining = 0; + + cfs_rq->soft_quota_enable = 0; + } +#endif + if (!cfs_rq_throttled(cfs_rq)) goto next; @@ -6302,6 +6355,17 @@ static bool distribute_cfs_runtime(struct cfs_bandwidth *cfs_b) return throttled; } +#ifdef CONFIG_SCHED_SOFT_QUOTA +static inline void init_tg_sum_soft_runtime(struct cfs_bandwidth *cfs_b) +{ + unsigned int cpu; + struct task_group *tg = container_of(cfs_b, struct task_group, cfs_bandwidth); + + for_each_possible_cpu(cpu) + tg->cfs_rq[cpu]->sum_soft_runtime = 0; +} +#endif + /* * Responsible for refilling a task_group's bandwidth and unthrottling its * cfs_rqs as appropriate. If there has been no activity within the last @@ -6319,6 +6383,10 @@ static int do_sched_cfs_period_timer(struct cfs_bandwidth *cfs_b, int overrun, u throttled = !list_empty(&cfs_b->throttled_cfs_rq); cfs_b->nr_periods += overrun; +#ifdef CONFIG_SCHED_SOFT_QUOTA + init_tg_sum_soft_runtime(cfs_b); +#endif + /* Refill extra burst quota even if cfs_b->idle */ __refill_cfs_bandwidth_runtime(cfs_b); @@ -6633,6 +6701,9 @@ static void init_cfs_rq_runtime(struct cfs_rq *cfs_rq) #ifdef CONFIG_QOS_SCHED INIT_LIST_HEAD(&cfs_rq->qos_throttled_list); #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA + INIT_LIST_HEAD(&cfs_rq->soft_quota_throttled_list); +#endif } void start_cfs_bandwidth(struct cfs_bandwidth *cfs_b) @@ -9440,6 +9511,7 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ struct cfs_rq *cfs_rq = task_cfs_rq(curr); int next_buddy_marked = 0; int cse_is_idle, pse_is_idle; + bool ret = 0; if (unlikely(se == pse)) return; @@ -9474,7 +9546,12 @@ static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_ if (!sched_feat(WAKEUP_PREEMPTION)) return; - find_matching_se(&se, &pse); + ret = find_matching_se(&se, &pse); +#ifdef CONFIG_SCHED_SOFT_QUOTA + if (ret) + goto preempt; +#endif + WARN_ON_ONCE(!pse); cse_is_idle = se_is_idle(se); @@ -14959,6 +15036,9 @@ void unregister_fair_sched_group(struct task_group *tg) unsigned long flags; struct rq *rq; int cpu; +#ifdef CONFIG_SCHED_SOFT_QUOTA + struct cfs_rq *cfs_rq; +#endif destroy_cfs_bandwidth(tg_cfs_bandwidth(tg)); destroy_auto_affinity(tg); @@ -14968,10 +15048,16 @@ void unregister_fair_sched_group(struct task_group *tg) if (tg->se[cpu]) remove_entity_load_avg(tg->se[cpu]); - #ifdef CONFIG_QOS_SCHED - if (tg->cfs_rq && tg->cfs_rq[cpu]) - unthrottle_qos_sched_group(tg->cfs_rq[cpu]); - #endif +#ifdef CONFIG_QOS_SCHED + if (tg->cfs_rq && tg->cfs_rq[cpu]) + unthrottle_qos_sched_group(tg->cfs_rq[cpu]); +#endif +#ifdef CONFIG_SCHED_SOFT_QUOTA + if (tg->cfs_rq && tg->cfs_rq[cpu]) { + cfs_rq = tg->cfs_rq[cpu]; + list_del_init(&cfs_rq->soft_quota_throttled_list); + } +#endif /* * Only empty task groups can be destroyed; so we can speculatively @@ -15286,6 +15372,11 @@ __init void init_sched_fair_class(void) INIT_LIST_HEAD(&per_cpu(qos_throttled_cfs_rq, i)); #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA + for_each_possible_cpu(i) + INIT_LIST_HEAD(&per_cpu(soft_quota_throttled_cfs_rq, i)); +#endif + open_softirq(SCHED_SOFTIRQ, run_rebalance_domains); #ifdef CONFIG_NO_HZ_COMMON @@ -15296,3 +15387,66 @@ __init void init_sched_fair_class(void) #endif /* SMP */ } + +#ifdef CONFIG_SCHED_SOFT_QUOTA +static bool check_soft_runtime(struct task_group *tg, int slice) +{ + int cpu; + u64 sum_soft_runtime = slice; + struct cfs_bandwidth *cfs_b = &tg->cfs_bandwidth; + + if (cfs_b->quota == RUNTIME_INF) + return true; + + for_each_possible_cpu(cpu) + sum_soft_runtime += tg->cfs_rq[cpu]->sum_soft_runtime; + + return sum_soft_runtime < sysctl_soft_runtime_ratio * cfs_b->quota / 100; +} + +int __weak is_sibling_idle(void) +{ + return 0; +} + +bool unthrottle_cfs_rq_soft_quota(struct rq *rq) +{ + int max_cnt = 0; + bool ret = false; + struct cfs_rq *cfs_rq, *tmp_rq; + struct cfs_bandwidth *cfs_b; + int slice = sched_cfs_bandwidth_slice(); + + if (!is_sibling_idle()) + return ret; + + list_for_each_entry_safe(cfs_rq, tmp_rq, &per_cpu(soft_quota_throttled_cfs_rq, cpu_of(rq)), + soft_quota_throttled_list) { + if (max_cnt++ > 20) + break; + + if (cfs_rq->throttled) { + cfs_b = tg_cfs_bandwidth(cfs_rq->tg); + raw_spin_lock(&cfs_b->lock); + + if (!check_soft_runtime(cfs_rq->tg, slice)) { + raw_spin_unlock(&cfs_b->lock); + continue; + } + + raw_spin_unlock(&cfs_b->lock); + + if (cfs_rq->runtime_remaining + slice > 0) { + cfs_rq->runtime_remaining += slice; + cfs_rq->sum_soft_runtime += slice; + cfs_rq->soft_quota_enable = 1; + unthrottle_cfs_rq(cfs_rq); + ret = true; + break; + } + } + } + + return ret; +} +#endif diff --git a/kernel/sched/features.h b/kernel/sched/features.h index ea7ba74810e3..d587b7a12629 100644 --- a/kernel/sched/features.h +++ b/kernel/sched/features.h @@ -110,3 +110,7 @@ SCHED_FEAT(DA_UTIL_TASKGROUP, true) #ifdef CONFIG_SCHED_SOFT_DOMAIN SCHED_FEAT(SOFT_DOMAIN, false) #endif + +#ifdef CONFIG_SCHED_SOFT_QUOTA +SCHED_FEAT(SOFT_QUOTA, false) +#endif diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 5007b25c5bc6..3518a1a28e8c 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -427,6 +427,13 @@ struct task_struct *pick_next_task_idle(struct rq *rq) { struct task_struct *next = rq->idle; +#ifdef CONFIG_SCHED_SOFT_QUOTA + if (sched_feat(SOFT_QUOTA)) { + if (unthrottle_cfs_rq_soft_quota(rq) && rq->cfs.nr_running) + return pick_next_task_fair(rq, NULL, NULL); + } +#endif + set_next_task_idle(rq, next, true); return next; diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index f6a3f93d1f75..0e21ad151ec9 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -484,7 +484,11 @@ struct task_group { #else KABI_RESERVE(1) #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA + KABI_USE(2, u64 soft_quota) +#else KABI_RESERVE(2) +#endif KABI_RESERVE(3) KABI_RESERVE(4) KABI_RESERVE(5) @@ -578,6 +582,10 @@ static inline void tg_update_affinity_domains(int cpu, int online) {} static inline void offline_auto_affinity(struct task_group *tg) { } #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA +extern bool unthrottle_cfs_rq_soft_quota(struct rq *rq); +#endif + #ifdef CONFIG_FAIR_GROUP_SCHED extern int sched_group_set_shares(struct task_group *tg, unsigned long shares); @@ -769,10 +777,17 @@ struct cfs_rq { unsigned long qos_idle_h_nr_running_padding; }; #endif +#ifdef CONFIG_SCHED_SOFT_QUOTA + KABI_USE(1, u64 soft_quota_enable) + KABI_USE(2, u64 sum_soft_runtime) + KABI_REPLACE(_KABI_RESERVE(3); _KABI_RESERVE(4), + struct list_head soft_quota_throttled_list) +#else KABI_RESERVE(1) KABI_RESERVE(2) KABI_RESERVE(3) KABI_RESERVE(4) +#endif KABI_RESERVE(5) KABI_RESERVE(6) KABI_RESERVE(7) -- 2.25.1
2 1
0 0
  • ← Newer
  • 1
  • ...
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • ...
  • 1985
  • Older →

HyperKitty Powered by HyperKitty