Kernel
  Threads by month 
                
            - ----- 2025 -----
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2024 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2023 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2022 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2021 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2020 -----
 - December
 - November
 - October
 - September
 - August
 - July
 - June
 - May
 - April
 - March
 - February
 - January
 - ----- 2019 -----
 - December
 
- 25 participants
 - 21043 discussions
 
                        
                            
                                
                            
                            [openeuler:openEuler-1.0-LTS 1753/1753] block/bio-integrity.c:41:6: warning: no previous prototype for function '__bio_integrity_free'
                        
                        
by kernel test robot 07 Aug '25
                    by kernel test robot 07 Aug '25
07 Aug '25
                    
                        Hi Chengguang,
FYI, the error/warning still remains.
tree:   https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head:   464c0bf980f96a307759f809825ab0a3b59f8b70
commit: f9c4e7b09f7d51f9256fe51b9c40657cd7302530 [1753/1753] block: release bip in a right way in error path
config: x86_64-buildonly-randconfig-006-20250806 (https://download.01.org/0day-ci/archive/20250807/202508070154.VYnxHXi4-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250807/202508070154.VYnxHXi4-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/202508070154.VYnxHXi4-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> block/bio-integrity.c:41:6: warning: no previous prototype for function '__bio_integrity_free' [-Wmissing-prototypes]
      41 | void __bio_integrity_free(struct bio_set *bs, struct bio_integrity_payload *bip)
         |      ^
   block/bio-integrity.c:41:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
      41 | void __bio_integrity_free(struct bio_set *bs, struct bio_integrity_payload *bip)
         | ^
         | static 
   1 warning generated.
vim +/__bio_integrity_free +41 block/bio-integrity.c
    40	
  > 41	void __bio_integrity_free(struct bio_set *bs, struct bio_integrity_payload *bip)
    42	{
    43		if (bs && mempool_initialized(&bs->bio_integrity_pool)) {
    44			if (bip->bip_vec)
    45				bvec_free(&bs->bvec_integrity_pool, bip->bip_vec,
    46					  bip->bip_slab);
    47			mempool_free(bip, &bs->bio_integrity_pool);
    48		} else {
    49			kfree(bip);
    50		}
    51	}
    52	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-6.6 2658/2658] drivers/iommu/loongarch_iommu.c:610:6: warning: no previous prototype for function 'domain_deattach_iommu'
                        
                        
by kernel test robot 07 Aug '25
                    by kernel test robot 07 Aug '25
07 Aug '25
                    
                        tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   8551213150db5f8eebd27273dae93f6fe258d63a
commit: 72fe4978ee346c10869113410da1b61710dd8d8f [2658/2658] LoongArch: add iommu support
config: loongarch-randconfig-2005-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061815.FqJo5TwT-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project faa4c4c2dc804c31845d8f036345fac00e016f2d)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061815.FqJo5TwT-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/202508061815.FqJo5TwT-lkp@intel.com/
All warnings (new ones prefixed by >>):
   In file included from drivers/iommu/loongarch_iommu.c:20:
   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:2247:
   include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iommu/loongarch_iommu.c:610:6: warning: no previous prototype for function 'domain_deattach_iommu' [-Wmissing-prototypes]
     610 | void domain_deattach_iommu(struct dom_info *priv, struct iommu_info *info)
         |      ^
   drivers/iommu/loongarch_iommu.c:610:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     610 | void domain_deattach_iommu(struct dom_info *priv, struct iommu_info *info)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:651:29: warning: no previous prototype for function 'lookup_rlooptable' [-Wmissing-prototypes]
     651 | struct iommu_rlookup_entry *lookup_rlooptable(int pcisegment)
         |                             ^
   drivers/iommu/loongarch_iommu.c:651:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     651 | struct iommu_rlookup_entry *lookup_rlooptable(int pcisegment)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:662:25: warning: no previous prototype for function 'find_iommu_by_dev' [-Wmissing-prototypes]
     662 | struct loongarch_iommu *find_iommu_by_dev(struct pci_dev  *pdev)
         |                         ^
   drivers/iommu/loongarch_iommu.c:662:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     662 | struct loongarch_iommu *find_iommu_by_dev(struct pci_dev  *pdev)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:684:22: warning: no previous prototype for function 'iommu_init_device' [-Wmissing-prototypes]
     684 | struct iommu_device *iommu_init_device(struct device *dev)
         |                      ^
   drivers/iommu/loongarch_iommu.c:684:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     684 | struct iommu_device *iommu_init_device(struct device *dev)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:721:22: warning: no previous prototype for function 'la_iommu_probe_device' [-Wmissing-prototypes]
     721 | struct iommu_device *la_iommu_probe_device(struct device *dev)
         |                      ^
   drivers/iommu/loongarch_iommu.c:721:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     721 | struct iommu_device *la_iommu_probe_device(struct device *dev)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:752:20: warning: no previous prototype for function 'get_iommu_info_from_dom' [-Wmissing-prototypes]
     752 | struct iommu_info *get_iommu_info_from_dom(struct dom_info *priv, struct loongarch_iommu *iommu)
         |                    ^
   drivers/iommu/loongarch_iommu.c:752:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     752 | struct iommu_info *get_iommu_info_from_dom(struct dom_info *priv, struct loongarch_iommu *iommu)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:767:20: warning: no previous prototype for function 'domain_attach_iommu' [-Wmissing-prototypes]
     767 | struct iommu_info *domain_attach_iommu(struct dom_info *priv, struct loongarch_iommu *iommu)
         |                    ^
   drivers/iommu/loongarch_iommu.c:767:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     767 | struct iommu_info *domain_attach_iommu(struct dom_info *priv, struct loongarch_iommu *iommu)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:1197:25: warning: no previous prototype for function 'loongarch_get_iommu_by_devid' [-Wmissing-prototypes]
    1197 | struct loongarch_iommu *loongarch_get_iommu_by_devid(struct pci_dev *pdev)
         |                         ^
   drivers/iommu/loongarch_iommu.c:1197:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    1197 | struct loongarch_iommu *loongarch_get_iommu_by_devid(struct pci_dev *pdev)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:1215:6: warning: no previous prototype for function 'check_device_compat' [-Wmissing-prototypes]
    1215 | bool check_device_compat(struct pci_dev *pdev)
         |      ^
   drivers/iommu/loongarch_iommu.c:1215:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    1215 | bool check_device_compat(struct pci_dev *pdev)
         | ^
         | static 
>> drivers/iommu/loongarch_iommu.c:1344:29: warning: no previous prototype for function 'create_rlookup_entry' [-Wmissing-prototypes]
    1344 | struct iommu_rlookup_entry *create_rlookup_entry(int pcisegment)
         |                             ^
   drivers/iommu/loongarch_iommu.c:1344:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    1344 | struct iommu_rlookup_entry *create_rlookup_entry(int pcisegment)
         | ^
         | static 
   14 warnings generated.
--
>> drivers/iommu/loongarch_iommu.c:1663: warning: Function parameter or member 'ivrs' not described in 'get_highest_supported_ivhd_type'
vim +/domain_deattach_iommu +610 drivers/iommu/loongarch_iommu.c
   609	
 > 610	void domain_deattach_iommu(struct dom_info *priv, struct iommu_info *info)
   611	{
   612		if ((priv == NULL) || (info == NULL) ||
   613			(info->dev_cnt != 0) || (info->iommu == NULL)) {
   614			pr_err("%s invalid parameter", __func__);
   615			return;
   616		}
   617		del_domain_from_list(info->iommu, priv);
   618		domain_id_free(info->iommu, info->id);
   619		spin_lock(&priv->lock);
   620		list_del(&info->list);
   621		spin_unlock(&priv->lock);
   622		kfree(info);
   623	}
   624	
   625	static void la_iommu_domain_free(struct iommu_domain *domain)
   626	{
   627		struct dom_info *priv;
   628		struct loongarch_iommu *iommu = NULL;
   629		struct iommu_info *info, *tmp;
   630	
   631		priv = to_dom_info(domain);
   632		spin_lock(&priv->lock);
   633		list_for_each_entry_safe(info, tmp, &priv->iommu_devlist, list) {
   634			if (info->dev_cnt > 0)
   635				detach_all_dev_by_domain(info);
   636			iommu = info->iommu;
   637			spin_unlock(&priv->lock);
   638			domain_deattach_iommu(priv, info);
   639			spin_lock(&priv->lock);
   640			iommu_flush_iotlb(iommu);
   641			if (!has_dom(iommu))
   642				iommu_translate_disable(iommu);
   643		}
   644		spin_unlock(&priv->lock);
   645		mutex_lock(&priv->ptl_lock);
   646		iommu_free_pagetable(priv);
   647		mutex_unlock(&priv->ptl_lock);
   648		dom_info_free(priv);
   649	}
   650	
 > 651	struct iommu_rlookup_entry *lookup_rlooptable(int pcisegment)
   652	{
   653		struct iommu_rlookup_entry *rlookupentry = NULL;
   654	
   655		list_for_each_entry(rlookupentry, &la_rlookup_iommu_list, list) {
   656			if (rlookupentry->pcisegment == pcisegment)
   657				return rlookupentry;
   658		}
   659		return NULL;
   660	}
   661	
 > 662	struct loongarch_iommu *find_iommu_by_dev(struct pci_dev  *pdev)
   663	{
   664		int pcisegment;
   665		unsigned short devid;
   666		struct iommu_rlookup_entry *rlookupentry = NULL;
   667		struct loongarch_iommu *iommu = NULL;
   668		struct pci_bus	*bus = pdev->bus;
   669	
   670		devid = PCI_DEVID(bus->number, pdev->devfn);
   671		pcisegment = pci_domain_nr(bus);
   672		rlookupentry = lookup_rlooptable(pcisegment);
   673		if (rlookupentry == NULL) {
   674			pr_info("%s find segment %d rlookupentry failed\n", __func__,
   675					pcisegment);
   676			return iommu;
   677		}
   678		iommu = rlookupentry->rlookup_table[devid];
   679		if (iommu && (!iommu->confbase))
   680			iommu = NULL;
   681		return iommu;
   682	}
   683	
 > 684	struct iommu_device *iommu_init_device(struct device *dev)
   685	{
   686		struct la_iommu_dev_data *dev_data;
   687		struct pci_dev	*pdev = to_pci_dev(dev);
   688		struct pci_bus	*bus = pdev->bus;
   689		unsigned short devid;
   690		struct loongarch_iommu *iommu = NULL;
   691		struct iommu_device *iommu_dev = ERR_PTR(-ENODEV);
   692	
   693		if (!dev_is_pci(dev))
   694			return iommu_dev;
   695	
   696		if (dev->archdata.iommu != NULL || bus == NULL) {
   697			pr_info("LA-IOMMU: bdf:0x%x has added\n", pdev->devfn);
   698			return iommu_dev;
   699		}
   700		iommu = find_iommu_by_dev(pdev);
   701		if (iommu == NULL) {
   702			pci_info(pdev, "%s find iommu failed by dev\n", __func__);
   703			return iommu_dev;
   704		}
   705		dev_data = kzalloc(sizeof(*dev_data), GFP_KERNEL);
   706		if (!dev_data)
   707			return iommu_dev;
   708		devid = PCI_DEVID(bus->number, pdev->devfn);
   709		dev_data->bdf = devid;
   710	
   711		pci_info(pdev, "%s bdf %#x iommu dev id %#x\n", __func__, dev_data->bdf, iommu->devid);
   712		/* The initial state is 0, and 1 is added only when attach dev */
   713		dev_data->count = 0;
   714		dev_data->iommu = iommu;
   715		dev_data->dev = dev;
   716		dev->archdata.iommu = dev_data;
   717		iommu_dev = &iommu->iommu_dev;
   718		return iommu_dev;
   719	}
   720	
 > 721	struct iommu_device *la_iommu_probe_device(struct device *dev)
   722	{
   723		return iommu_init_device(dev);
   724	}
   725	
   726	static struct iommu_group *la_iommu_device_group(struct device *dev)
   727	{
   728		struct iommu_group *group;
   729	
   730		/*
   731		 * We don't support devices sharing stream IDs other than PCI RID
   732		 * aliases, since the necessary ID-to-device lookup becomes rather
   733		 * impractical given a potential sparse 32-bit stream ID space.
   734		 */
   735		if (dev_is_pci(dev))
   736			group = pci_device_group(dev);
   737		else
   738			group = generic_device_group(dev);
   739		return group;
   740	}
   741	
   742	static void la_iommu_remove_device(struct device *dev)
   743	{
   744		struct la_iommu_dev_data *dev_data;
   745	
   746		iommu_group_remove_device(dev);
   747		dev_data = dev->archdata.iommu;
   748		dev->archdata.iommu = NULL;
   749		kfree(dev_data);
   750	}
   751	
 > 752	struct iommu_info *get_iommu_info_from_dom(struct dom_info *priv, struct loongarch_iommu *iommu)
   753	{
   754		struct iommu_info *info;
   755	
   756		spin_lock(&priv->lock);
   757		list_for_each_entry(info, &priv->iommu_devlist, list) {
   758			if (info->iommu == iommu) {
   759				spin_unlock(&priv->lock);
   760				return info;
   761			}
   762		}
   763		spin_unlock(&priv->lock);
   764		return NULL;
   765	}
   766	
 > 767	struct iommu_info *domain_attach_iommu(struct dom_info *priv, struct loongarch_iommu *iommu)
   768	{
   769		u32 dir_ctrl;
   770		struct iommu_info *info;
   771		unsigned long phys;
   772	
   773		info = get_iommu_info_from_dom(priv, iommu);
   774		if (info)
   775			return info;
   776	
   777		info = kzalloc(sizeof(struct iommu_info), GFP_KERNEL_ACCOUNT);
   778		if (!info)
   779			return NULL;
   780	
   781		INIT_LIST_HEAD(&info->dev_list);
   782		info->iommu = iommu;
   783		info->id = domain_id_alloc(iommu);
   784		if (info->id == -1) {
   785			pr_info("%s alloc id for domain failed\n", __func__);
   786			kfree(info);
   787			return NULL;
   788		}
   789	
   790		phys = virt_to_phys(priv->pgd);
   791		dir_ctrl = (IOMMU_LEVEL_STRIDE << 26) | (IOMMU_LEVEL_SHIFT(2) << 20);
   792		dir_ctrl |= (IOMMU_LEVEL_STRIDE <<  16) | (IOMMU_LEVEL_SHIFT(1) << 10);
   793		dir_ctrl |= (IOMMU_LEVEL_STRIDE << 6) | IOMMU_LEVEL_SHIFT(0);
   794		iommu_write_regl(iommu, LA_IOMMU_DIR_CTRL(info->id), dir_ctrl);
   795		iommu_write_regl(iommu, LA_IOMMU_PGD_HI(info->id), phys >> 32);
   796		iommu_write_regl(iommu, LA_IOMMU_PGD_LO(info->id), phys & UINT_MAX);
   797	
   798		spin_lock(&priv->lock);
   799		list_add(&info->list, &priv->iommu_devlist);
   800		spin_unlock(&priv->lock);
   801		add_domain_to_list(iommu, priv);
   802		return info;
   803	}
   804	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:openEuler-1.0-LTS 1743/1743] net/can/j1939/main.o: warning: objtool: missing symbol for section .init.text
                        
                        
