Kernel
Threads by month
- ----- 2025 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- 46 participants
- 20388 discussions

[openeuler:OLK-6.6 2908/2908] aarch64-linux-ld: Unexpected GOT/PLT entries detected!
by kernel test robot 23 Sep '25
by kernel test robot 23 Sep '25
23 Sep '25
Hi Tong,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: a159deb279dfe156316d8c3957dc7f253686ff83
commit: b991780c836ceb9a479c6c6e385e914b487e353a [2908/2908] arm64: introduce copy_mc_to_kernel() implementation
config: arm64-randconfig-r112-20250922 (https://download.01.org/0day-ci/archive/20250923/202509230112.Wo3aqoIO-lkp@…)
compiler: aarch64-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250923/202509230112.Wo3aqoIO-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/202509230112.Wo3aqoIO-lkp@intel.com/
All errors (new ones prefixed by >>):
>> aarch64-linux-ld: Unexpected GOT/PLT entries detected!
>> aarch64-linux-ld: Unexpected run-time procedure linkages detected!
aarch64-linux-ld: mm/kasan/shadow.o: in function `memcpy_mc':
shadow.c:(.text+0x56c): undefined reference to `__memcpy_mc'
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0

[PATCH OLK-5.10] nfsd: replace wait_on_bit by wait_on_bit_acquire in nfsd_file_acquire
by Li Lingfeng 22 Sep '25
by Li Lingfeng 22 Sep '25
22 Sep '25
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/ICYREP
-------------------------------
Due to the absence of a read barrier in wait_on_bit(), it may lead to the
reading of nf->nf_file being reordered after the check for
NFSD_FILE_PENDING.
This could result in the reader obtaining an uninitialized nf->nf_file and
using it, thereby triggering a null pointer dereference.
Fixes: 65294c1f2c5e ("nfsd: add a new struct file caching facility to nfsd")
Signed-off-by: Li Lingfeng <lilingfeng3(a)huawei.com>
---
fs/nfsd/filecache.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c
index e30e1ddc1ace..957d7fc37d06 100644
--- a/fs/nfsd/filecache.c
+++ b/fs/nfsd/filecache.c
@@ -974,7 +974,7 @@ nfsd_file_acquire(struct svc_rqst *rqstp, struct svc_fh *fhp,
nfsd_file_slab_free(&new->nf_rcu);
wait_for_construction:
- wait_on_bit(&nf->nf_flags, NFSD_FILE_PENDING, TASK_UNINTERRUPTIBLE);
+ wait_on_bit_acquire(&nf->nf_flags, NFSD_FILE_PENDING, TASK_UNINTERRUPTIBLE);
/* Did construction of this file fail? */
if (!test_bit(NFSD_FILE_HASHED, &nf->nf_flags)) {
--
2.46.1
2
1

[openeuler:OLK-6.6 2908/2908] drivers/scsi/linkdata/ps3stor/ps3_qos.c:3023:6: error: no previous prototype for function 'ps3_hba_qos_waitq_poll'
by kernel test robot 22 Sep '25
by kernel test robot 22 Sep '25
22 Sep '25
Hi openeuler-ci-bot,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 1f1c00e79b5b7cd4202a28c0fcd645c3c92c0df5
commit: 663a9a1c191fd26f1d8cb44edb6e0e50dd0536b2 [2908/2908] !14287 [OLK-6.6] SCSI: Support Linkdata HBA/RAID Controllers
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20250922/202509221934.quy4NA6c-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/20250922/202509221934.quy4NA6c-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/202509221934.quy4NA6c-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/scsi/linkdata/ps3stor/ps3_qos.c:211:1: error: no previous prototype for function 'ps3_qos_cmd_waitq_get' [-Werror,-Wmissing-prototypes]
211 | ps3_qos_cmd_waitq_get(struct ps3_qos_tg_context *qos_tg_ctx,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:210:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
210 | struct qos_wait_queue *
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:335:15: error: no previous prototype for function 'ps3_qos_vd_cmdword_get' [-Werror,-Wmissing-prototypes]
335 | unsigned char ps3_qos_vd_cmdword_get(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:335:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
335 | unsigned char ps3_qos_vd_cmdword_get(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:351:15: error: no previous prototype for function 'ps3_qos_exclusive_cmdword_get' [-Werror,-Wmissing-prototypes]
351 | unsigned char ps3_qos_exclusive_cmdword_get(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:351:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
351 | unsigned char ps3_qos_exclusive_cmdword_get(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:363:15: error: no previous prototype for function 'ps3_qos_tg_decision' [-Werror,-Wmissing-prototypes]
363 | unsigned char ps3_qos_tg_decision(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:363:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
363 | unsigned char ps3_qos_tg_decision(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:749:15: error: no previous prototype for function 'ps3_qos_all_pd_rc_get' [-Werror,-Wmissing-prototypes]
749 | unsigned char ps3_qos_all_pd_rc_get(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:749:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
749 | unsigned char ps3_qos_all_pd_rc_get(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:876:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clear_all' [-Werror,-Wmissing-prototypes]
876 | void ps3_pd_quota_waitq_clear_all(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:876:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
876 | void ps3_pd_quota_waitq_clear_all(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:892:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clean' [-Werror,-Wmissing-prototypes]
892 | void ps3_pd_quota_waitq_clean(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:892:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
892 | void ps3_pd_quota_waitq_clean(struct ps3_qos_pd_mgr *qos_pd_mgr,
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:1058:6: error: no previous prototype for function 'ps3_qos_pd_waitq_ratio_update' [-Werror,-Wmissing-prototypes]
1058 | void ps3_qos_pd_waitq_ratio_update(struct ps3_qos_pd_mgr *qos_pd_mgr)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:1058:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
1058 | void ps3_qos_pd_waitq_ratio_update(struct ps3_qos_pd_mgr *qos_pd_mgr)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2019:15: error: no previous prototype for function 'ps3_hba_qos_decision' [-Werror,-Wmissing-prototypes]
2019 | unsigned char ps3_hba_qos_decision(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2019:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2019 | unsigned char ps3_hba_qos_decision(struct ps3_cmd *cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2040:6: error: no previous prototype for function 'ps3_hba_qos_waitq_notify' [-Werror,-Wmissing-prototypes]
2040 | void ps3_hba_qos_waitq_notify(struct ps3_instance *instance)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2040:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2040 | void ps3_hba_qos_waitq_notify(struct ps3_instance *instance)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2100:6: error: no previous prototype for function 'ps3_cmd_waitq_abort' [-Werror,-Wmissing-prototypes]
2100 | bool ps3_cmd_waitq_abort(struct ps3_cmd *aborted_cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2100:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2100 | bool ps3_cmd_waitq_abort(struct ps3_cmd *aborted_cmd)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2463:6: error: no previous prototype for function 'ps3_hba_qos_waitq_clear_all' [-Werror,-Wmissing-prototypes]
2463 | void ps3_hba_qos_waitq_clear_all(struct ps3_instance *instance, int resp_status)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2463:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2463 | void ps3_hba_qos_waitq_clear_all(struct ps3_instance *instance, int resp_status)
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2827:6: error: no previous prototype for function 'ps3_hba_qos_vd_init' [-Werror,-Wmissing-prototypes]
2827 | void ps3_hba_qos_vd_init(struct ps3_instance *instance,
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2827:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2827 | void ps3_hba_qos_vd_init(struct ps3_instance *instance,
| ^
| static
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2936:6: error: no previous prototype for function 'ps3_hba_qos_vd_reset' [-Werror,-Wmissing-prototypes]
2936 | void ps3_hba_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:2936:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
2936 | void ps3_hba_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3023:6: error: no previous prototype for function 'ps3_hba_qos_waitq_poll' [-Werror,-Wmissing-prototypes]
3023 | void ps3_hba_qos_waitq_poll(struct ps3_instance *instance)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3023:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3023 | void ps3_hba_qos_waitq_poll(struct ps3_instance *instance)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3279:15: error: no previous prototype for function 'ps3_raid_qos_decision' [-Werror,-Wmissing-prototypes]
3279 | unsigned char ps3_raid_qos_decision(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3279:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3279 | unsigned char ps3_raid_qos_decision(struct ps3_cmd *cmd)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3334:6: error: no previous prototype for function 'ps3_qos_mgrq_resend' [-Werror,-Wmissing-prototypes]
3334 | void ps3_qos_mgrq_resend(struct ps3_qos_softq_mgr *softq_mgr)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3334:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3334 | void ps3_qos_mgrq_resend(struct ps3_qos_softq_mgr *softq_mgr)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3478:6: error: no previous prototype for function 'ps3_raid_qos_waitq_notify' [-Werror,-Wmissing-prototypes]
3478 | void ps3_raid_qos_waitq_notify(struct ps3_instance *instance)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3478:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3478 | void ps3_raid_qos_waitq_notify(struct ps3_instance *instance)
| ^
| static
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:3821:15: error: no previous prototype for function 'ps3_raid_qos_waitq_abort' [-Werror,-Wmissing-prototypes]
3821 | unsigned char ps3_raid_qos_waitq_abort(struct ps3_cmd *cmd)
| ^
drivers/scsi/linkdata/ps3stor/ps3_qos.c:3821:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
3821 | unsigned char ps3_raid_qos_waitq_abort(struct ps3_cmd *cmd)
| ^
| static
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
--
>> drivers/scsi/linkdata/ps3stor/ps3_scsih.c:1958:1: error: unused function 'ps3_scsih_dev_id_get' [-Werror,-Wunused-function]
1958 | ps3_scsih_dev_id_get(const struct scsi_cmnd *s_cmd)
| ^~~~~~~~~~~~~~~~~~~~
1 error generated.
--
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:21:27: error: unused variable 'PS3_INTERRUPT_CMD_DISABLE_ALL_MASK' [-Werror,-Wunused-const-variable]
21 | static const unsigned int PS3_INTERRUPT_CMD_DISABLE_ALL_MASK = 0x02;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:22:27: error: unused variable 'PS3_INTERRUPT_CMD_ENABLE_MSIX' [-Werror,-Wunused-const-variable]
22 | static const unsigned int PS3_INTERRUPT_CMD_ENABLE_MSIX = 0x01;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:23:27: error: unused variable 'PS3_INTERRUPT_MASK_DISABLE' [-Werror,-Wunused-const-variable]
23 | static const unsigned int PS3_INTERRUPT_MASK_DISABLE = 0x00000002;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:24:27: error: unused variable 'PS3_INTERRUPT_STATUS_EXIST_IRQ' [-Werror,-Wunused-const-variable]
24 | static const unsigned int PS3_INTERRUPT_STATUS_EXIST_IRQ = 0x00000001;
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:25:27: error: unused variable 'PS3_INTERRUPT_CLEAR_IRQ' [-Werror,-Wunused-const-variable]
25 | static const unsigned int PS3_INTERRUPT_CLEAR_IRQ = 0x00000001;
| ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:27:27: error: unused variable 'PS3_SSD_IOPS_MSIX_VECTORS' [-Werror,-Wunused-const-variable]
27 | static const unsigned int PS3_SSD_IOPS_MSIX_VECTORS = 8;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_irq.c:28:27: error: unused variable 'PS3_HDD_IOPS_MSIX_VECTORS' [-Werror,-Wunused-const-variable]
28 | static const unsigned int PS3_HDD_IOPS_MSIX_VECTORS = 8;
| ^~~~~~~~~~~~~~~~~~~~~~~~~
7 errors generated.
--
>> drivers/scsi/linkdata/ps3stor/./linux/ps3_driver_log.c:41:19: error: unused function 'time_for_log' [-Werror,-Wunused-function]
41 | static inline int time_for_log(char *buff, int buf_len)
| ^~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/./linux/ps3_driver_log.c:65:19: error: unused function 'time_for_file_name' [-Werror,-Wunused-function]
65 | static inline int time_for_file_name(char *buff, int buf_len)
| ^~~~~~~~~~~~~~~~~~
2 errors generated.
vim +/ps3_hba_qos_waitq_poll +3023 drivers/scsi/linkdata/ps3stor/ps3_qos.c
97a2bb6ece556f liujie_answer 2024-12-24 3022
97a2bb6ece556f liujie_answer 2024-12-24 @3023 void ps3_hba_qos_waitq_poll(struct ps3_instance *instance)
97a2bb6ece556f liujie_answer 2024-12-24 3024 {
97a2bb6ece556f liujie_answer 2024-12-24 3025 if (!ps3_qos_tg_notify_timeout(instance)) {
97a2bb6ece556f liujie_answer 2024-12-24 3026 if (!ps3_qos_vd_notify_timeout(instance))
97a2bb6ece556f liujie_answer 2024-12-24 3027 ps3_qos_pd_notify_timeout(instance);
97a2bb6ece556f liujie_answer 2024-12-24 3028 }
97a2bb6ece556f liujie_answer 2024-12-24 3029 }
97a2bb6ece556f liujie_answer 2024-12-24 3030
:::::: The code at line 3023 was first introduced by commit
:::::: 97a2bb6ece556f3882263ee8df2b77f10c511311 SCSI: Linkdata: Supports Linkdata HBA/RAID Controllers
:::::: TO: liujie_answer <liujie5(a)linkdatatechnology.com>
:::::: CC: liujie_answer <liujie5(a)linkdatatechnology.com>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
1
0

22 Sep '25
From: Dan Carpenter <dan.carpenter(a)oracle.com>
stable inclusion
from stable-v4.19.262
commit 6066bd69ffba3a6abc7c0793ccba1da79b7d77e3
category: bugfix
bugzilla: https://gitee.com/src-openeuler/kernel/issues/ICY4GJ
CVE: CVE-2022-50312
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id…
--------------------------------
[ Upstream commit 1d5859ef229e381f4db38dce8ed58e4bf862006b ]
This error path needs to unwind instead of just returning directly.
Fixes: 03a8482c17dd ("drivers: serial: jsm: Enable support for Digi Classic adapters")
Signed-off-by: Dan Carpenter <dan.carpenter(a)oracle.com>
Link: https://lore.kernel.org/r/YyxFh1+lOeZ9WfKO@kili
Signed-off-by: Greg Kroah-Hartman <gregkh(a)linuxfoundation.org>
Signed-off-by: Sasha Levin <sashal(a)kernel.org>
Signed-off-by: Cai Xinchen <caixinchen1(a)huawei.com>
---
drivers/tty/serial/jsm/jsm_driver.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/tty/serial/jsm/jsm_driver.c b/drivers/tty/serial/jsm/jsm_driver.c
index 592e51d8944e..07e9be9865c7 100644
--- a/drivers/tty/serial/jsm/jsm_driver.c
+++ b/drivers/tty/serial/jsm/jsm_driver.c
@@ -212,7 +212,8 @@ static int jsm_probe_one(struct pci_dev *pdev, const struct pci_device_id *ent)
break;
default:
- return -ENXIO;
+ rc = -ENXIO;
+ goto out_kfree_brd;
}
rc = request_irq(brd->irq, brd->bd_ops->intr, IRQF_SHARED, "JSM", brd);
--
2.34.1
2
1
This patch series is going to fix CVE-2022-50255.
Steven Rostedt (Google) (2):
tracing: Move duplicate code of trace_kprobe/eprobe.c into header
tracing: Fix reading strings from synthetic events
kernel/trace/trace.h | 2 +
kernel/trace/trace_events_synth.c | 23 ++++++--
kernel/trace/trace_kprobe.c | 60 ++-----------------
kernel/trace/trace_probe_kernel.h | 96 +++++++++++++++++++++++++++++++
4 files changed, 120 insertions(+), 61 deletions(-)
create mode 100644 kernel/trace/trace_probe_kernel.h
--
2.34.1
2
3
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/ICS3XV
--------------------------------
Destroy workqueue in oecls_ntuple_res_clean() and use 'oecls_worker_count'
to avoid visiting oenetcls code after removed module. Moreover, call
synchronize_rcu() to keep the rcu data consistency.
Fixes: c9f5e390a63c ("net/oenetcls: use workqueue for ntuple cfg")
Signed-off-by: Wang Liang <wangliang74(a)huawei.com>
---
net/oenetcls/oenetcls.h | 6 ++--
net/oenetcls/oenetcls_flow.c | 5 ++-
net/oenetcls/oenetcls_main.c | 43 +++++++++----------------
net/oenetcls/oenetcls_ntuple.c | 57 ++++++++++++++++++++++++----------
4 files changed, 62 insertions(+), 49 deletions(-)
diff --git a/net/oenetcls/oenetcls.h b/net/oenetcls/oenetcls.h
index f4a06214f320..0be09b153428 100644
--- a/net/oenetcls/oenetcls.h
+++ b/net/oenetcls/oenetcls.h
@@ -74,7 +74,7 @@ struct oecls_sk_rule {
int dport;
int action;
int ruleid;
- int nid;
+ int cpu;
};
struct oecls_sk_entry {
@@ -124,11 +124,9 @@ struct rmgr_ctrl {
struct cfg_param {
struct work_struct work;
struct cmd_context ctx;
- struct oecls_sk_rule *rule;
struct sock *sk;
bool is_del;
- int devid;
- int nid;
+ int cpu;
};
extern int match_ip_flag;
diff --git a/net/oenetcls/oenetcls_flow.c b/net/oenetcls/oenetcls_flow.c
index 9a7550544305..87efb5e6a126 100644
--- a/net/oenetcls/oenetcls_flow.c
+++ b/net/oenetcls/oenetcls_flow.c
@@ -406,12 +406,15 @@ int oecls_flow_res_init(void)
}
RCU_INIT_POINTER(oecls_ops, &oecls_flow_ops);
+ synchronize_rcu();
return 0;
}
void oecls_flow_res_clean(void)
{
- RCU_INIT_POINTER(oecls_ops, NULL);
+ rcu_assign_pointer(oecls_ops, NULL);
+ synchronize_rcu();
+
oecls_sock_flow_table_release();
oecls_dev_flow_table_release();
}
diff --git a/net/oenetcls/oenetcls_main.c b/net/oenetcls/oenetcls_main.c
index 181e480d571b..aa5c63bf612a 100644
--- a/net/oenetcls/oenetcls_main.c
+++ b/net/oenetcls/oenetcls_main.c
@@ -23,11 +23,11 @@ static int mode;
module_param(mode, int, 0444);
MODULE_PARM_DESC(mode, "mode, default 0");
-static char ifname[64] = { 0 };
+static char ifname[128] = { 0 };
module_param_string(ifname, ifname, sizeof(ifname), 0444);
MODULE_PARM_DESC(ifname, "ifname");
-static char appname[64] = "redis-server";
+static char appname[256] = "redis-server";
module_param_string(appname, appname, sizeof(appname), 0644);
MODULE_PARM_DESC(appname, "appname, default redis-server");
@@ -39,6 +39,10 @@ static int strategy;
module_param(strategy, int, 0444);
MODULE_PARM_DESC(strategy, "strategy, default 0");
+static int check_cap = 1;
+module_param(check_cap, int, 0444);
+MODULE_PARM_DESC(check_cap, "check_cap, default 1");
+
static bool check_params(void)
{
if (mode != 0 && mode != 1)
@@ -218,20 +222,6 @@ static noinline_for_stack int ethtool_get_rxnfc(struct net_device *dev,
return ret;
}
-static noinline_for_stack int ethtool_get_channels(struct net_device *dev,
- void *useraddr)
-{
- struct ethtool_channels channels = { .cmd = ETHTOOL_GCHANNELS };
-
- if (!dev->ethtool_ops->get_channels)
- return -EOPNOTSUPP;
-
- dev->ethtool_ops->get_channels(dev, &channels);
-
- memcpy_r(useraddr, &channels, sizeof(channels));
- return 0;
-}
-
static int ethtool_get_value(struct net_device *dev, char *useraddr,
u32 cmd, u32 (*actor)(struct net_device *))
{
@@ -285,10 +275,9 @@ static int dev_ethtool_kern(struct net *net, struct ifreq *ifr)
case ETHTOOL_GRXCLSRLCNT:
case ETHTOOL_GRXCLSRULE:
case ETHTOOL_GRXCLSRLALL:
- case ETHTOOL_GCHANNELS:
break;
default:
- if (!ns_capable(net->user_ns, CAP_NET_ADMIN))
+ if (check_cap && !ns_capable(net->user_ns, CAP_NET_ADMIN))
return -EPERM;
}
@@ -319,9 +308,6 @@ static int dev_ethtool_kern(struct net *net, struct ifreq *ifr)
case ETHTOOL_SRXCLSRLINS:
rc = ethtool_set_rxnfc(dev, ethcmd, useraddr);
break;
- case ETHTOOL_GCHANNELS:
- rc = ethtool_get_channels(dev, useraddr);
- break;
default:
rc = -EOPNOTSUPP;
}
@@ -400,7 +386,7 @@ static void get_netdev_queue_info(struct oecls_netdev_info *oecls_dev)
cpu = cpumask_first(irq_data_get_effective_affinity_mask(&desc->irq_data));
rxq_info->affinity_cpu = cpu;
oecls_debug("irq=%d, [%s], rxq_id=%d affinity_cpu:%d\n",
- irq, desc->action->name, oecls_dev->rxq_num, cpu);
+ irq, desc->action->name, oecls_dev->rxq_num - 1, cpu);
}
}
@@ -669,9 +655,8 @@ static int init_numa_rxq_bitmap(int nid, struct oecls_numa_info *numa_info)
return ret;
}
-static int get_cluster_rxq(struct oecls_numa_bound_dev_info *bound_dev)
+static int get_cluster_rxq(int cpu, struct oecls_numa_bound_dev_info *bound_dev)
{
- int cpu = raw_smp_processor_id();
int cluster_id = cpu / oecls_cluster_cpu_num;
int i, j, rxq_id;
@@ -710,10 +695,11 @@ static int put_cluster_rxq(struct oecls_numa_bound_dev_info *bound_dev, int rxq_
return -1;
}
-int alloc_rxq_id(int nid, int devid)
+int alloc_rxq_id(int cpu, int devid)
{
struct oecls_numa_bound_dev_info *bound_dev;
struct oecls_numa_info *numa_info;
+ int nid = cpu_to_node(cpu);
int rxq_id;
numa_info = get_oecls_numa_info(nid);
@@ -729,7 +715,7 @@ int alloc_rxq_id(int nid, int devid)
bound_dev = &numa_info->bound_dev[devid];
if (strategy == 1) {
- rxq_id = get_cluster_rxq(bound_dev);
+ rxq_id = get_cluster_rxq(cpu, bound_dev);
if (rxq_id < 0 || rxq_id >= OECLS_MAX_RXQ_NUM_PER_DEV)
pr_info("failed to get rxq_id:%d in cluster, try numa\n", rxq_id);
else
@@ -744,14 +730,15 @@ int alloc_rxq_id(int nid, int devid)
found:
clear_bit(rxq_id, bound_dev->bitmap_rxq);
- oecls_debug("alloc nid:%d, dev_id:%d, rxq_id:%d\n", nid, devid, rxq_id);
+ oecls_debug("alloc cpu:%d, nid:%d, devid:%d, rxq_id:%d\n", cpu, nid, devid, rxq_id);
return rxq_id;
}
-void free_rxq_id(int nid, int devid, int rxq_id)
+void free_rxq_id(int cpu, int devid, int rxq_id)
{
struct oecls_numa_bound_dev_info *bound_dev;
struct oecls_numa_info *numa_info;
+ int nid = cpu_to_node(cpu);
numa_info = get_oecls_numa_info(nid);
if (!numa_info) {
diff --git a/net/oenetcls/oenetcls_ntuple.c b/net/oenetcls/oenetcls_ntuple.c
index 86fc9138b0df..a8d572270f7f 100644
--- a/net/oenetcls/oenetcls_ntuple.c
+++ b/net/oenetcls/oenetcls_ntuple.c
@@ -13,6 +13,7 @@
struct oecls_sk_rule_list oecls_sk_rules, oecls_sk_list;
static struct workqueue_struct *do_cfg_workqueue;
+static atomic_t oecls_worker_count = ATOMIC_INIT(0);
static void init_oecls_sk_rules(void)
{
@@ -33,8 +34,7 @@ static inline struct hlist_head *get_sk_hashlist(void *sk)
return oecls_sk_list.hash + (jhash(sk, sizeof(sk), 0) & OECLS_SK_RULE_HASHMASK);
}
-static void add_sk_rule(int devid, u32 dip4, u16 dport, void *sk, int action,
- int ruleid, int nid)
+static void add_sk_rule(int devid, u32 dip4, u16 dport, void *sk, int action, int ruleid, int cpu)
{
struct hlist_head *hlist = get_rule_hashlist(dip4, dport);
struct hlist_head *sk_hlist = get_sk_hashlist(sk);
@@ -52,7 +52,7 @@ static void add_sk_rule(int devid, u32 dip4, u16 dport, void *sk, int action,
rule->devid = devid;
rule->action = action;
rule->ruleid = ruleid;
- rule->nid = nid;
+ rule->cpu = cpu;
hlist_add_head(&rule->node, hlist);
entry->sk = sk;
@@ -442,7 +442,7 @@ static void cfg_work(struct work_struct *work)
}
// Calculate the bound queue
- rxq_id = alloc_rxq_id(ctx_p->nid, devid);
+ rxq_id = alloc_rxq_id(ctx_p->cpu, devid);
if (rxq_id < 0)
continue;
@@ -451,38 +451,55 @@ static void cfg_work(struct work_struct *work)
err = cfg_ethtool_rule(&ctx_p->ctx, ctx_p->is_del);
// Add sk rule only on success
if (err) {
- free_rxq_id(ctx_p->nid, devid, rxq_id);
+ free_rxq_id(ctx_p->cpu, devid, rxq_id);
continue;
}
- add_sk_rule(ctx_p->devid, ctx_p->ctx.dip4, ctx_p->ctx.dport, ctx_p->sk,
- ctx_p->ctx.action, ctx_p->ctx.ret_loc, ctx_p->nid);
+ add_sk_rule(devid, ctx_p->ctx.dip4, ctx_p->ctx.dport, ctx_p->sk,
+ ctx_p->ctx.action, ctx_p->ctx.ret_loc, ctx_p->cpu);
} else {
- rule = get_rule_from_sk(ctx_p->devid, ctx_p->sk);
+ rule = get_rule_from_sk(devid, ctx_p->sk);
if (!rule) {
oecls_debug("rule not found! sk:%p, devid:%d, dip4:%pI4, dport:%d\n",
- ctx_p->sk, ctx_p->devid, &ctx_p->ctx.dip4,
+ ctx_p->sk, devid, &ctx_p->ctx.dip4,
ntohs(ctx_p->ctx.dport));
continue;
}
// Config Ntuple rule to dev
ctx_p->ctx.del_ruleid = rule->ruleid;
- ctx_p->rule = rule;
err = cfg_ethtool_rule(&ctx_p->ctx, ctx_p->is_del);
// Free the bound queue
- free_rxq_id(ctx_p->rule->nid, ctx_p->devid, ctx_p->rule->action);
+ free_rxq_id(rule->cpu, devid, rule->action);
// Delete sk rule
- del_sk_rule(ctx_p->rule);
+ del_sk_rule(rule);
}
}
mutex_unlock(&oecls_sk_rules.mutex);
kfree(ctx_p);
+ atomic_dec(&oecls_worker_count);
+}
+
+static bool has_sock_rule(struct sock *sk)
+{
+ struct oecls_netdev_info *oecls_dev;
+ struct oecls_sk_rule *rule;
+ int devid;
+
+ for_each_oecls_netdev(devid, oecls_dev) {
+ rule = get_rule_from_sk(devid, sk);
+ if (rule)
+ return true;
+ }
+ return false;
}
static void del_ntuple_rule(struct sock *sk)
{
struct cfg_param *ctx_p;
+ if (!has_sock_rule(sk))
+ return;
+
ctx_p = kzalloc(sizeof(*ctx_p), GFP_ATOMIC);
if (!ctx_p)
return;
@@ -492,13 +509,12 @@ static void del_ntuple_rule(struct sock *sk)
ctx_p->sk = sk;
INIT_WORK(&ctx_p->work, cfg_work);
queue_work(do_cfg_workqueue, &ctx_p->work);
+ atomic_inc(&oecls_worker_count);
}
static void add_ntuple_rule(struct sock *sk)
{
struct cfg_param *ctx_p;
- int cpu = raw_smp_processor_id();
- int nid = cpu_to_node(cpu);
if (check_appname(current->comm))
return;
@@ -510,9 +526,10 @@ static void add_ntuple_rule(struct sock *sk)
ctx_p->is_del = false;
ctx_p->sk = sk;
- ctx_p->nid = nid;
+ ctx_p->cpu = raw_smp_processor_id();
INIT_WORK(&ctx_p->work, cfg_work);
queue_work(do_cfg_workqueue, &ctx_p->work);
+ atomic_inc(&oecls_worker_count);
}
static void ethtool_cfg_rxcls(struct sock *sk, int is_del)
@@ -581,11 +598,19 @@ int oecls_ntuple_res_init(void)
init_oecls_sk_rules();
RCU_INIT_POINTER(oecls_ops, &oecls_ntuple_ops);
+ synchronize_rcu();
return 0;
}
void oecls_ntuple_res_clean(void)
{
- RCU_INIT_POINTER(oecls_ops, NULL);
+ rcu_assign_pointer(oecls_ops, NULL);
+ synchronize_rcu();
+
+ oecls_debug("oecls_worker_count:%d\n", atomic_read(&oecls_worker_count));
+ while (atomic_read(&oecls_worker_count) != 0)
+ mdelay(1);
+
+ destroy_workqueue(do_cfg_workqueue);
clean_oecls_sk_rules();
}
--
2.34.1
2
1

[openeuler:OLK-6.6 2908/2908] drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c:545:5: error: no previous prototype for function 'ps3_pci_init'
by kernel test robot 22 Sep '25
by kernel test robot 22 Sep '25
22 Sep '25
Hi liujie_answer,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 1f1c00e79b5b7cd4202a28c0fcd645c3c92c0df5
commit: 97a2bb6ece556f3882263ee8df2b77f10c511311 [2908/2908] SCSI: Linkdata: Supports Linkdata HBA/RAID Controllers
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20250922/202509221458.t8DTxxgv-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/20250922/202509221458.t8DTxxgv-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/202509221458.t8DTxxgv-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
Fix CVE-2022-50343.
Yang Yingliang (1):
rapidio: fix possible name leaks when rio_add_device() fails
drivers/rapidio/devices/rio_mport_cdev.c | 7 +++++--
drivers/rapidio/rio-scan.c | 8 ++++++--
2 files changed, 11 insertions(+), 4 deletions(-)
--
2.34.1
2
2

22 Sep '25
hulk inclusion
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/ICA4Z5
--------------------------------
Optimize the kernel performance.
Signed-off-by: Dong Chenchen <dongchenchen2(a)huawei.com>
---
fs/ext4/ext4.h | 31 ++++++++------
fs/ext4/mballoc.c | 54 ++++++++++++++++++------
include/net/inet_hashtables.h | 9 ++--
include/net/ip.h | 2 +-
kernel/sched/core.c | 7 +++-
kernel/sched/fair.c | 5 ++-
kernel/sched/features.h | 1 +
net/ipv4/inet_hashtables.c | 78 +++++++++++++++++++++++++++--------
net/ipv4/inet_timewait_sock.c | 2 +-
net/ipv6/inet6_hashtables.c | 38 +++++++++++++----
10 files changed, 170 insertions(+), 57 deletions(-)
diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index bf5b21b5fed4..5a383f1a0843 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1548,12 +1548,13 @@ struct ext4_sb_info {
unsigned int s_mb_group_prealloc;
unsigned int s_mb_max_inode_prealloc;
unsigned int s_max_dir_size_kb;
- /* where last allocation was done - for stream allocation */
- unsigned long s_mb_last_group;
- unsigned long s_mb_last_start;
unsigned int s_mb_prefetch;
unsigned int s_mb_prefetch_limit;
+ /* where last allocation was done - for stream allocation */
+ ext4_group_t *s_mb_last_groups;
+ unsigned int s_mb_nr_global_goals;
+
/* stats for buddy allocator */
atomic_t s_bal_reqs; /* number of reqs with len > 1 */
atomic_t s_bal_success; /* we found long enough chunks */
@@ -1561,6 +1562,7 @@ struct ext4_sb_info {
atomic_t s_bal_ex_scanned; /* total extents scanned */
atomic_t s_bal_groups_scanned; /* number of groups scanned */
atomic_t s_bal_goals; /* goal hits */
+ atomic_t s_bal_stream_goals; /* stream allocation global goal hits */
atomic_t s_bal_breaks; /* too long searches */
atomic_t s_bal_2orders; /* 2^order hits */
atomic64_t s_bal_cX_groups_considered[4];
@@ -3395,23 +3397,28 @@ static inline int ext4_fs_is_busy(struct ext4_sb_info *sbi)
return (atomic_read(&sbi->s_lock_busy) > EXT4_CONTENTION_THRESHOLD);
}
+static inline bool ext4_try_lock_group(struct super_block *sb, ext4_group_t group)
+{
+ if (!spin_trylock(ext4_group_lock_ptr(sb, group)))
+ return false;
+ /*
+ * We're able to grab the lock right away, so drop the lock
+ * contention counter.
+ */
+ atomic_add_unless(&EXT4_SB(sb)->s_lock_busy, -1, 0);
+ return true;
+}
+
static inline void ext4_lock_group(struct super_block *sb, ext4_group_t group)
{
- spinlock_t *lock = ext4_group_lock_ptr(sb, group);
- if (spin_trylock(lock))
- /*
- * We're able to grab the lock right away, so drop the
- * lock contention counter.
- */
- atomic_add_unless(&EXT4_SB(sb)->s_lock_busy, -1, 0);
- else {
+ if (!ext4_try_lock_group(sb, group)) {
/*
* The lock is busy, so bump the contention counter,
* and then wait on the spin lock.
*/
atomic_add_unless(&EXT4_SB(sb)->s_lock_busy, 1,
EXT4_MAX_CONTENTION);
- spin_lock(lock);
+ spin_lock(ext4_group_lock_ptr(sb, group));
}
}
diff --git a/fs/ext4/mballoc.c b/fs/ext4/mballoc.c
index 522d2ec128ef..270856e6efc6 100644
--- a/fs/ext4/mballoc.c
+++ b/fs/ext4/mballoc.c
@@ -1741,11 +1741,11 @@ static void ext4_mb_use_best_found(struct ext4_allocation_context *ac,
get_page(ac->ac_buddy_page);
/* store last allocated for subsequent stream allocation */
if (ac->ac_flags & EXT4_MB_STREAM_ALLOC) {
- spin_lock(&sbi->s_md_lock);
- sbi->s_mb_last_group = ac->ac_f_ex.fe_group;
- sbi->s_mb_last_start = ac->ac_f_ex.fe_start;
- spin_unlock(&sbi->s_md_lock);
+ int hash = ac->ac_inode->i_ino % sbi->s_mb_nr_global_goals;
+
+ WRITE_ONCE(sbi->s_mb_last_groups[hash], ac->ac_f_ex.fe_group);
}
+
/*
* As we've just preallocated more space than
* user requested originally, we store allocated
@@ -2378,11 +2378,11 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
/* if stream allocation is enabled, use global goal */
if (ac->ac_flags & EXT4_MB_STREAM_ALLOC) {
- /* TBD: may be hot point */
- spin_lock(&sbi->s_md_lock);
- ac->ac_g_ex.fe_group = sbi->s_mb_last_group;
- ac->ac_g_ex.fe_start = sbi->s_mb_last_start;
- spin_unlock(&sbi->s_md_lock);
+ int hash = ac->ac_inode->i_ino % sbi->s_mb_nr_global_goals;
+
+ ac->ac_g_ex.fe_group = READ_ONCE(sbi->s_mb_last_groups[hash]);
+ ac->ac_g_ex.fe_start = -1;
+ ac->ac_flags &= ~EXT4_MB_HINT_TRY_GOAL;
}
/* Let's just scan groups to find more-less suitable blocks */
@@ -2434,6 +2434,11 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
nr = 0;
}
+ /* prevent unnecessary buddy loading. */
+ if (cr < 3 &&
+ spin_is_locked(ext4_group_lock_ptr(sb, group)))
+ continue;
+
/* This now checks without needing the buddy page */
ret = ext4_mb_good_group_nolock(ac, group, cr);
if (ret <= 0) {
@@ -2446,7 +2451,13 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
if (err)
goto out;
- ext4_lock_group(sb, group);
+ /* skip busy group */
+ if (cr >= 3) {
+ ext4_lock_group(sb, group);
+ } else if (!ext4_try_lock_group(sb, group)) {
+ ext4_mb_unload_buddy(&e4b);
+ continue;
+ }
/*
* We need to check again after locking the
@@ -2507,8 +2518,12 @@ ext4_mb_regular_allocator(struct ext4_allocation_context *ac)
}
}
- if (sbi->s_mb_stats && ac->ac_status == AC_STATUS_FOUND)
+ if (sbi->s_mb_stats && ac->ac_status == AC_STATUS_FOUND) {
atomic64_inc(&sbi->s_bal_cX_hits[ac->ac_criteria]);
+ if (ac->ac_flags & EXT4_MB_STREAM_ALLOC &&
+ ac->ac_b_ex.fe_group == ac->ac_g_ex.fe_group)
+ atomic_inc(&sbi->s_bal_stream_goals);
+ }
out:
if (!err && ac->ac_status != AC_STATUS_FOUND && first_err)
err = first_err;
@@ -2658,6 +2673,8 @@ int ext4_seq_mb_stats_show(struct seq_file *seq, void *offset)
atomic64_read(&sbi->s_bal_cX_failed[3]));
seq_printf(seq, "\textents_scanned: %u\n", atomic_read(&sbi->s_bal_ex_scanned));
seq_printf(seq, "\t\tgoal_hits: %u\n", atomic_read(&sbi->s_bal_goals));
+ seq_printf(seq, "\t\tstream_goal_hits: %u\n",
+ atomic_read(&sbi->s_bal_stream_goals));
seq_printf(seq, "\t\t2^n_hits: %u\n", atomic_read(&sbi->s_bal_2orders));
seq_printf(seq, "\t\tbreaks: %u\n", atomic_read(&sbi->s_bal_breaks));
seq_printf(seq, "\t\tlost: %u\n", atomic_read(&sbi->s_mb_lost_chunks));
@@ -3014,10 +3031,19 @@ int ext4_mb_init(struct super_block *sb)
sbi->s_mb_group_prealloc, sbi->s_stripe);
}
+ sbi->s_mb_nr_global_goals = min_t(unsigned int, num_possible_cpus(),
+ DIV_ROUND_UP(sbi->s_groups_count, 4));
+ sbi->s_mb_last_groups = kcalloc(sbi->s_mb_nr_global_goals,
+ sizeof(ext4_group_t), GFP_KERNEL);
+ if (sbi->s_mb_last_groups == NULL) {
+ ret = -ENOMEM;
+ goto out;
+ }
+
sbi->s_locality_groups = alloc_percpu(struct ext4_locality_group);
if (sbi->s_locality_groups == NULL) {
ret = -ENOMEM;
- goto out;
+ goto out_free_last_groups;
}
for_each_possible_cpu(i) {
struct ext4_locality_group *lg;
@@ -3038,6 +3064,9 @@ int ext4_mb_init(struct super_block *sb)
out_free_locality_groups:
free_percpu(sbi->s_locality_groups);
sbi->s_locality_groups = NULL;
+out_free_last_groups:
+ kfree(sbi->s_mb_last_groups);
+ sbi->s_mb_last_groups = NULL;
out:
kfree(sbi->s_mb_offsets);
sbi->s_mb_offsets = NULL;
@@ -3126,6 +3155,7 @@ int ext4_mb_release(struct super_block *sb)
}
free_percpu(sbi->s_locality_groups);
+ kfree(sbi->s_mb_last_groups);
return 0;
}
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index c9e387d174c6..fa002c62d985 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -88,6 +88,7 @@ struct inet_bind_bucket {
bool fast_ipv6_only;
struct hlist_node node;
struct hlist_head owners;
+ struct rcu_head rcu;
};
static inline struct net *ib_net(struct inet_bind_bucket *ib)
@@ -201,8 +202,7 @@ struct inet_bind_bucket *
inet_bind_bucket_create(struct kmem_cache *cachep, struct net *net,
struct inet_bind_hashbucket *head,
const unsigned short snum, int l3mdev);
-void inet_bind_bucket_destroy(struct kmem_cache *cachep,
- struct inet_bind_bucket *tb);
+void inet_bind_bucket_destroy(struct inet_bind_bucket *tb);
static inline u32 inet_bhashfn(const struct net *net, const __u16 lport,
const u32 bhash_size)
@@ -404,9 +404,12 @@ static inline void sk_rcv_saddr_set(struct sock *sk, __be32 addr)
int __inet_hash_connect(struct inet_timewait_death_row *death_row,
struct sock *sk, u64 port_offset,
+ u32 hash_port0,
int (*check_established)(struct inet_timewait_death_row *,
struct sock *, __u16,
- struct inet_timewait_sock **));
+ struct inet_timewait_sock **,
+ bool rcu_lookup,
+ u32 hash));
int inet_hash_connect(struct inet_timewait_death_row *death_row,
struct sock *sk);
diff --git a/include/net/ip.h b/include/net/ip.h
index 12cb525572f0..b36ce4d97904 100644
--- a/include/net/ip.h
+++ b/include/net/ip.h
@@ -343,7 +343,7 @@ static inline u64 snmp_fold_field64(void __percpu *mib, int offt, size_t syncp_o
void inet_get_local_port_range(struct net *net, int *low, int *high);
#ifdef CONFIG_SYSCTL
-static inline bool inet_is_local_reserved_port(struct net *net, unsigned short port)
+static inline bool inet_is_local_reserved_port(const struct net *net, unsigned short port)
{
if (!net->ipv4.sysctl_local_reserved_ports)
return false;
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 5d2937935b47..127ea3119b4b 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2848,7 +2848,12 @@ static void ttwu_do_wakeup(struct rq *rq, struct task_struct *p, int wake_flags,
}
if (rq->idle_stamp) {
- u64 delta = rq_clock(rq) - rq->idle_stamp;
+ u64 delta;
+
+ if (sched_feat(IRQ_AVG))
+ delta = rq_clock_task(rq) - rq->idle_stamp;
+ else
+ delta = rq_clock(rq) - rq->idle_stamp;
u64 max = 2*rq->max_idle_balance_cost;
update_avg(&rq->avg_idle, delta);
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 848d45f2bc49..bfdcdad02028 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -4473,7 +4473,10 @@ static inline void update_misfit_status(struct task_struct *p, struct rq *rq)
static inline void rq_idle_stamp_update(struct rq *rq)
{
- rq->idle_stamp = rq_clock(rq);
+ if (sched_feat(IRQ_AVG))
+ rq->idle_stamp = rq_clock_task(rq);
+ else
+ rq->idle_stamp = rq_clock(rq);
}
static inline void rq_idle_stamp_clear(struct rq *rq)
diff --git a/kernel/sched/features.h b/kernel/sched/features.h
index c4637bbba4cd..24c546dedbc3 100644
--- a/kernel/sched/features.h
+++ b/kernel/sched/features.h
@@ -115,6 +115,7 @@ SCHED_FEAT(WA_BIAS, true)
*/
SCHED_FEAT(UTIL_EST, true)
SCHED_FEAT(UTIL_EST_FASTUP, true)
+SCHED_FEAT(IRQ_AVG, false)
SCHED_FEAT(ALT_PERIOD, true)
SCHED_FEAT(BASE_SLICE, true)
diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c
index 1894cf014129..81b8e5cfe686 100644
--- a/net/ipv4/inet_hashtables.c
+++ b/net/ipv4/inet_hashtables.c
@@ -38,7 +38,7 @@ static u32 inet_ehashfn(const struct net *net, const __be32 laddr,
net_get_random_once(&inet_ehash_secret, sizeof(inet_ehash_secret));
- return __inet_ehashfn(laddr, lport, faddr, fport,
+ return lport + __inet_ehashfn(laddr, 0, faddr, fport,
inet_ehash_secret + net_hash_mix(net));
}
@@ -86,11 +86,11 @@ struct inet_bind_bucket *inet_bind_bucket_create(struct kmem_cache *cachep,
/*
* Caller must hold hashbucket lock for this tb with local BH disabled
*/
-void inet_bind_bucket_destroy(struct kmem_cache *cachep, struct inet_bind_bucket *tb)
+void inet_bind_bucket_destroy(struct inet_bind_bucket *tb)
{
if (hlist_empty(&tb->owners)) {
- __hlist_del(&tb->node);
- kmem_cache_free(cachep, tb);
+ hlist_del_rcu(&tb->node);
+ kfree_rcu(tb, rcu);
}
}
@@ -118,7 +118,7 @@ static void __inet_put_port(struct sock *sk)
__sk_del_bind_node(sk);
inet_csk(sk)->icsk_bind_hash = NULL;
inet_sk(sk)->inet_num = 0;
- inet_bind_bucket_destroy(hashinfo->bind_bucket_cachep, tb);
+ inet_bind_bucket_destroy(tb);
spin_unlock(&head->lock);
}
@@ -440,7 +440,9 @@ EXPORT_SYMBOL_GPL(__inet_lookup_established);
/* called with local bh disabled */
static int __inet_check_established(struct inet_timewait_death_row *death_row,
struct sock *sk, __u16 lport,
- struct inet_timewait_sock **twp)
+ struct inet_timewait_sock **twp,
+ bool rcu_lookup,
+ u32 hash)
{
struct inet_hashinfo *hinfo = death_row->hashinfo;
struct inet_sock *inet = inet_sk(sk);
@@ -451,14 +453,25 @@ static int __inet_check_established(struct inet_timewait_death_row *death_row,
int sdif = l3mdev_master_ifindex_by_index(net, dif);
INET_ADDR_COOKIE(acookie, saddr, daddr);
const __portpair ports = INET_COMBINED_PORTS(inet->inet_dport, lport);
- unsigned int hash = inet_ehashfn(net, daddr, lport,
- saddr, inet->inet_dport);
struct inet_ehash_bucket *head = inet_ehash_bucket(hinfo, hash);
- spinlock_t *lock = inet_ehash_lockp(hinfo, hash);
- struct sock *sk2;
- const struct hlist_nulls_node *node;
struct inet_timewait_sock *tw = NULL;
+ const struct hlist_nulls_node *node;
+ struct sock *sk2;
+ spinlock_t *lock;
+ if (rcu_lookup) {
+ sk_nulls_for_each(sk2, node, &head->chain) {
+ if (sk2->sk_hash != hash ||
+ !INET_MATCH(net, sk2, acookie, ports, dif, sdif))
+ continue;
+ if (sk2->sk_state == TCP_TIME_WAIT)
+ break;
+ return -EADDRNOTAVAIL;
+ }
+ return 0;
+ }
+
+ lock = inet_ehash_lockp(hinfo, hash);
spin_lock(lock);
sk_nulls_for_each(sk2, node, &head->chain) {
@@ -734,8 +747,10 @@ static u32 *table_perturb;
int __inet_hash_connect(struct inet_timewait_death_row *death_row,
struct sock *sk, u64 port_offset,
+ u32 hash_port0,
int (*check_established)(struct inet_timewait_death_row *,
- struct sock *, __u16, struct inet_timewait_sock **))
+ struct sock *, __u16, struct inet_timewait_sock **,
+ bool rcu_lookup, u32 hash))
{
struct inet_hashinfo *hinfo = death_row->hashinfo;
struct inet_timewait_sock *tw = NULL;
@@ -750,7 +765,8 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row,
if (port) {
local_bh_disable();
- ret = check_established(death_row, sk, port, NULL);
+ ret = check_established(death_row, sk, port, NULL, false,
+ hash_port0 + port);
local_bh_enable();
return ret;
}
@@ -787,6 +803,23 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row,
continue;
head = &hinfo->bhash[inet_bhashfn(net, port,
hinfo->bhash_size)];
+ rcu_read_lock();
+ hlist_for_each_entry_rcu(tb, &head->chain, node) {
+ if (net_eq(ib_net(tb), net) && tb->l3mdev == l3mdev &&
+ tb->port == port)
+ continue;
+ if (tb->fastreuse >= 0 || tb->fastreuseport >= 0) {
+ rcu_read_unlock();
+ goto next_port;
+ }
+ if (!check_established(death_row, sk, port, &tw, true,
+ hash_port0 + port))
+ break;
+ rcu_read_unlock();
+ goto next_port;
+ }
+ rcu_read_unlock();
+
spin_lock_bh(&head->lock);
/* Does not bother with rcv_saddr checks, because
@@ -797,12 +830,13 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row,
tb->port == port) {
if (tb->fastreuse >= 0 ||
tb->fastreuseport >= 0)
- goto next_port;
+ goto next_port_unlock;
WARN_ON(hlist_empty(&tb->owners));
if (!check_established(death_row, sk,
- port, &tw))
+ port, &tw, false,
+ hash_port0 + port))
goto ok;
- goto next_port;
+ goto next_port_unlock;
}
}
@@ -815,8 +849,9 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row,
tb->fastreuse = -1;
tb->fastreuseport = -1;
goto ok;
-next_port:
+next_port_unlock:
spin_unlock_bh(&head->lock);
+next_port:
cond_resched();
}
@@ -856,11 +891,18 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row,
int inet_hash_connect(struct inet_timewait_death_row *death_row,
struct sock *sk)
{
+ const struct inet_sock *inet = inet_sk(sk);
+ const struct net *net = sock_net(sk);
u64 port_offset = 0;
+ u32 hash_port0;
if (!inet_sk(sk)->inet_num)
port_offset = inet_sk_port_offset(sk);
- return __inet_hash_connect(death_row, sk, port_offset,
+
+ hash_port0 = inet_ehashfn(net, inet->inet_rcv_saddr, 0,
+ inet->inet_daddr, inet->inet_dport);
+
+ return __inet_hash_connect(death_row, sk, port_offset, hash_port0,
__inet_check_established);
}
EXPORT_SYMBOL_GPL(inet_hash_connect);
diff --git a/net/ipv4/inet_timewait_sock.c b/net/ipv4/inet_timewait_sock.c
index cb28e2fb6c7c..f2601522bb6a 100644
--- a/net/ipv4/inet_timewait_sock.c
+++ b/net/ipv4/inet_timewait_sock.c
@@ -36,7 +36,7 @@ void inet_twsk_bind_unhash(struct inet_timewait_sock *tw,
__hlist_del(&tw->tw_bind_node);
tw->tw_tb = NULL;
- inet_bind_bucket_destroy(hashinfo->bind_bucket_cachep, tb);
+ inet_bind_bucket_destroy(tb);
__sock_put((struct sock *)tw);
}
diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c
index b4a5e01e1201..3ce85db9624c 100644
--- a/net/ipv6/inet6_hashtables.c
+++ b/net/ipv6/inet6_hashtables.c
@@ -38,7 +38,7 @@ u32 inet6_ehashfn(const struct net *net,
lhash = (__force u32)laddr->s6_addr32[3];
fhash = __ipv6_addr_jhash(faddr, ipv6_hash_secret);
- return __inet6_ehashfn(lhash, lport, fhash, fport,
+ return lport + __inet6_ehashfn(lhash, 0, fhash, fport,
inet6_ehash_secret + net_hash_mix(net));
}
@@ -245,7 +245,9 @@ EXPORT_SYMBOL_GPL(inet6_lookup);
static int __inet6_check_established(struct inet_timewait_death_row *death_row,
struct sock *sk, const __u16 lport,
- struct inet_timewait_sock **twp)
+ struct inet_timewait_sock **twp,
+ bool rcu_lookup,
+ u32 hash)
{
struct inet_hashinfo *hinfo = death_row->hashinfo;
struct inet_sock *inet = inet_sk(sk);
@@ -255,14 +257,26 @@ static int __inet6_check_established(struct inet_timewait_death_row *death_row,
struct net *net = sock_net(sk);
const int sdif = l3mdev_master_ifindex_by_index(net, dif);
const __portpair ports = INET_COMBINED_PORTS(inet->inet_dport, lport);
- const unsigned int hash = inet6_ehashfn(net, daddr, lport, saddr,
- inet->inet_dport);
struct inet_ehash_bucket *head = inet_ehash_bucket(hinfo, hash);
- spinlock_t *lock = inet_ehash_lockp(hinfo, hash);
- struct sock *sk2;
- const struct hlist_nulls_node *node;
struct inet_timewait_sock *tw = NULL;
+ const struct hlist_nulls_node *node;
+ struct sock *sk2;
+ spinlock_t *lock;
+
+ if (rcu_lookup) {
+ sk_nulls_for_each(sk2, node, &head->chain) {
+ if (sk2->sk_hash != hash ||
+ !inet6_match(net, sk2, saddr, daddr,
+ ports, dif, sdif))
+ continue;
+ if (sk2->sk_state == TCP_TIME_WAIT)
+ break;
+ return -EADDRNOTAVAIL;
+ }
+ return 0;
+ }
+ lock = inet_ehash_lockp(hinfo, hash);
spin_lock(lock);
sk_nulls_for_each(sk2, node, &head->chain) {
@@ -320,11 +334,19 @@ static u64 inet6_sk_port_offset(const struct sock *sk)
int inet6_hash_connect(struct inet_timewait_death_row *death_row,
struct sock *sk)
{
+ const struct in6_addr *daddr = &sk->sk_v6_rcv_saddr;
+ const struct in6_addr *saddr = &sk->sk_v6_daddr;
+ const struct inet_sock *inet = inet_sk(sk);
+ const struct net *net = sock_net(sk);
u64 port_offset = 0;
+ u32 hash_port0;
if (!inet_sk(sk)->inet_num)
port_offset = inet6_sk_port_offset(sk);
- return __inet_hash_connect(death_row, sk, port_offset,
+
+ hash_port0 = inet6_ehashfn(net, daddr, 0, saddr, inet->inet_dport);
+
+ return __inet_hash_connect(death_row, sk, port_offset, hash_port0,
__inet6_check_established);
}
EXPORT_SYMBOL_GPL(inet6_hash_connect);
--
2.25.1
2
1

[openeuler:OLK-6.6 2908/2908] drivers/net/ethernet/linkdata/sxe/sxepf/sxe_debugfs.c:432:6: error: no previous prototype for 'sxe_debugfs_entries_init'
by kernel test robot 22 Sep '25
by kernel test robot 22 Sep '25
22 Sep '25
Hi liujie_answer,
FYI, the error/warning still remains.
tree: https://gitee.com/openeuler/kernel.git OLK-6.6
head: 1f1c00e79b5b7cd4202a28c0fcd645c3c92c0df5
commit: dd013ad487534c1838afc2f55efdb5daec15aace [2908/2908] Ethernet: Linkdata: Supports Linkdata ethernet Controllers
config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20250922/202509221213.1pyyj9JK-lkp@…)
compiler: gcc-14 (Debian 14.2.0-19) 14.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250922/202509221213.1pyyj9JK-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/202509221213.1pyyj9JK-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/net/ethernet/linkdata/sxe/sxepf/sxe_xdp.c:410:6: error: no previous prototype for 'sxe_txrx_ring_enable' [-Werror=missing-prototypes]
410 | 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