tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   65f0d2414b7079556fbbcc070b3d1c9f9587606d
commit: 0cd1ad2d7fd41e0de4969fd1dd0aa846c99830d1 iwlwifi: move all 
bus-independent TX functions to common code
date:   4 months ago
config: i386-randconfig-s002-20210115 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
        # apt-get install sparse
        # sparse version: v0.6.3-208-g46a52ca4-dirty
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0cd1ad2d7fd41e0de4969fd1dd0aa846c99830d1
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 0cd1ad2d7fd41e0de4969fd1dd0aa846c99830d1
        # save the attached .config to linux build tree
        make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=i386 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <[email protected]>


"sparse warnings: (new ones prefixed by >>)"
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c: note: in included file 
(through drivers/net/wireless/intel/iwlwifi/fw/img.h, 
drivers/net/wireless/intel/iwlwifi/iwl-trans.h):
   drivers/net/wireless/intel/iwlwifi/fw/file.h:330:19: sparse: sparse: mixed 
bitwiseness
   drivers/net/wireless/intel/iwlwifi/fw/file.h:485:19: sparse: sparse: mixed 
bitwiseness
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c: note: in included file:
   drivers/net/wireless/intel/iwlwifi/iwl-trans.h:788:52: sparse: sparse: array 
of flexible structures
>> drivers/net/wireless/intel/iwlwifi/iwl-trans.c:154:34: sparse: sparse: 
>> incorrect type in assignment (different address spaces) @@     expected 
>> struct iwl_tso_hdr_page *tso_hdr_page @@     got struct iwl_tso_hdr_page 
>> [noderef] __percpu * @@
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c:154:34: sparse:     expected 
struct iwl_tso_hdr_page *tso_hdr_page
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c:154:34: sparse:     got 
struct iwl_tso_hdr_page [noderef] __percpu *
>> drivers/net/wireless/intel/iwlwifi/iwl-trans.c:169:25: sparse: sparse: 
>> incorrect type in initializer (different address spaces) @@     expected 
>> void const [noderef] __percpu *__vpp_verify @@     got struct 
>> iwl_tso_hdr_page * @@
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c:169:25: sparse:     expected 
void const [noderef] __percpu *__vpp_verify
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c:169:25: sparse:     got 
struct iwl_tso_hdr_page *
>> drivers/net/wireless/intel/iwlwifi/iwl-trans.c:175:32: sparse: sparse: 
>> incorrect type in argument 1 (different address spaces) @@     expected void 
>> [noderef] __percpu *__pdata @@     got struct iwl_tso_hdr_page *tso_hdr_page 
>> @@
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c:175:32: sparse:     expected 
void [noderef] __percpu *__pdata
   drivers/net/wireless/intel/iwlwifi/iwl-trans.c:175:32: sparse:     got 
struct iwl_tso_hdr_page *tso_hdr_page
--
   drivers/net/wireless/intel/iwlwifi/queue/tx.c: note: in included file 
(through drivers/net/wireless/intel/iwlwifi/fw/img.h, 
drivers/net/wireless/intel/iwlwifi/iwl-trans.h, ...):
   drivers/net/wireless/intel/iwlwifi/fw/file.h:330:19: sparse: sparse: mixed 
bitwiseness
   drivers/net/wireless/intel/iwlwifi/fw/file.h:485:19: sparse: sparse: mixed 
bitwiseness
   drivers/net/wireless/intel/iwlwifi/queue/tx.c: note: in included file 
(through drivers/net/wireless/intel/iwlwifi/iwl-devtrace.h, 
drivers/net/wireless/intel/iwlwifi/iwl-io.h):
   drivers/net/wireless/intel/iwlwifi/iwl-trans.h:788:52: sparse: sparse: array 
of flexible structures
>> drivers/net/wireless/intel/iwlwifi/queue/tx.c:354:38: sparse: sparse: 
>> incorrect type in initializer (different address spaces) @@     expected 
>> void const [noderef] __percpu *__vpp_verify @@     got struct 
>> iwl_tso_hdr_page * @@
   drivers/net/wireless/intel/iwlwifi/queue/tx.c:354:38: sparse:     expected 
void const [noderef] __percpu *__vpp_verify
   drivers/net/wireless/intel/iwlwifi/queue/tx.c:354:38: sparse:     got struct 
iwl_tso_hdr_page *

vim +154 drivers/net/wireless/intel/iwlwifi/iwl-trans.c

   110  
   111          trans->dev = dev;
   112          trans->ops = ops;
   113          trans->num_rx_queues = 1;
   114  
   115          if (trans->trans_cfg->device_family >= IWL_DEVICE_FAMILY_AX210)
   116                  trans->txqs.bc_tbl_size = sizeof(struct 
iwl_gen3_bc_tbl);
   117          else
   118                  trans->txqs.bc_tbl_size = sizeof(struct 
iwlagn_scd_bc_tbl);
   119          /*
   120           * For gen2 devices, we use a single allocation for each 
byte-count
   121           * table, but they're pretty small (1k) so use a DMA pool that 
we
   122           * allocate here.
   123           */
   124          if (trans->trans_cfg->gen2) {
   125                  trans->txqs.bc_pool = dmam_pool_create("iwlwifi:bc", 
dev,
   126                                                         
trans->txqs.bc_tbl_size,
   127                                                         256, 0);
   128                  if (!trans->txqs.bc_pool)
   129                          return NULL;
   130          }
   131  
   132          if (trans->trans_cfg->use_tfh) {
   133                  trans->txqs.tfd.addr_size = 64;
   134                  trans->txqs.tfd.max_tbs = IWL_TFH_NUM_TBS;
   135                  trans->txqs.tfd.size = sizeof(struct iwl_tfh_tfd);
   136          } else {
   137                  trans->txqs.tfd.addr_size = 36;
   138                  trans->txqs.tfd.max_tbs = IWL_NUM_OF_TBS;
   139                  trans->txqs.tfd.size = sizeof(struct iwl_tfd);
   140          }
   141          trans->max_skb_frags = IWL_TRANS_MAX_FRAGS(trans);
   142  
   143          snprintf(trans->dev_cmd_pool_name, 
sizeof(trans->dev_cmd_pool_name),
   144                   "iwl_cmd_pool:%s", dev_name(trans->dev));
   145          trans->dev_cmd_pool =
   146                  kmem_cache_create(trans->dev_cmd_pool_name,
   147                                    txcmd_size, txcmd_align,
   148                                    SLAB_HWCACHE_ALIGN, NULL);
   149          if (!trans->dev_cmd_pool)
   150                  return NULL;
   151  
   152          WARN_ON(!ops->wait_txq_empty && !ops->wait_tx_queues_empty);
   153  
 > 154          trans->txqs.tso_hdr_page = alloc_percpu(struct 
 > iwl_tso_hdr_page);
   155          if (!trans->txqs.tso_hdr_page) {
   156                  kmem_cache_destroy(trans->dev_cmd_pool);
   157                  return NULL;
   158          }
   159  
   160          return trans;
   161  }
   162  
   163  void iwl_trans_free(struct iwl_trans *trans)
   164  {
   165          int i;
   166  
   167          for_each_possible_cpu(i) {
   168                  struct iwl_tso_hdr_page *p =
 > 169                          per_cpu_ptr(trans->txqs.tso_hdr_page, i);
   170  
   171                  if (p->page)
   172                          __free_page(p->page);
   173          }
   174  
 > 175          free_percpu(trans->txqs.tso_hdr_page);
   176  
   177          kmem_cache_destroy(trans->dev_cmd_pool);
   178  }
   179  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

Reply via email to