by kernel test robot 07 Aug '25
                    by kernel test robot 07 Aug '25
07 Aug '25
                    
                        tree:   https://gitee.com/openeuler/kernel.git openEuler-1.0-LTS
head:   464c0bf980f96a307759f809825ab0a3b59f8b70
commit: e0c2ee9edcacfdda0e806166eaec1310cdf9e324 [1743/1743] can: add support of SAE J1939 protocol
config: x86_64-buildonly-randconfig-2001-20250802 (https://download.01.org/0day-ci/archive/20250806/202508061835.mLI2S5GX-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061835.mLI2S5GX-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/202508061835.mLI2S5GX-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> net/can/j1939/main.o: warning: objtool: missing symbol for section .init.text
--
   scripts/sign-file.c:89:14: warning: 'ERR_get_error_line' is deprecated [-Wdeprecated-declarations]
      89 |         while ((e = ERR_get_error_line(&file, &line))) {
         |                     ^
   /usr/include/openssl/err.h:422:1: note: 'ERR_get_error_line' has been explicitly marked deprecated here
     422 | OSSL_DEPRECATEDIN_3_0
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/sign-file.c:102:9: warning: 'ERR_get_error_line' is deprecated [-Wdeprecated-declarations]
     102 |         while (ERR_get_error_line(&file, &line)) {}
         |                ^
   /usr/include/openssl/err.h:422:1: note: 'ERR_get_error_line' has been explicitly marked deprecated here
     422 | OSSL_DEPRECATEDIN_3_0
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/extract-cert.c:46:14scripts/sign-file.c:142:3: warning: 'ENGINE_load_builtin_engines' is deprecated [-Wdeprecated-declarations]
     142 |                 ENGINE_load_builtin_engines();
         |                 ^
   : warning: /usr/include/openssl/engine.h:358:1: note: 'ENGINE_load_builtin_engines' has been explicitly marked deprecated here
     358 | OSSL_DEPRECATEDIN_3_0 void ENGINE_load_builtin_engines(void);
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   'ERR_get_error_line' is deprecated [-Wdeprecated-declarations]
   scripts/sign-file.c:144:7: warning: 'ENGINE_by_id' is deprecated [-Wdeprecated-declarations]
     144 |                 e = ENGINE_by_id("pkcs11");
         |                     ^
   /usr/include/openssl/engine.h:336:1: note: 'ENGINE_by_id' has been explicitly marked deprecated here
     336 | OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_by_id(const char *id);
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
      46 |         while (scripts/sign-file.c:146:7: warning: 'ENGINE_init' is deprecated [-Wdeprecated-declarations]
     146 |                 if (ENGINE_init(e))
         |                     ^
   /usr/include/openssl/engine.h:620:1: note: 'ENGINE_init' has been explicitly marked deprecated here
     620 | OSSL_DEPRECATEDIN_3_0 int ENGINE_init(ENGINE *e);
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
>> (e = ERR_get_errscripts/sign-file.c:151:9: warning: 'ENGINE_ctrl_cmd_string' is deprecated [-Wdeprecated-declarations]
     151 |                         ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0),
         |                              ^
   /usr/include/openssl/engine.h:478:1: note: 'ENGINE_ctrl_cmd_string' has been explicitly marked deprecated here
     478 | OSSL_DEPRECATEDIN_3_0
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   or_liscripts/sign-file.cne(&file, &line))) {
         |                     ^
   /usr/include/openssl/err.h:153:17: warning: 'ENGINE_load_private_key' is deprecated [-Wdeprecated-declarations]
     153 |                 private_key = ENGINE_load_private_key(e, private_key_name,
         |                               ^
   /usr/include/openssl/engine.h:637:1: note: 'ENGINE_load_private_key' has been explicitly marked deprecated here
     637 | OSSL_DEPRECATEDIN_3_0
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   :422:1: note: 'ERR_get_error_line' has been explicitly marked deprecated here
     422 | OSSL_DEPRECATEDIN_3_0
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/extract-cert.c:59:9: warning: 'ERR_get_error_line' is deprecated [-Wdeprecated-declarations]
      59 |         while (ERR_get_error_line(&file, &line)) {}
         |                ^
   /usr/include/openssl/err.h:422:1: note: 'ERR_get_error_line' has been explicitly marked deprecated here
     422 | OSSL_DEPRECATEDIN_3_0
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/extract-cert.c:124:3: warning: 'ENGINE_load_builtin_engines' is deprecated [-Wdeprecated-declarations]
     124 |                 ENGINE_load_builtin_engines();
         |                 ^
   /usr/include/openssl/engine.h:358:1: note: 'ENGINE_load_builtin_engines' has been explicitly marked deprecated here
     358 | OSSL_DEPRECATEDIN_3_0 void ENGINE_load_builtin_engines(void);
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/extract-cert.c:126:7: warning: 'ENGINE_by_id' is deprecated [-Wdeprecated-declarations]
     126 |                 e = ENGINE_by_id("pkcs11");
         |                     ^
   /usr/include/openssl/engine.h:336:1: note: 'ENGINE_by_id' has been explicitly marked deprecated here
     336 | OSSL_DEPRECATEDIN_3_0 ENGINE *ENGINE_by_id(const char *id);
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/extract-cert.c:128:7: warning: 'ENGINE_init' is deprecated [-Wdeprecated-declarations]
     128 |                 if (ENGINE_init(e))
         |                     ^
   /usr/include/openssl/engine.h:620:1: note: 'ENGINE_init' has been explicitly marked deprecated here
     620 | OSSL_DEPRECATEDIN_3_0 int ENGINE_init(ENGINE *e);
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/extract-cert.c:133:9: warning: 'ENGINE_ctrl_cmd_string' is deprecated [-Wdeprecated-declarations]
     133 |                         ERR(!ENGINE_ctrl_cmd_string(e, "PIN", key_pass, 0), "Set PKCS#11 PIN");
         |                              ^
   /usr/include/openssl/engine.h:478:1: note: 'ENGINE_ctrl_cmd_string' has been explicitly marked deprecated here
     478 | OSSL_DEPRECATEDIN_3_0
         | ^
   /usr/include/openssl/macros.h:182:49: note: expanded from macro 'OSSL_DEPRECATEDIN_3_0'
     182 | #   define OSSL_DEPRECATEDIN_3_0                OSSL_DEPRECATED(3.0)
         |                                                 ^
   /usr/include/openssl/macros.h:62:52: note: expanded from macro 'OSSL_DEPRECATED'
      62 | #     define OSSL_DEPRECATED(since) __attribute__((deprecated))
         |                                                    ^
   scripts/extract-cert.c:134:3: warning: 'ENGINE_ctrl_cmd' is deprecated [-Wdeprecated-declarations]
     134 |                 ENGINE_ctrl_cmd(e, "LOAD_CERT_CTRL", 0, &parms, NULL, 1);
         |                 ^
   /usr/include/openssl/engine.h:450:1: note: 'ENGINE_ctrl_cmd' has been explicitly marked deprecated here
     450 | OSSL_DEPRECATEDIN_3_0 int ENGINE_ctrl_cmd(ENGINE *e, const char *cmd_name,
         | ^
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-5.10 3106/3106] ld.lld: error: version script assignment of 'LINUX_2.6' to symbol '__vdso_sgx_enter_enclave' failed: symbol not defined
                        
                        
by kernel test robot 07 Aug '25
                    by kernel test robot 07 Aug '25
07 Aug '25
                    
                        Hi Sean,
FYI, the error/warning still remains.
tree:   https://gitee.com/openeuler/kernel.git OLK-5.10
head:   a8c621aa031669a6835da1431d9765e3bbbc3621
commit: 5476cb89ef2297bd36f8b38e27b54617b6f63236 [3106/3106] x86/vdso: Implement a vDSO for Intel SGX enclave call
config: x86_64-buildonly-randconfig-002-20250806 (https://download.01.org/0day-ci/archive/20250807/202508070026.lRMtLNGR-lkp@…)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250807/202508070026.lRMtLNGR-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/202508070026.lRMtLNGR-lkp@intel.com/
All errors (new ones prefixed by >>):
>> ld.lld: error: version script assignment of 'LINUX_2.6' to symbol '__vdso_sgx_enter_enclave' failed: symbol not defined
>> llvm-objdump: error: 'arch/x86/entry/vdso/vdso64.so.dbg': No such file or directory
--
>> llvm-objcopy: error: 'arch/x86/entry/vdso/vdso64.so.dbg': No such file or directory
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-6.6 2658/2658] crypto/asymmetric_keys/pgp_library.c:189: warning: Function parameter or member 'data' not described in 'pgp_parse_packets'
                        
                        
by kernel test robot 06 Aug '25
                    by kernel test robot 06 Aug '25
06 Aug '25
                    
                        tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   8551213150db5f8eebd27273dae93f6fe258d63a
commit: b78af6579e15dcdff86504da90af77f3e890270e [2658/2658] PGPLIB: Basic packet parser
config: loongarch-randconfig-2005-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061744.hiwFyKYj-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project faa4c4c2dc804c31845d8f036345fac00e016f2d)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061744.hiwFyKYj-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/202508061744.hiwFyKYj-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> crypto/asymmetric_keys/pgp_library.c:189: warning: Function parameter or member 'data' not described in 'pgp_parse_packets'
>> crypto/asymmetric_keys/pgp_library.c:189: warning: Function parameter or member 'datalen' not described in 'pgp_parse_packets'
>> crypto/asymmetric_keys/pgp_library.c:189: warning: Excess function parameter '_data' description in 'pgp_parse_packets'
>> crypto/asymmetric_keys/pgp_library.c:189: warning: Excess function parameter '_datalen' description in 'pgp_parse_packets'
vim +189 crypto/asymmetric_keys/pgp_library.c
   178	
   179	/**
   180	 * pgp_parse_packets - Parse a set of PGP packets
   181	 * @_data: Data to be parsed (updated)
   182	 * @_datalen: Amount of data (updated)
   183	 * @ctx: Parsing context
   184	 *
   185	 * Parse a set of PGP packets [RFC 4880: 4].
   186	 */
   187	int pgp_parse_packets(const u8 *data, size_t datalen,
   188			      struct pgp_parse_context *ctx)
 > 189	{
   190		enum pgp_packet_tag type;
   191		ssize_t pktlen;
   192		u8 headerlen;
   193		int ret;
   194	
   195		while (datalen > 2) {
   196			pktlen = pgp_parse_packet_header(&data, &datalen, &type,
   197							 &headerlen);
   198			if (pktlen < 0)
   199				return pktlen;
   200	
   201			if ((ctx->types_of_interest >> type) & 1) {
   202				ret = ctx->process_packet(ctx, type, headerlen,
   203							  data, pktlen);
   204				if (ret < 0)
   205					return ret;
   206			}
   207			data += pktlen;
   208			datalen -= pktlen;
   209		}
   210	
   211		if (datalen != 0) {
   212			pr_debug("Excess octets in packet stream\n");
   213			return -EBADMSG;
   214		}
   215	
   216		return 0;
   217	}
   218	EXPORT_SYMBOL_GPL(pgp_parse_packets);
   219	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-6.6 2658/2658] net/ipv4/tcp_comp.c:740:6: warning: no previous prototype for function 'comp_stream_read'
                        
                        
by kernel test robot 06 Aug '25
                    by kernel test robot 06 Aug '25
06 Aug '25
                    
                        tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   8551213150db5f8eebd27273dae93f6fe258d63a
commit: c31dcf6c5ab41f07da38d3f270987807735ec93e [2658/2658] tcp_comp: implement tcp compression
config: loongarch-randconfig-2005-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061529.suELGrA5-lkp@…)
compiler: clang version 22.0.0git (https://github.com/llvm/llvm-project faa4c4c2dc804c31845d8f036345fac00e016f2d)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061529.suELGrA5-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508061529.suELGrA5-lkp@intel.com/
All warnings (new ones prefixed by >>):
   In file included from net/ipv4/tcp_comp.c:8:
   In file included from include/linux/skmsg.h:7:
   In file included from include/linux/bpf.h:20:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/loongarch/include/asm/elf.h:13:
   In file included from arch/loongarch/include/asm/vdso.h:10:
   In file included from include/linux/mm.h:2181:
   include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   In file included from net/ipv4/tcp_comp.c:8:
   In file included from include/linux/skmsg.h:13:
   In file included from include/net/tcp.h:32:
   In file included from include/net/inet_hashtables.h:26:
   include/net/ip.h:463:14: warning: default initialization of an object of type 'typeof (rt->dst.expires)' (aka 'const unsigned long') leaves the object uninitialized [-Wdefault-const-init-var-unsafe]
     463 |                 if (mtu && time_before(jiffies, rt->dst.expires))
         |                            ^
   include/linux/jiffies.h:135:26: note: expanded from macro 'time_before'
     135 | #define time_before(a,b)        time_after(b,a)
         |                                 ^
   include/linux/jiffies.h:125:3: note: expanded from macro 'time_after'
     125 |         (typecheck(unsigned long, a) && \
         |          ^
   include/linux/typecheck.h:11:12: note: expanded from macro 'typecheck'
      11 |         typeof(x) __dummy2; \
         |                   ^
>> net/ipv4/tcp_comp.c:740:6: warning: no previous prototype for function 'comp_stream_read' [-Wmissing-prototypes]
     740 | bool comp_stream_read(struct sock *sk)
         |      ^
   net/ipv4/tcp_comp.c:740:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     740 | bool comp_stream_read(struct sock *sk)
         | ^
         | static 
>> net/ipv4/tcp_comp.c:779:6: warning: no previous prototype for function 'comp_setup_strp' [-Wmissing-prototypes]
     779 | void comp_setup_strp(struct sock *sk, struct tcp_comp_context *ctx)
         |      ^
   net/ipv4/tcp_comp.c:779:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     779 | void comp_setup_strp(struct sock *sk, struct tcp_comp_context *ctx)
         | ^
         | static 
   7 warnings generated.
vim +/comp_stream_read +740 net/ipv4/tcp_comp.c
   739	
 > 740	bool comp_stream_read(struct sock *sk)
   741	{
   742		struct tcp_comp_context *ctx = comp_get_ctx(sk);
   743	
   744		if (!ctx)
   745			return false;
   746	
   747		if (ctx->rx.pkt || ctx->rx.dpkt)
   748			return true;
   749	
   750		return false;
   751	}
   752	
   753	static void comp_data_ready(struct sock *sk)
   754	{
   755		struct tcp_comp_context *ctx = comp_get_ctx(sk);
   756	
   757		strp_data_ready(&ctx->rx.strp);
   758	}
   759	
   760	static void comp_queue(struct strparser *strp, struct sk_buff *skb)
   761	{
   762		struct tcp_comp_context *ctx = comp_get_ctx(strp->sk);
   763	
   764		ctx->rx.pkt = skb;
   765		strp_pause(strp);
   766		ctx->rx.saved_data_ready(strp->sk);
   767	}
   768	
   769	static int comp_read_size(struct strparser *strp, struct sk_buff *skb)
   770	{
   771		struct strp_msg *rxm = strp_msg(skb);
   772	
   773		if (rxm->offset > skb->len)
   774			return 0;
   775	
   776		return skb->len - rxm->offset;
   777	}
   778	
 > 779	void comp_setup_strp(struct sock *sk, struct tcp_comp_context *ctx)
   780	{
   781		struct strp_callbacks cb;
   782	
   783		memset(&cb, 0, sizeof(cb));
   784		cb.rcv_msg = comp_queue;
   785		cb.parse_msg = comp_read_size;
   786		strp_init(&ctx->rx.strp, sk, &cb);
   787	
   788		write_lock_bh(&sk->sk_callback_lock);
   789		ctx->rx.saved_data_ready = sk->sk_data_ready;
   790		sk->sk_data_ready = comp_data_ready;
   791		write_unlock_bh(&sk->sk_callback_lock);
   792	
   793		strp_check_rcv(&ctx->rx.strp);
   794	}
   795	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [PATCH OLK-6.6] kbuild: userprogs: use correct linker when mixing clang and GNU ld
                        
                        
by Tengda Wu 06 Aug '25
                    by Tengda Wu 06 Aug '25
06 Aug '25
                    
                        From: Thomas Weißschuh <thomas.weissschuh(a)linutronix.de>
mainline inclusion
from mainline-v6.17
commit 936599ca514973d44a766b7376c6bbdc96b6a8cc
category: bugfix
bugzilla: https://gitee.com/openeuler/kernel/issues/ICRNOY
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?…
--------------------------------
The userprogs infrastructure does not expect clang being used with GNU ld
and in that case uses /usr/bin/ld for linking, not the configured $(LD).
This fallback is problematic as it will break when cross-compiling.
Mixing clang and GNU ld is used for example when building for SPARC64,
as ld.lld is not sufficient; see Documentation/kbuild/llvm.rst.
Relax the check around --ld-path so it gets used for all linkers.
Fixes: dfc1b168a8c4 ("kbuild: userprogs: use correct lld when linking through clang")
Cc: stable(a)vger.kernel.org
Signed-off-by: Thomas Weißschuh <thomas.weissschuh(a)linutronix.de>
Reviewed-by: Nathan Chancellor <nathan(a)kernel.org>
Signed-off-by: Masahiro Yamada <masahiroy(a)kernel.org>
Conflicts:
	Makefile
[Context conflicts]
Signed-off-by: Tengda Wu <wutengda2(a)huawei.com>
---
 Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index 4cbc72182f6b..2a6541892eea 100644
--- a/Makefile
+++ b/Makefile
@@ -1060,7 +1060,7 @@ KBUILD_USERCFLAGS  += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD
 KBUILD_USERLDFLAGS += $(filter -m32 -m64 --target=%, $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS))
 
 # userspace programs are linked via the compiler, use the correct linker
-ifeq ($(CONFIG_CC_IS_CLANG)$(CONFIG_LD_IS_LLD),yy)
+ifdef CONFIG_CC_IS_CLANG
 KBUILD_USERLDFLAGS += $(call cc-option, --ld-path=$(LD))
 endif
 
-- 
2.34.1
                    
                  
                  
                          
                            
                            2
                            
                          
                          
                            
                            1
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-5.10 3106/3106] block/bfq-cgroup.c:692: warning: Function parameter or member 'bfqg' not described in '__bfq_bic_change_cgroup'
                        
                        
by kernel test robot 06 Aug '25
                    by kernel test robot 06 Aug '25
06 Aug '25
                    
                        tree:   https://gitee.com/openeuler/kernel.git OLK-5.10
head:   a8c621aa031669a6835da1431d9765e3bbbc3621
commit: b8fcf506e7428600d59004a436f0ce98a21874d7 [3106/3106] bfq: Get rid of __bio_blkcg() usage
config: arm64-randconfig-003-20250806 (https://download.01.org/0day-ci/archive/20250806/202508062043.ijR1VTdp-lkp@…)
compiler: aarch64-linux-gcc (GCC) 9.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508062043.ijR1VTdp-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508062043.ijR1VTdp-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> block/bfq-cgroup.c:692: warning: Function parameter or member 'bfqg' not described in '__bfq_bic_change_cgroup'
>> block/bfq-cgroup.c:692: warning: Excess function parameter 'blkcg' description in '__bfq_bic_change_cgroup'
   block/bfq-cgroup.c:841: warning: Function parameter or member 'ioprio_class' not described in 'bfq_reparent_leaf_entity'
   block/bfq-cgroup.c:871: warning: Function parameter or member 'ioprio_class' not described in 'bfq_reparent_active_queues'
vim +692 block/bfq-cgroup.c
ea25da48086d3b Paolo Valente 2017-04-19  678  
ea25da48086d3b Paolo Valente 2017-04-19  679  /**
ea25da48086d3b Paolo Valente 2017-04-19  680   * __bfq_bic_change_cgroup - move @bic to @cgroup.
ea25da48086d3b Paolo Valente 2017-04-19  681   * @bfqd: the queue descriptor.
ea25da48086d3b Paolo Valente 2017-04-19  682   * @bic: the bic to move.
ea25da48086d3b Paolo Valente 2017-04-19  683   * @blkcg: the blk-cgroup to move to.
ea25da48086d3b Paolo Valente 2017-04-19  684   *
8f9bebc33dd718 Paolo Valente 2017-06-05  685   * Move bic to blkcg, assuming that bfqd->lock is held; which makes
8f9bebc33dd718 Paolo Valente 2017-06-05  686   * sure that the reference to cgroup is valid across the call (see
8f9bebc33dd718 Paolo Valente 2017-06-05  687   * comments in bfq_bic_update_cgroup on this issue)
ea25da48086d3b Paolo Valente 2017-04-19  688   */
b8fcf506e74286 Jan Kara      2022-11-21  689  static void *__bfq_bic_change_cgroup(struct bfq_data *bfqd,
ea25da48086d3b Paolo Valente 2017-04-19  690  				     struct bfq_io_cq *bic,
b8fcf506e74286 Jan Kara      2022-11-21  691  				     struct bfq_group *bfqg)
ea25da48086d3b Paolo Valente 2017-04-19 @692  {
ea25da48086d3b Paolo Valente 2017-04-19  693  	struct bfq_queue *async_bfqq = bic_to_bfqq(bic, 0);
ea25da48086d3b Paolo Valente 2017-04-19  694  	struct bfq_queue *sync_bfqq = bic_to_bfqq(bic, 1);
ea25da48086d3b Paolo Valente 2017-04-19  695  	struct bfq_entity *entity;
ea25da48086d3b Paolo Valente 2017-04-19  696  
ea25da48086d3b Paolo Valente 2017-04-19  697  	if (async_bfqq) {
ea25da48086d3b Paolo Valente 2017-04-19  698  		entity = &async_bfqq->entity;
ea25da48086d3b Paolo Valente 2017-04-19  699  
ea25da48086d3b Paolo Valente 2017-04-19  700  		if (entity->sched_data != &bfqg->sched_data) {
ea25da48086d3b Paolo Valente 2017-04-19  701  			bic_set_bfqq(bic, NULL, 0);
c8997736650060 Paolo Valente 2020-03-21  702  			bfq_release_process_ref(bfqd, async_bfqq);
ea25da48086d3b Paolo Valente 2017-04-19  703  		}
ea25da48086d3b Paolo Valente 2017-04-19  704  	}
ea25da48086d3b Paolo Valente 2017-04-19  705  
ea25da48086d3b Paolo Valente 2017-04-19  706  	if (sync_bfqq) {
0154382317ee69 Jan Kara      2022-09-29  707  		if (!sync_bfqq->new_bfqq && !bfq_bfqq_coop(sync_bfqq)) {
0154382317ee69 Jan Kara      2022-09-29  708  			/* We are the only user of this bfqq, just move it */
0154382317ee69 Jan Kara      2022-09-29  709  			if (sync_bfqq->entity.sched_data != &bfqg->sched_data)
ea25da48086d3b Paolo Valente 2017-04-19  710  				bfq_bfqq_move(bfqd, sync_bfqq, bfqg);
0154382317ee69 Jan Kara      2022-09-29  711  		} else {
0154382317ee69 Jan Kara      2022-09-29  712  			struct bfq_queue *bfqq;
0154382317ee69 Jan Kara      2022-09-29  713  
0154382317ee69 Jan Kara      2022-09-29  714  			/*
0154382317ee69 Jan Kara      2022-09-29  715  			 * The queue was merged to a different queue. Check
0154382317ee69 Jan Kara      2022-09-29  716  			 * that the merge chain still belongs to the same
0154382317ee69 Jan Kara      2022-09-29  717  			 * cgroup.
0154382317ee69 Jan Kara      2022-09-29  718  			 */
0154382317ee69 Jan Kara      2022-09-29  719  			for (bfqq = sync_bfqq; bfqq; bfqq = bfqq->new_bfqq)
0154382317ee69 Jan Kara      2022-09-29  720  				if (bfqq->entity.sched_data !=
0154382317ee69 Jan Kara      2022-09-29  721  				    &bfqg->sched_data)
0154382317ee69 Jan Kara      2022-09-29  722  					break;
0154382317ee69 Jan Kara      2022-09-29  723  			if (bfqq) {
0154382317ee69 Jan Kara      2022-09-29  724  				/*
0154382317ee69 Jan Kara      2022-09-29  725  				 * Some queue changed cgroup so the merge is
0154382317ee69 Jan Kara      2022-09-29  726  				 * not valid anymore. We cannot easily just
0154382317ee69 Jan Kara      2022-09-29  727  				 * cancel the merge (by clearing new_bfqq) as
0154382317ee69 Jan Kara      2022-09-29  728  				 * there may be other processes using this
0154382317ee69 Jan Kara      2022-09-29  729  				 * queue and holding refs to all queues below
0154382317ee69 Jan Kara      2022-09-29  730  				 * sync_bfqq->new_bfqq. Similarly if the merge
0154382317ee69 Jan Kara      2022-09-29  731  				 * already happened, we need to detach from
0154382317ee69 Jan Kara      2022-09-29  732  				 * bfqq now so that we cannot merge bio to a
0154382317ee69 Jan Kara      2022-09-29  733  				 * request from the old cgroup.
0154382317ee69 Jan Kara      2022-09-29  734  				 */
0154382317ee69 Jan Kara      2022-09-29  735  				bfq_put_cooperator(sync_bfqq);
0154382317ee69 Jan Kara      2022-09-29  736  				bfq_release_process_ref(bfqd, sync_bfqq);
0154382317ee69 Jan Kara      2022-09-29  737  				bic_set_bfqq(bic, NULL, 1);
0154382317ee69 Jan Kara      2022-09-29  738  			}
0154382317ee69 Jan Kara      2022-09-29  739  		}
ea25da48086d3b Paolo Valente 2017-04-19  740  	}
ea25da48086d3b Paolo Valente 2017-04-19  741  
ea25da48086d3b Paolo Valente 2017-04-19  742  	return bfqg;
ea25da48086d3b Paolo Valente 2017-04-19  743  }
ea25da48086d3b Paolo Valente 2017-04-19  744  
:::::: The code at line 692 was first introduced by commit
:::::: ea25da48086d3bbebf3a2eeff387ea00ed96f5c4 block, bfq: split bfq-iosched.c into multiple source files
:::::: TO: Paolo Valente <paolo.valente(a)linaro.org>
:::::: CC: Jens Axboe <axboe(a)fb.com>
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-5.10 3106/3106] drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:752:6: warning: no previous prototype for 'ngbe_add_uc_addr'
                        
                        
by kernel test robot 06 Aug '25
                    by kernel test robot 06 Aug '25
06 Aug '25
                    
                        tree:   https://gitee.com/openeuler/kernel.git OLK-5.10
head:   a8c621aa031669a6835da1431d9765e3bbbc3621
commit: a5961b4bc6ce09a70902686ecc848a47493a9251 [3106/3106] openeuler: net: ngbe: add ngbe module support
config: x86_64-buildonly-randconfig-2003-20250806 (https://download.01.org/0day-ci/archive/20250806/202508061443.vbBAmdyk-lkp@…)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508061443.vbBAmdyk-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508061443.vbBAmdyk-lkp@intel.com/
All warnings (new ones prefixed by >>):
   In file included from drivers/net/ethernet/netswift/ngbe/ngbe_phy.h:8,
                    from drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:6:
   drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb':
   drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable]
     741 |         u32 cur_diff = 0;
         |             ^~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c: At top level:
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:752:6: warning: no previous prototype for 'ngbe_add_uc_addr' [-Wmissing-prototypes]
     752 | void ngbe_add_uc_addr(struct ngbe_hw *hw, u8 *addr, u32 vmdq)
         |      ^~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:885:6: warning: no previous prototype for 'ngbe_set_mta' [-Wmissing-prototypes]
     885 | void ngbe_set_mta(struct ngbe_hw *hw, u8 *mc_addr)
         |      ^~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:1889:5: warning: no previous prototype for 'ngbe_host_interface_pass_command' [-Wmissing-prototypes]
    1889 | s32 ngbe_host_interface_pass_command(struct ngbe_hw *hw, u32 *buffer,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2186:5: warning: no previous prototype for 'ngbe_setup_mac_link_hostif' [-Wmissing-prototypes]
    2186 | s32 ngbe_setup_mac_link_hostif(struct ngbe_hw *hw, u32 speed)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2222:5: warning: no previous prototype for 'ngbe_crc16_ccitt' [-Wmissing-prototypes]
    2222 | u16 ngbe_crc16_ccitt(const u8 *buf, int size)
         |     ^~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2339:4: warning: no previous prototype for 'fmgr_cmd_op' [-Wmissing-prototypes]
    2339 | u8 fmgr_cmd_op(struct ngbe_hw *hw, u32 cmd, u32 cmd_addr)
         |    ^~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2360:4: warning: no previous prototype for 'fmgr_usr_cmd_op' [-Wmissing-prototypes]
    2360 | u8 fmgr_usr_cmd_op(struct ngbe_hw *hw, u32 usr_cmd)
         |    ^~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2370:4: warning: no previous prototype for 'flash_erase_chip' [-Wmissing-prototypes]
    2370 | u8 flash_erase_chip(struct ngbe_hw *hw)
         |    ^~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2376:4: warning: no previous prototype for 'flash_erase_sector' [-Wmissing-prototypes]
    2376 | u8 flash_erase_sector(struct ngbe_hw *hw, u32 sec_addr)
         |    ^~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2392:4: warning: no previous prototype for 'flash_write_dword' [-Wmissing-prototypes]
    2392 | u8 flash_write_dword(struct ngbe_hw *hw, u32 addr, u32 dword)
         |    ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3296:5: warning: no previous prototype for 'ngbe_get_copper_link_capabilities' [-Wmissing-prototypes]
    3296 | s32 ngbe_get_copper_link_capabilities(struct ngbe_hw *hw,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3456:5: warning: no previous prototype for 'ngbe_reset_misc' [-Wmissing-prototypes]
    3456 | int ngbe_reset_misc(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3910:5: warning: no previous prototype for 'ngbe_read_ee_hostif_data' [-Wmissing-prototypes]
    3910 | s32 ngbe_read_ee_hostif_data(struct ngbe_hw *hw, u16 offset,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3981:5: warning: no previous prototype for 'ngbe_phy_led_oem_chk' [-Wmissing-prototypes]
    3981 | s32 ngbe_phy_led_oem_chk(struct ngbe_hw *hw, u32 *data)
         |     ^~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:4163:5: warning: no previous prototype for 'ngbe_read_ee_hostif_data32' [-Wmissing-prototypes]
    4163 | s32 ngbe_read_ee_hostif_data32(struct ngbe_hw *hw, u16 offset,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:4225:5: warning: no previous prototype for 'ngbe_write_ee_hostif_data' [-Wmissing-prototypes]
    4225 | s32 ngbe_write_ee_hostif_data(struct ngbe_hw *hw, u16 offset,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:4282:5: warning: no previous prototype for 'ngbe_write_ee_hostif_data32' [-Wmissing-prototypes]
    4282 | s32 ngbe_write_ee_hostif_data32(struct ngbe_hw *hw, u16 offset,
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2689:17: warning: 'ngbe_emc_therm_limit' defined but not used [-Wunused-const-variable=]
    2689 | static const u8 ngbe_emc_therm_limit[4] = {
         |                 ^~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2682:17: warning: 'ngbe_emc_temp_data' defined but not used [-Wunused-const-variable=]
    2682 | static const u8 ngbe_emc_temp_data[4] = {
         |                 ^~~~~~~~~~~~~~~~~~
--
   In file included from drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:5:
   drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb':
   drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable]
     741 |         u32 cur_diff = 0;
         |             ^~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c: At top level:
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:113:5: warning: no previous prototype for 'ngbe_poll_for_msg' [-Wmissing-prototypes]
     113 | int ngbe_poll_for_msg(struct ngbe_hw *hw, u16 mbx_id)
         |     ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:143:5: warning: no previous prototype for 'ngbe_poll_for_ack' [-Wmissing-prototypes]
     143 | int ngbe_poll_for_ack(struct ngbe_hw *hw, u16 mbx_id)
         |     ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:244:5: warning: no previous prototype for 'ngbe_read_v2p_mailbox' [-Wmissing-prototypes]
     244 | u32 ngbe_read_v2p_mailbox(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:262:5: warning: no previous prototype for 'ngbe_check_for_bit_vf' [-Wmissing-prototypes]
     262 | int ngbe_check_for_bit_vf(struct ngbe_hw *hw, u32 mask)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:278:5: warning: no previous prototype for 'ngbe_check_for_msg_vf' [-Wmissing-prototypes]
     278 | int ngbe_check_for_msg_vf(struct ngbe_hw *hw, u16 __always_unused mbx_id)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:298:5: warning: no previous prototype for 'ngbe_check_for_ack_vf' [-Wmissing-prototypes]
     298 | int ngbe_check_for_ack_vf(struct ngbe_hw *hw, u16 __always_unused mbx_id)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:318:5: warning: no previous prototype for 'ngbe_check_for_rst_vf' [-Wmissing-prototypes]
     318 | int ngbe_check_for_rst_vf(struct ngbe_hw *hw, u16 __always_unused mbx_id)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:337:5: warning: no previous prototype for 'ngbe_obtain_mbx_lock_vf' [-Wmissing-prototypes]
     337 | int ngbe_obtain_mbx_lock_vf(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:365:5: warning: no previous prototype for 'ngbe_write_mbx_vf' [-Wmissing-prototypes]
     365 | int ngbe_write_mbx_vf(struct ngbe_hw *hw, u32 *msg, u16 size,
         |     ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:403:5: warning: no previous prototype for 'ngbe_read_mbx_vf' [-Wmissing-prototypes]
     403 | int ngbe_read_mbx_vf(struct ngbe_hw *hw, u32 *msg, u16 size,
         |     ^~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:461:5: warning: no previous prototype for 'ngbe_check_for_bit_pf' [-Wmissing-prototypes]
     461 | int ngbe_check_for_bit_pf(struct ngbe_hw *hw, u32 mask)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:481:5: warning: no previous prototype for 'ngbe_check_for_msg_pf' [-Wmissing-prototypes]
     481 | int ngbe_check_for_msg_pf(struct ngbe_hw *hw, u16 vf)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:501:5: warning: no previous prototype for 'ngbe_check_for_ack_pf' [-Wmissing-prototypes]
     501 | int ngbe_check_for_ack_pf(struct ngbe_hw *hw, u16 vf)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:521:5: warning: no previous prototype for 'ngbe_check_for_rst_pf' [-Wmissing-prototypes]
     521 | int ngbe_check_for_rst_pf(struct ngbe_hw *hw, u16 vf)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:544:5: warning: no previous prototype for 'ngbe_obtain_mbx_lock_pf' [-Wmissing-prototypes]
     544 | int ngbe_obtain_mbx_lock_pf(struct ngbe_hw *hw, u16 vf)
         |     ^~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:572:5: warning: no previous prototype for 'ngbe_write_mbx_pf' [-Wmissing-prototypes]
     572 | int ngbe_write_mbx_pf(struct ngbe_hw *hw, u32 *msg, u16 size,
         |     ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_mbx.c:612:5: warning: no previous prototype for 'ngbe_read_mbx_pf' [-Wmissing-prototypes]
     612 | int ngbe_read_mbx_pf(struct ngbe_hw *hw, u32 *msg, u16 size,
         |     ^~~~~~~~~~~~~~~~
--
   In file included from drivers/net/ethernet/netswift/ngbe/ngbe_ptp.c:4:
   drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb':
   drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable]
     741 |         u32 cur_diff = 0;
         |             ^~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_ptp.c: In function 'ngbe_ptp_check_pps_event':
>> drivers/net/ethernet/netswift/ngbe/ngbe_ptp.c:253:32: warning: variable 'event' set but not used [-Wunused-but-set-variable]
     253 |         struct ptp_clock_event event;
         |                                ^~~~~
--
   In file included from drivers/net/ethernet/netswift/ngbe/ngbe_phy.h:8,
                    from drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:4:
   drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb':
   drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable]
     741 |         u32 cur_diff = 0;
         |             ^~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_phy.c: At top level:
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:16:6: warning: no previous prototype for 'ngbe_check_reset_blocked' [-Wmissing-prototypes]
      16 | bool ngbe_check_reset_blocked(struct ngbe_hw *hw)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:33:5: warning: no previous prototype for 'ngbe_phy_read_reg' [-Wmissing-prototypes]
      33 | s32 ngbe_phy_read_reg(struct ngbe_hw *hw,
         |     ^~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:56:5: warning: no previous prototype for 'ngbe_phy_write_reg' [-Wmissing-prototypes]
      56 | s32 ngbe_phy_write_reg(struct ngbe_hw *hw,
         |     ^~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:74:5: warning: no previous prototype for 'ngbe_check_internal_phy_id' [-Wmissing-prototypes]
      74 | s32 ngbe_check_internal_phy_id(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:273:5: warning: no previous prototype for 'ngbe_check_mdi_phy_id' [-Wmissing-prototypes]
     273 | s32 ngbe_check_mdi_phy_id(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:337:6: warning: no previous prototype for 'ngbe_validate_phy_addr' [-Wmissing-prototypes]
     337 | bool ngbe_validate_phy_addr(struct ngbe_hw *hw, u32 phy_addr)
         |      ^~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:353:5: warning: no previous prototype for 'ngbe_check_yt_phy_id' [-Wmissing-prototypes]
     353 | s32 ngbe_check_yt_phy_id(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1242:5: warning: no previous prototype for 'ngbe_phy_get_advertised_pause' [-Wmissing-prototypes]
    1242 | s32 ngbe_phy_get_advertised_pause(struct ngbe_hw *hw, u8 *pause_bit)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1279:5: warning: no previous prototype for 'ngbe_phy_get_lp_advertised_pause' [-Wmissing-prototypes]
    1279 | s32 ngbe_phy_get_lp_advertised_pause(struct ngbe_hw *hw, u8 *pause_bit)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1324:5: warning: no previous prototype for 'ngbe_phy_set_pause_advertisement' [-Wmissing-prototypes]
    1324 | s32 ngbe_phy_set_pause_advertisement(struct ngbe_hw *hw, u16 pause_bit)
         |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_phy.c:1450:5: warning: no previous prototype for 'ngbe_phy_setup' [-Wmissing-prototypes]
    1450 | s32 ngbe_phy_setup(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~
--
   In file included from drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c:15:
   drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb':
   drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable]
     741 |         u32 cur_diff = 0;
         |             ^~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c: At top level:
>> drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c:128:5: warning: no previous prototype for 'ngbe_get_link_ksettings' [-Wmissing-prototypes]
     128 | int ngbe_get_link_ksettings(struct net_device *netdev,
         |     ^~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c: In function 'ngbe_set_link_ksettings':
>> drivers/net/ethernet/netswift/ngbe/ngbe_ethtool.c:318:25: warning: variable 'old' set but not used [-Wunused-but-set-variable]
     318 |         u32 advertised, old;
         |                         ^~~
--
   In file included from drivers/net/ethernet/netswift/ngbe/ngbe_main.c:23:
   drivers/net/ethernet/netswift/ngbe/ngbe.h: In function 'ngbe_misc_isb':
   drivers/net/ethernet/netswift/ngbe/ngbe.h:741:13: warning: variable 'cur_diff' set but not used [-Wunused-but-set-variable]
     741 |         u32 cur_diff = 0;
         |             ^~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c: At top level:
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:139:6: warning: no previous prototype for 'ngbe_service_event_schedule' [-Wmissing-prototypes]
     139 | void ngbe_service_event_schedule(struct ngbe_adapter *adapter)
         |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c: In function 'ngbe_tx_timeout':
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:401:14: warning: variable 'real_tx_hang' set but not used [-Wunused-but-set-variable]
     401 |         bool real_tx_hang = false;
         |              ^~~~~~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c: At top level:
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3159:6: warning: no previous prototype for 'ngbe_configure_isb' [-Wmissing-prototypes]
    3159 | void ngbe_configure_isb(struct ngbe_adapter *adapter)
         |      ^~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3173:6: warning: no previous prototype for 'ngbe_configure_port' [-Wmissing-prototypes]
    3173 | void ngbe_configure_port(struct ngbe_adapter *adapter)
         |      ^~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3529:6: warning: no previous prototype for 'ngbe_disable_device' [-Wmissing-prototypes]
    3529 | void ngbe_disable_device(struct ngbe_adapter *adapter)
         |      ^~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3644:5: warning: no previous prototype for 'ngbe_init_shared_code' [-Wmissing-prototypes]
    3644 | s32 ngbe_init_shared_code(struct ngbe_hw *hw)
         |     ^~~~~~~~~~~~~~~~~~~~~
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:5791:5: warning: no previous prototype for 'ngbe_skb_pad_nonzero' [-Wmissing-prototypes]
    5791 | int ngbe_skb_pad_nonzero(struct sk_buff *skb, int pad)
         |     ^~~~~~~~~~~~~~~~~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c: In function 'ngbe_mii_ioctl':
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:5989:20: warning: variable 'devad' set but not used [-Wunused-but-set-variable]
    5989 |         int prtad, devad, ret = 0;
         |                    ^~~~~
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:5989:13: warning: variable 'prtad' set but not used [-Wunused-but-set-variable]
    5989 |         int prtad, devad, ret = 0;
         |             ^~~~~
--
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:602: warning: Function parameter or member 'pools' not described in 'ngbe_set_rar'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:602: warning: Excess function parameter 'vmdq' description in 'ngbe_set_rar'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:753: warning: Function parameter or member 'vmdq' not described in 'ngbe_add_uc_addr'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:886: warning: Function parameter or member 'mc_addr' not described in 'ngbe_set_mta'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:886: warning: Excess function parameter 'hash_value' description in 'ngbe_set_mta'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:1505: warning: Function parameter or member 'pool' not described in 'ngbe_set_vmdq'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:1505: warning: Excess function parameter 'vmdq' description in 'ngbe_set_vmdq'
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2340: warning: Function parameter or member 'hw' not described in 'fmgr_cmd_op'
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2340: warning: Function parameter or member 'cmd' not described in 'fmgr_cmd_op'
>> drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2340: warning: Function parameter or member 'cmd_addr' not described in 'fmgr_cmd_op'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2703: warning: bad line:                        (8.1542E-08)N^3 + (-1.6743E-11)N^4
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:2710: warning: Excess function parameter 'data' description in 'ngbe_get_thermal_sensor_data'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3441: warning: Function parameter or member 'need_restart_AN' not described in 'ngbe_setup_copper_link'
   drivers/net/ethernet/netswift/ngbe/ngbe_hw.c:3441: warning: Excess function parameter 'autoneg_wait_to_complete' description in 'ngbe_setup_copper_link'
--
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:226: warning: Function parameter or member 'quiet' not described in 'ngbe_read_reg'
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:398: warning: Function parameter or member 'txqueue' not described in 'ngbe_tx_timeout'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:1608: warning: Function parameter or member 'queues' not described in 'ngbe_irq_enable'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:1608: warning: Function parameter or member 'flush' not described in 'ngbe_irq_enable'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:1997: warning: Function parameter or member 'adapter' not described in 'ngbe_configure_msi_and_legacy'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:2389: warning: Function parameter or member 'adapter' not described in 'ngbe_configure_bridge_mode'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:2856: warning: Function parameter or member 'pool' not described in 'ngbe_write_uc_addr_list'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:3684: warning: cannot understand function prototype: 'const u32 def_rss_key[10] = '
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4267: warning: Function parameter or member 'pdev' not described in '__ngbe_shutdown'
>> drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4267: warning: Function parameter or member 'enable_wake' not described in '__ngbe_shutdown'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4558: warning: Function parameter or member 'adapter' not described in 'ngbe_check_hang_subtask'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4620: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_update_link_status'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4716: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_link_is_up'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4761: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_link_is_down'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4828: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_flush_tx'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4898: warning: Function parameter or member 'adapter' not described in 'ngbe_watchdog_subtask'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4927: warning: Function parameter or member 't' not described in 'ngbe_service_timer'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:4927: warning: Excess function parameter 'data' description in 'ngbe_service_timer'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6022: warning: Function parameter or member 'dev' not described in 'ngbe_setup_tc'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6022: warning: Excess function parameter 'netdev' description in 'ngbe_setup_tc'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6273: warning: Excess function parameter 'device_id' description in 'ngbe_wol_supported'
   drivers/net/ethernet/netswift/ngbe/ngbe_main.c:6273: warning: Excess function parameter 'subdev_id' description in 'ngbe_wol_supported'
vim +/ngbe_add_uc_addr +752 drivers/net/ethernet/netswift/ngbe/ngbe_hw.c
   589	
   590	/**
   591	 *  ngbe_set_rar - Set Rx address register
   592	 *  @hw: pointer to hardware structure
   593	 *  @index: Receive address register to write
   594	 *  @addr: Address to put into receive address register
   595	 *  @vmdq: VMDq "set" or "pool" index
   596	 *  @enable_addr: set flag that address is active
   597	 *
   598	 *  Puts an ethernet address into a receive address register.
   599	 **/
   600	s32 ngbe_set_rar(struct ngbe_hw *hw, u32 index, u8 *addr, u64 pools,
   601				  u32 enable_addr)
 > 602	{
   603		u32 rar_low, rar_high;
   604		u32 rar_entries = hw->mac.num_rar_entries;
   605	
   606		/* Make sure we are using a valid rar index range */
   607		if (index >= rar_entries) {
   608			ERROR_REPORT2(NGBE_ERROR_ARGUMENT,
   609				     "RAR index %d is out of range.\n", index);
   610			return NGBE_ERR_INVALID_ARGUMENT;
   611		}
   612	
   613		/* select the MAC address */
   614		wr32(hw, NGBE_PSR_MAC_SWC_IDX, index);
   615	
   616		/* setup VMDq pool mapping */
   617		wr32(hw, NGBE_PSR_MAC_SWC_VM, pools & 0xFFFFFFFF);
   618	
   619		/* HW expects these in little endian so we reverse the byte
   620		 * order from network order (big endian) to little endian
   621		 *
   622		 * Some parts put the VMDq setting in the extra RAH bits,
   623		 * so save everything except the lower 16 bits that hold part
   624		 * of the address and the address valid bit.
   625		 */
   626		rar_low = ((u32)addr[5] |
   627			  ((u32)addr[4] << 8) |
   628			  ((u32)addr[3] << 16) |
   629			  ((u32)addr[2] << 24));
   630		rar_high = ((u32)addr[1] |
   631			   ((u32)addr[0] << 8));
   632		if (enable_addr != 0)
   633			rar_high |= NGBE_PSR_MAC_SWC_AD_H_AV;
   634	
   635		wr32(hw, NGBE_PSR_MAC_SWC_AD_L, rar_low);
   636		wr32m(hw, NGBE_PSR_MAC_SWC_AD_H,
   637			(NGBE_PSR_MAC_SWC_AD_H_AD(~0) |
   638			 NGBE_PSR_MAC_SWC_AD_H_ADTYPE(~0) |
   639			 NGBE_PSR_MAC_SWC_AD_H_AV),
   640			rar_high);
   641	
   642		return 0;
   643	}
   644	
   645	/**
   646	 *  ngbe_clear_rar - Remove Rx address register
   647	 *  @hw: pointer to hardware structure
   648	 *  @index: Receive address register to write
   649	 *
   650	 *  Clears an ethernet address from a receive address register.
   651	 **/
   652	s32 ngbe_clear_rar(struct ngbe_hw *hw, u32 index)
   653	{
   654		u32 rar_entries = hw->mac.num_rar_entries;
   655	
   656		/* Make sure we are using a valid rar index range */
   657		if (index >= rar_entries) {
   658			ERROR_REPORT2(NGBE_ERROR_ARGUMENT,
   659				     "RAR index %d is out of range.\n", index);
   660			return NGBE_ERR_INVALID_ARGUMENT;
   661		}
   662	
   663		/* Some parts put the VMDq setting in the extra RAH bits,
   664		 * so save everything except the lower 16 bits that hold part
   665		 * of the address and the address valid bit.
   666		 */
   667		wr32(hw, NGBE_PSR_MAC_SWC_IDX, index);
   668	
   669		wr32(hw, NGBE_PSR_MAC_SWC_VM, 0);
   670		wr32(hw, NGBE_PSR_MAC_SWC_AD_L, 0);
   671		wr32m(hw, NGBE_PSR_MAC_SWC_AD_H,
   672			(NGBE_PSR_MAC_SWC_AD_H_AD(~0) |
   673			 NGBE_PSR_MAC_SWC_AD_H_ADTYPE(~0) |
   674			 NGBE_PSR_MAC_SWC_AD_H_AV),
   675			0);
   676	
   677		return 0;
   678	}
   679	
   680	/**
   681	 *  ngbe_init_rx_addrs - Initializes receive address filters.
   682	 *  @hw: pointer to hardware structure
   683	 *
   684	 *  Places the MAC address in receive address register 0 and clears the rest
   685	 *  of the receive address registers. Clears the multicast table. Assumes
   686	 *  the receiver is in reset when the routine is called.
   687	 **/
   688	s32 ngbe_init_rx_addrs(struct ngbe_hw *hw)
   689	{
   690		u32 i;
   691		u32 rar_entries = hw->mac.num_rar_entries;
   692		u32 psrctl;
   693	
   694		/* If the current mac address is valid, assume it is a software override
   695		 * to the permanent address.
   696		 * Otherwise, use the permanent address from the eeprom.
   697		 */
   698		if (ngbe_validate_mac_addr(hw->mac.addr) ==
   699			NGBE_ERR_INVALID_MAC_ADDR) {
   700			/* Get the MAC address from the RAR0 for later reference */
   701			TCALL(hw, mac.ops.get_mac_addr, hw->mac.addr);
   702	
   703			DEBUGOUT3(" Keeping Current RAR0 Addr =%.2X %.2X %.2X %.2X %.2X %.2X\n",
   704				hw->mac.addr[0], hw->mac.addr[1],
   705				hw->mac.addr[2], hw->mac.addr[3],
   706				hw->mac.addr[4], hw->mac.addr[5]);
   707		} else {
   708			/* Setup the receive address. */
   709			DEBUGOUT("Overriding MAC Address in RAR[0]\n");
   710			DEBUGOUT3(" New MAC Addr =%.2X %.2X %.2X %.2X %.2X %.2X\n",
   711				hw->mac.addr[0], hw->mac.addr[1],
   712				hw->mac.addr[2], hw->mac.addr[3],
   713				hw->mac.addr[4], hw->mac.addr[5]);
   714	
   715			TCALL(hw, mac.ops.set_rar, 0, hw->mac.addr, 0,
   716				NGBE_PSR_MAC_SWC_AD_H_AV);
   717		}
   718		hw->addr_ctrl.overflow_promisc = 0;
   719	
   720		hw->addr_ctrl.rar_used_count = 1;
   721	
   722		/* Zero out the other receive addresses. */
   723		DEBUGOUT1("Clearing RAR[1-%d]\n", rar_entries - 1);
   724		for (i = 1; i < rar_entries; i++) {
   725			wr32(hw, NGBE_PSR_MAC_SWC_IDX, i);
   726			wr32(hw, NGBE_PSR_MAC_SWC_AD_L, 0);
   727			wr32(hw, NGBE_PSR_MAC_SWC_AD_H, 0);
   728		}
   729	
   730		/* Clear the MTA */
   731		hw->addr_ctrl.mta_in_use = 0;
   732		psrctl = rd32(hw, NGBE_PSR_CTL);
   733		psrctl &= ~(NGBE_PSR_CTL_MO | NGBE_PSR_CTL_MFE);
   734		psrctl |= hw->mac.mc_filter_type << NGBE_PSR_CTL_MO_SHIFT;
   735		wr32(hw, NGBE_PSR_CTL, psrctl);
   736		DEBUGOUT(" Clearing MTA\n");
   737		for (i = 0; i < hw->mac.mcft_size; i++)
   738			wr32(hw, NGBE_PSR_MC_TBL(i), 0);
   739	
   740		TCALL(hw, mac.ops.init_uta_tables);
   741	
   742		return 0;
   743	}
   744	
   745	/**
   746	 *  ngbe_add_uc_addr - Adds a secondary unicast address.
   747	 *  @hw: pointer to hardware structure
   748	 *  @addr: new address
   749	 *
   750	 *  Adds it to unused receive address register or goes into promiscuous mode.
   751	 **/
 > 752	void ngbe_add_uc_addr(struct ngbe_hw *hw, u8 *addr, u32 vmdq)
   753	{
   754		u32 rar_entries = hw->mac.num_rar_entries;
   755		u32 rar;
   756	
   757		DEBUGOUT6(" UC Addr = %.2X %.2X %.2X %.2X %.2X %.2X\n",
   758			  addr[0], addr[1], addr[2], addr[3], addr[4], addr[5]);
   759	
   760		/* Place this address in the RAR if there is room,
   761		 * else put the controller into promiscuous mode
   762		 */
   763		if (hw->addr_ctrl.rar_used_count < rar_entries) {
   764			rar = hw->addr_ctrl.rar_used_count;
   765			TCALL(hw, mac.ops.set_rar, rar, addr, vmdq,
   766				NGBE_PSR_MAC_SWC_AD_H_AV);
   767			DEBUGOUT1("Added a secondary address to RAR[%d]\n", rar);
   768			hw->addr_ctrl.rar_used_count++;
   769		} else {
   770			hw->addr_ctrl.overflow_promisc++;
   771		}
   772	}
   773	
   774	/**
   775	 *  ngbe_update_uc_addr_list - Updates MAC list of secondary addresses
   776	 *  @hw: pointer to hardware structure
   777	 *  @addr_list: the list of new addresses
   778	 *  @addr_count: number of addresses
   779	 *  @next: iterator function to walk the address list
   780	 *
   781	 *  The given list replaces any existing list.  Clears the secondary addrs from
   782	 *  receive address registers.  Uses unused receive address registers for the
   783	 *  first secondary addresses, and falls back to promiscuous mode as needed.
   784	 *
   785	 *  Drivers using secondary unicast addresses must set user_set_promisc when
   786	 *  manually putting the device into promiscuous mode.
   787	 **/
   788	s32 ngbe_update_uc_addr_list(struct ngbe_hw *hw, u8 *addr_list,
   789					      u32 addr_count, ngbe_mc_addr_itr next)
   790	{
   791		u8 *addr;
   792		u32 i;
   793		u32 old_promisc_setting = hw->addr_ctrl.overflow_promisc;
   794		u32 uc_addr_in_use;
   795		u32 vmdq;
   796	
   797		/* Clear accounting of old secondary address list,
   798		 * don't count RAR[0]
   799		 */
   800		uc_addr_in_use = hw->addr_ctrl.rar_used_count - 1;
   801		hw->addr_ctrl.rar_used_count -= uc_addr_in_use;
   802		hw->addr_ctrl.overflow_promisc = 0;
   803	
   804		/* Zero out the other receive addresses */
   805		DEBUGOUT1("Clearing RAR[1-%d]\n", uc_addr_in_use + 1);
   806		for (i = 0; i < uc_addr_in_use; i++) {
   807			wr32(hw, NGBE_PSR_MAC_SWC_IDX, 1 + i);
   808			wr32(hw, NGBE_PSR_MAC_SWC_AD_L, 0);
   809			wr32(hw, NGBE_PSR_MAC_SWC_AD_H, 0);
   810		}
   811	
   812		/* Add the new addresses */
   813		for (i = 0; i < addr_count; i++) {
   814			DEBUGOUT(" Adding the secondary addresses:\n");
   815			addr = next(hw, &addr_list, &vmdq);
   816			ngbe_add_uc_addr(hw, addr, vmdq);
   817		}
   818	
   819		if (hw->addr_ctrl.overflow_promisc) {
   820			/* enable promisc if not already in overflow or set by user */
   821			if (!old_promisc_setting && !hw->addr_ctrl.user_set_promisc) {
   822				DEBUGOUT(" Entering address overflow promisc mode\n");
   823				wr32m(hw, NGBE_PSR_CTL,
   824					NGBE_PSR_CTL_UPE, NGBE_PSR_CTL_UPE);
   825			}
   826		} else {
   827			/* only disable if set by overflow, not by user */
   828			if (old_promisc_setting && !hw->addr_ctrl.user_set_promisc) {
   829				DEBUGOUT(" Leaving address overflow promisc mode\n");
   830				wr32m(hw, NGBE_PSR_CTL,
   831					NGBE_PSR_CTL_UPE, 0);
   832			}
   833		}
   834	
   835		return 0;
   836	}
   837	
   838	/**
   839	 *  ngbe_mta_vector - Determines bit-vector in multicast table to set
   840	 *  @hw: pointer to hardware structure
   841	 *  @mc_addr: the multicast address
   842	 *
   843	 *  Extracts the 12 bits, from a multicast address, to determine which
   844	 *  bit-vector to set in the multicast table. The hardware uses 12 bits, from
   845	 *  incoming rx multicast addresses, to determine the bit-vector to check in
   846	 *  the MTA. Which of the 4 combination, of 12-bits, the hardware uses is set
   847	 *  by the MO field of the MCSTCTRL. The MO field is set during initialization
   848	 *  to mc_filter_type.
   849	 **/
   850	static s32 ngbe_mta_vector(struct ngbe_hw *hw, u8 *mc_addr)
   851	{
   852		u32 vector = 0;
   853	
   854		switch (hw->mac.mc_filter_type) {
   855		case 0:   /* use bits [47:36] of the address */
   856			vector = ((mc_addr[4] >> 4) | (((u16)mc_addr[5]) << 4));
   857			break;
   858		case 1:   /* use bits [46:35] of the address */
   859			vector = ((mc_addr[4] >> 3) | (((u16)mc_addr[5]) << 5));
   860			break;
   861		case 2:   /* use bits [45:34] of the address */
   862			vector = ((mc_addr[4] >> 2) | (((u16)mc_addr[5]) << 6));
   863			break;
   864		case 3:   /* use bits [43:32] of the address */
   865			vector = ((mc_addr[4]) | (((u16)mc_addr[5]) << 8));
   866			break;
   867		default:  /* Invalid mc_filter_type */
   868			DEBUGOUT("MC filter type param set incorrectly\n");
   869			ASSERT(0);
   870			break;
   871		}
   872	
   873		/* vector can only be 12-bits or boundary will be exceeded */
   874		vector &= 0xFFF;
   875		return vector;
   876	}
   877	
   878	/**
   879	 *  ngbe_set_mta - Set bit-vector in multicast table
   880	 *  @hw: pointer to hardware structure
   881	 *  @hash_value: Multicast address hash value
   882	 *
   883	 *  Sets the bit-vector in the multicast table.
   884	 **/
 > 885	void ngbe_set_mta(struct ngbe_hw *hw, u8 *mc_addr)
   886	{
   887		u32 vector;
   888		u32 vector_bit;
   889		u32 vector_reg;
   890	
   891		hw->addr_ctrl.mta_in_use++;
   892	
   893		vector = ngbe_mta_vector(hw, mc_addr);
   894		DEBUGOUT1(" bit-vector = 0x%03X\n", vector);
   895	
   896		/* The MTA is a register array of 128 32-bit registers. It is treated
   897		 * like an array of 4096 bits.  We want to set bit
   898		 * BitArray[vector_value]. So we figure out what register the bit is
   899		 * in, read it, OR in the new bit, then write back the new value.  The
   900		 * register is determined by the upper 7 bits of the vector value and
   901		 * the bit within that register are determined by the lower 5 bits of
   902		 * the value.
   903		 */
   904		vector_reg = (vector >> 5) & 0x7F;
   905		vector_bit = vector & 0x1F;
   906		hw->mac.mta_shadow[vector_reg] |= (1 << vector_bit);
   907	}
   908	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0
                            
                          
                          
                            
    
                          
                        
                    
                        
                            
                                
                            
                            [openeuler:OLK-6.6 2658/2658] drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c:545:5: error: no previous prototype for function 'ps3_pci_init'
                        
                        
by kernel test robot 06 Aug '25
                    by kernel test robot 06 Aug '25
06 Aug '25
                    
                        Hi liujie_answer,
FYI, the error/warning still remains.
tree:   https://gitee.com/openeuler/kernel.git OLK-6.6
head:   8551213150db5f8eebd27273dae93f6fe258d63a
commit: 97a2bb6ece556f3882263ee8df2b77f10c511311 [2658/2658] SCSI: Linkdata: Supports Linkdata HBA/RAID Controllers
config: loongarch-allmodconfig (https://download.01.org/0day-ci/archive/20250806/202508062054.9vtkPxs1-lkp@…)
compiler: clang version 19.1.7 (https://github.com/llvm/llvm-project cd708029e0b2869e80abe31ddb175f7c35361f90)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250806/202508062054.9vtkPxs1-lkp@…)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp(a)intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202508062054.9vtkPxs1-lkp@intel.com/
All errors (new ones prefixed by >>):
   In file included from drivers/scsi/linkdata/ps3stor/ps3_ioc_manager.c:5:
   In file included from include/linux/pci.h:38:
   In file included from include/linux/device.h:32:
   In file included from include/linux/device/driver.h:21:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/loongarch/include/asm/elf.h:13:
   In file included from arch/loongarch/include/asm/vdso.h:10:
   In file included from include/linux/mm.h:2253:
   include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     536 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     537 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_ioc_manager.c:307:5: error: no previous prototype for function 'ps3_hard_reset_to_ready' [-Werror,-Wmissing-prototypes]
     307 | int ps3_hard_reset_to_ready(struct ps3_instance *instance)
         |     ^
   drivers/scsi/linkdata/ps3stor/ps3_ioc_manager.c:307:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     307 | int ps3_hard_reset_to_ready(struct ps3_instance *instance)
         | ^
         | static 
   6 errors generated.
--
   In file included from drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:5:
   In file included from include/linux/pci.h:38:
   In file included from include/linux/device.h:32:
   In file included from include/linux/device/driver.h:21:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/loongarch/include/asm/elf.h:13:
   In file included from arch/loongarch/include/asm/vdso.h:10:
   In file included from include/linux/mm.h:2253:
   include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     536 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     537 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:876:6: error: no previous prototype for function 'ps3_set_task_manager_busy' [-Werror,-Wmissing-prototypes]
     876 | void ps3_set_task_manager_busy(struct ps3_instance *instance,
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:876:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     876 | void ps3_set_task_manager_busy(struct ps3_instance *instance,
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:1110:5: error: no previous prototype for function 'ps3_wait_for_outstanding_complete' [-Werror,-Wmissing-prototypes]
    1110 | int ps3_wait_for_outstanding_complete(struct ps3_instance *instance)
         |     ^
   drivers/scsi/linkdata/ps3stor/ps3_scsi_cmd_err.c:1110:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    1110 | int ps3_wait_for_outstanding_complete(struct ps3_instance *instance)
         | ^
         | static 
   7 errors generated.
--
   In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:14:
   In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.h:6:
   In file included from drivers/scsi/linkdata/ps3stor/ps3_irq.h:8:
   In file included from include/scsi/scsi_host.h:5:
   In file included from include/linux/device.h:32:
   In file included from include/linux/device/driver.h:21:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/loongarch/include/asm/elf.h:13:
   In file included from arch/loongarch/include/asm/vdso.h:10:
   In file included from include/linux/mm.h:2253:
   include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     536 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     537 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:131:6: error: no previous prototype for function 'ps3_trigger_irq_poll' [-Werror,-Wmissing-prototypes]
     131 | void ps3_trigger_irq_poll(struct ps3_irq *irq)
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:131:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     131 | void ps3_trigger_irq_poll(struct ps3_irq *irq)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:243:5: error: no previous prototype for function 'ps3_resp_status_convert' [-Werror,-Wmissing-prototypes]
     243 | int ps3_resp_status_convert(unsigned int resp_status)
         |     ^
   drivers/scsi/linkdata/ps3stor/ps3_cmd_complete.c:243:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     243 | int ps3_resp_status_convert(unsigned int resp_status)
         | ^
         | static 
   7 errors generated.
--
   In file included from drivers/scsi/linkdata/ps3stor/ps3_qos.c:7:
   In file included from include/scsi/scsi_host.h:5:
   In file included from include/linux/device.h:32:
   In file included from include/linux/device/driver.h:21:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/loongarch/include/asm/elf.h:13:
   In file included from arch/loongarch/include/asm/vdso.h:10:
   In file included from include/linux/mm.h:2253:
   include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     536 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     537 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:211:1: error: no previous prototype for function 'ps3_qos_cmd_waitq_get' [-Werror,-Wmissing-prototypes]
     211 | ps3_qos_cmd_waitq_get(struct ps3_qos_tg_context *qos_tg_ctx,
         | ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:210:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     210 | struct qos_wait_queue *
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:335:15: error: no previous prototype for function 'ps3_qos_vd_cmdword_get' [-Werror,-Wmissing-prototypes]
     335 | unsigned char ps3_qos_vd_cmdword_get(struct ps3_cmd *cmd)
         |               ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:335:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     335 | unsigned char ps3_qos_vd_cmdword_get(struct ps3_cmd *cmd)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:351:15: error: no previous prototype for function 'ps3_qos_exclusive_cmdword_get' [-Werror,-Wmissing-prototypes]
     351 | unsigned char ps3_qos_exclusive_cmdword_get(struct ps3_cmd *cmd)
         |               ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:351:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     351 | unsigned char ps3_qos_exclusive_cmdword_get(struct ps3_cmd *cmd)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:363:15: error: no previous prototype for function 'ps3_qos_tg_decision' [-Werror,-Wmissing-prototypes]
     363 | unsigned char ps3_qos_tg_decision(struct ps3_cmd *cmd)
         |               ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:363:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     363 | unsigned char ps3_qos_tg_decision(struct ps3_cmd *cmd)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:749:15: error: no previous prototype for function 'ps3_qos_all_pd_rc_get' [-Werror,-Wmissing-prototypes]
     749 | unsigned char ps3_qos_all_pd_rc_get(struct ps3_cmd *cmd)
         |               ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:749:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     749 | unsigned char ps3_qos_all_pd_rc_get(struct ps3_cmd *cmd)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:876:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clear_all' [-Werror,-Wmissing-prototypes]
     876 | void ps3_pd_quota_waitq_clear_all(struct ps3_qos_pd_mgr *qos_pd_mgr,
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:876:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     876 | void ps3_pd_quota_waitq_clear_all(struct ps3_qos_pd_mgr *qos_pd_mgr,
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:892:6: error: no previous prototype for function 'ps3_pd_quota_waitq_clean' [-Werror,-Wmissing-prototypes]
     892 | void ps3_pd_quota_waitq_clean(struct ps3_qos_pd_mgr *qos_pd_mgr,
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:892:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     892 | void ps3_pd_quota_waitq_clean(struct ps3_qos_pd_mgr *qos_pd_mgr,
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:1058:6: error: no previous prototype for function 'ps3_qos_pd_waitq_ratio_update' [-Werror,-Wmissing-prototypes]
    1058 | void ps3_qos_pd_waitq_ratio_update(struct ps3_qos_pd_mgr *qos_pd_mgr)
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:1058:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    1058 | void ps3_qos_pd_waitq_ratio_update(struct ps3_qos_pd_mgr *qos_pd_mgr)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:2019:15: error: no previous prototype for function 'ps3_hba_qos_decision' [-Werror,-Wmissing-prototypes]
    2019 | unsigned char ps3_hba_qos_decision(struct ps3_cmd *cmd)
         |               ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:2019:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    2019 | unsigned char ps3_hba_qos_decision(struct ps3_cmd *cmd)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:2040:6: error: no previous prototype for function 'ps3_hba_qos_waitq_notify' [-Werror,-Wmissing-prototypes]
    2040 | void ps3_hba_qos_waitq_notify(struct ps3_instance *instance)
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:2040:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    2040 | void ps3_hba_qos_waitq_notify(struct ps3_instance *instance)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:2100:6: error: no previous prototype for function 'ps3_cmd_waitq_abort' [-Werror,-Wmissing-prototypes]
    2100 | bool ps3_cmd_waitq_abort(struct ps3_cmd *aborted_cmd)
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:2100:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    2100 | bool ps3_cmd_waitq_abort(struct ps3_cmd *aborted_cmd)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:2463:6: error: no previous prototype for function 'ps3_hba_qos_waitq_clear_all' [-Werror,-Wmissing-prototypes]
    2463 | void ps3_hba_qos_waitq_clear_all(struct ps3_instance *instance, int resp_status)
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:2463:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    2463 | void ps3_hba_qos_waitq_clear_all(struct ps3_instance *instance, int resp_status)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:2827:6: error: no previous prototype for function 'ps3_hba_qos_vd_init' [-Werror,-Wmissing-prototypes]
    2827 | void ps3_hba_qos_vd_init(struct ps3_instance *instance,
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:2827:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    2827 | void ps3_hba_qos_vd_init(struct ps3_instance *instance,
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_qos.c:2936:6: error: no previous prototype for function 'ps3_hba_qos_vd_reset' [-Werror,-Wmissing-prototypes]
    2936 | void ps3_hba_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_qos.c:2936:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    2936 | void ps3_hba_qos_vd_reset(struct ps3_instance *instance, unsigned short disk_id)
         | ^
         | static 
   fatal error: too many errors emitted, stopping now [-ferror-limit=]
   20 errors generated.
--
   In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:6:
   In file included from drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.h:7:
   In file included from include/scsi/scsi_cmnd.h:5:
   In file included from include/linux/dma-mapping.h:8:
   In file included from include/linux/device.h:32:
   In file included from include/linux/device/driver.h:21:
   In file included from include/linux/module.h:19:
   In file included from include/linux/elf.h:6:
   In file included from arch/loongarch/include/asm/elf.h:13:
   In file included from arch/loongarch/include/asm/vdso.h:10:
   In file included from include/linux/mm.h:2253:
   include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     536 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     537 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
>> drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:85:6: error: no previous prototype for function 'ps3_cmd_stat_content_clear' [-Werror,-Wmissing-prototypes]
      85 | void ps3_cmd_stat_content_clear(struct ps3_instance *instance)
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:85:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
      85 | void ps3_cmd_stat_content_clear(struct ps3_instance *instance)
         | ^
         | static 
>> drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:403:6: error: no previous prototype for function 'ps3_io_recv_ok_stat_inc' [-Werror,-Wmissing-prototypes]
     403 | void ps3_io_recv_ok_stat_inc(struct ps3_instance *ins,
         |      ^
   drivers/scsi/linkdata/ps3stor/ps3_cmd_statistics.c:403:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
     403 | void ps3_io_recv_ok_stat_inc(struct ps3_instance *ins,
         | ^
         | static 
   7 errors generated.
..
vim +/ps3_pci_init +545 drivers/scsi/linkdata/ps3stor/./linux/ps3_base.c
   544	
 > 545	int ps3_pci_init(struct pci_dev *pdev, struct ps3_instance *instance)
   546	{
   547		resource_size_t base_addr = 0;
   548		int ret = PS3_SUCCESS;
   549	
   550		ret = pci_enable_device_mem(pdev);
   551		if (ret != PS3_SUCCESS) {
   552			LOG_ERROR("hno:%u pci id[%u] pci enable failed\n",
   553				  PS3_HOST(instance), pdev->dev.id);
   554			goto l_pci_enable_device_mem_failed;
   555		}
   556	
   557		pci_set_master(pdev);
   558	
   559		instance->reg_bar = PS3_REGISTER_BAR_INDEX;
   560		ret = (pci_resource_flags(pdev, instance->reg_bar) & IORESOURCE_MEM);
   561		if (!ret) {
   562			LOG_ERROR("hno:%u Bar %lu isnot IORESOURCE_MEM\n",
   563				  PS3_HOST(instance), instance->reg_bar);
   564			goto l_bar_check_failed;
   565		}
   566		ret = pci_request_selected_regions(pdev, 1 << instance->reg_bar,
   567						   "PS3 pci regions");
   568		if (ret != PS3_SUCCESS) {
   569			LOG_ERROR("hno:%u IO memory region busy\n", PS3_HOST(instance));
   570			goto l_pci_request_selected_regions_failed;
   571		}
   572	#if defined(PS3_SUPPORT_PCIE_REPORT)
   573		pci_enable_pcie_error_reporting(pdev);
   574	#endif
   575		if (instance->ioc_adpter->reg_set) {
   576			instance->reg_set =
   577				(struct Ps3Fifo __iomem *)instance->ioc_adpter->reg_set(
   578					pdev, instance->reg_bar);
   579		} else {
   580			instance->reg_set = (struct Ps3Fifo __iomem *)ioremap(
   581				pci_resource_start(pdev, instance->reg_bar),
   582				PS3_REGISTER_SET_SIZE);
   583		}
   584		if (instance->reg_set == NULL) {
   585			LOG_ERROR("hno:%u ioremap failed\n", PS3_HOST(instance));
   586			goto l_ioremap_failed;
   587		} else {
   588			pci_set_drvdata(pdev, instance);
   589		}
   590	
   591		ps3_atomic_set(&instance->watchdog_reg_read_fail_count, 0);
   592		LOG_INFO(
   593			"reg_bar_idx = %lu, bar_base_paddr = 0x%llx, reg_set_vaddr = 0x%p\n",
   594			instance->reg_bar, (unsigned long long)base_addr, instance->reg_set);
   595	
   596		return PS3_SUCCESS;
   597	l_ioremap_failed:
   598		pci_release_selected_regions(instance->pdev, 1 << instance->reg_bar);
   599	#if defined(PS3_SUPPORT_PCIE_REPORT)
   600		pci_disable_pcie_error_reporting(pdev);
   601	#endif
   602	l_pci_request_selected_regions_failed:
   603		pci_disable_device(instance->pdev);
   604	l_bar_check_failed:
   605	l_pci_enable_device_mem_failed:
   606		return -PS3_FAILED;
   607	}
   608	
-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
                    
                  
                  
                          
                            
                            1
                            
                          
                          
                            
                            0