tree: https://github.com/intel/linux-intel-lts.git 5.4/yocto head: eeb611e5394c56d45c5cc8f7dc484c9f19e93143 commit: 792c8003efc4d75b5f52db70e7380b6a425bdba8 [414/1142] xlink-pcie: XLink PCIe Remote and Local Host driver config: sparc-randconfig-s032-20210702 (attached as .config) compiler: sparc64-linux-gcc (GCC) 9.3.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # apt-get install sparse # sparse version: v0.6.3-348-gf0e6938b-dirty # https://github.com/intel/linux-intel-lts/commit/792c8003efc4d75b5f52db70e7380b6a425bdba8 git remote add intel-linux-intel-lts https://github.com/intel/linux-intel-lts.git git fetch --no-tags intel-linux-intel-lts 5.4/yocto git checkout 792c8003efc4d75b5f52db70e7380b6a425bdba8 # save the attached .config to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=sparc If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot sparse warnings: (new ones prefixed by >>) >> drivers/misc/xlink-pcie/remote_host/mxlk_core.c:127:41: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:127:41: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:127:41: sparse: got unsigned int * drivers/misc/xlink-pcie/remote_host/mxlk_core.c:130:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:130:36: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:130:36: sparse: got unsigned int * drivers/misc/xlink-pcie/remote_host/mxlk_core.c:133:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:133:34: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:133:34: sparse: got unsigned int * drivers/misc/xlink-pcie/remote_host/mxlk_core.c:134:63: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:134:63: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:134:63: sparse: got unsigned int * >> drivers/misc/xlink-pcie/remote_host/mxlk_core.c:134:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct mxlk_transfer_desc *tdr @@ got void [noderef] * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:134:22: sparse: expected struct mxlk_transfer_desc *tdr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:134:22: sparse: got void [noderef] * drivers/misc/xlink-pcie/remote_host/mxlk_core.c:143:36: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:143:36: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:143:36: sparse: got unsigned int * drivers/misc/xlink-pcie/remote_host/mxlk_core.c:146:34: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:146:34: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:146:34: sparse: got unsigned int * drivers/misc/xlink-pcie/remote_host/mxlk_core.c:147:63: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:147:63: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:147:63: sparse: got unsigned int * drivers/misc/xlink-pcie/remote_host/mxlk_core.c:147:22: sparse: sparse: incorrect type in assignment (different address spaces) @@ expected struct mxlk_transfer_desc *tdr @@ got void [noderef] * @@ drivers/misc/xlink-pcie/remote_host/mxlk_core.c:147:22: sparse: expected struct mxlk_transfer_desc *tdr drivers/misc/xlink-pcie/remote_host/mxlk_core.c:147:22: sparse: got void [noderef] * drivers/misc/xlink-pcie/remote_host/mxlk_core.c: note: in included file: >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] *addr @@ got unsigned long long * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: expected void [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: got unsigned long long * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: got unsigned int * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] *addr @@ got unsigned long long * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: expected void [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: got unsigned long long * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: got unsigned int * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] *addr @@ got unsigned long long * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: expected void [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: got unsigned long long * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: got unsigned int * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:31:16: sparse: sparse: cast removes address space '' of expression >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:38:41: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const volatile [noderef] *src @@ got struct mxlk_cap_hdr *[assigned] hdr @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:38:41: sparse: expected void const volatile [noderef] *src drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:38:41: sparse: got struct mxlk_cap_hdr *[assigned] hdr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:51:32: sparse: sparse: cast removes address space '' of expression >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int [usertype] *tail @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: got unsigned int [usertype] *tail drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int [usertype] *head @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: got unsigned int [usertype] *head >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned short * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse: got unsigned short * drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:96:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned short * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:96:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:96:31: sparse: got unsigned short * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:84:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:84:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:84:31: sparse: got unsigned int * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] *addr @@ got unsigned long long * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: expected void [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: got unsigned long long * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: got unsigned int * drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int [usertype] *head @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: got unsigned int [usertype] *head >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:114:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned int [usertype] *head @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:114:31: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:114:31: sparse: got unsigned int [usertype] *head >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int [usertype] *tail @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: got unsigned int [usertype] *tail drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int [usertype] *head @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse: got unsigned int [usertype] *head >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned short * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse: got unsigned short * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void [noderef] *addr @@ got unsigned long long * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: expected void [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse: got unsigned long long * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned int * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse: got unsigned int * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:90:36: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned short * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:90:36: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:90:36: sparse: got unsigned short * drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:102:33: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned short * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:102:33: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:102:33: sparse: got unsigned short * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned int [usertype] *tail @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse: got unsigned int [usertype] *tail drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:126:31: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned int [usertype] *tail @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:126:31: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:126:31: sparse: got unsigned int [usertype] *tail -- >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:28:29: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected unsigned char [usertype] * @@ got unsigned char [noderef] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:28:29: sparse: expected unsigned char [usertype] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:28:29: sparse: got unsigned char [noderef] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:30:29: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected unsigned char [usertype] * @@ got unsigned char [noderef] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:30:29: sparse: expected unsigned char [usertype] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:30:29: sparse: got unsigned char [noderef] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:32:29: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected unsigned char [usertype] * @@ got unsigned char [noderef] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:32:29: sparse: expected unsigned char [usertype] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:32:29: sparse: got unsigned char [noderef] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:34:29: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected unsigned char [usertype] * @@ got unsigned char [noderef] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:34:29: sparse: expected unsigned char [usertype] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:34:29: sparse: got unsigned char [noderef] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:36:29: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected unsigned char [usertype] * @@ got unsigned char [noderef] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:36:29: sparse: expected unsigned char [usertype] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:36:29: sparse: got unsigned char [noderef] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:38:29: sparse: sparse: incorrect type in return expression (different address spaces) @@ expected unsigned char [usertype] * @@ got unsigned char [noderef] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:38:29: sparse: expected unsigned char [usertype] * drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:38:29: sparse: got unsigned char [noderef] * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:46:50: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void volatile [noderef] *addr @@ got unsigned char [usertype] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:46:50: sparse: expected void volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:46:50: sparse: got unsigned char [usertype] * >> drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:52:49: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] *addr @@ got unsigned char [usertype] * @@ drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:52:49: sparse: expected void const volatile [noderef] *addr drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:52:49: sparse: got unsigned char [usertype] * vim +127 drivers/misc/xlink-pcie/remote_host/mxlk_core.c 116 117 static int mxlk_txrx_init(struct mxlk *mxlk, struct mxlk_cap_txrx *cap) 118 { 119 int rc; 120 int index; 121 int ndesc; 122 struct mxlk_buf_desc *bd; 123 struct mxlk_stream *tx = &mxlk->tx; 124 struct mxlk_stream *rx = &mxlk->rx; 125 126 mxlk->txrx = cap; > 127 mxlk->fragment_size = ioread32(&cap->fragment_size); 128 mxlk->stop_flag = false; 129 130 tx->pipe.ndesc = ioread32(&cap->tx.ndesc); 131 tx->pipe.head = &cap->tx.head; 132 tx->pipe.tail = &cap->tx.tail; 133 tx->pipe.old = ioread32(&cap->tx.tail); > 134 tx->pipe.tdr = (void __iomem *)mxlk->mmio + ioread32(&cap->tx.ring); 135 136 tx->ddr = kcalloc(tx->pipe.ndesc, sizeof(struct mxlk_buf_desc *), 137 GFP_KERNEL); 138 if (!tx->ddr) { 139 rc = -ENOMEM; 140 goto error; 141 } 142 143 rx->pipe.ndesc = ioread32(&cap->rx.ndesc); 144 rx->pipe.head = &cap->rx.head; 145 rx->pipe.tail = &cap->rx.tail; 146 rx->pipe.old = ioread32(&cap->rx.head); 147 rx->pipe.tdr = (void __iomem *)mxlk->mmio + ioread32(&cap->rx.ring); 148 149 rx->ddr = kcalloc(rx->pipe.ndesc, sizeof(struct mxlk_buf_desc *), 150 GFP_KERNEL); 151 if (!rx->ddr) { 152 rc = -ENOMEM; 153 goto error; 154 } 155 156 mxlk_list_init(&mxlk->rx_pool); 157 rx_pool_size = roundup(rx_pool_size, mxlk->fragment_size); 158 ndesc = rx_pool_size / mxlk->fragment_size; 159 160 for (index = 0; index < ndesc; index++) { 161 bd = mxlk_alloc_bd(mxlk->fragment_size); 162 if (bd) { 163 mxlk_list_put(&mxlk->rx_pool, bd); 164 } else { 165 rc = -ENOMEM; 166 goto error; 167 } 168 } 169 170 mxlk_list_init(&mxlk->tx_pool); 171 tx_pool_size = roundup(tx_pool_size, mxlk->fragment_size); 172 ndesc = tx_pool_size / mxlk->fragment_size; 173 174 for (index = 0; index < ndesc; index++) { 175 bd = mxlk_alloc_bd(mxlk->fragment_size); 176 if (bd) { 177 mxlk_list_put(&mxlk->tx_pool, bd); 178 } else { 179 rc = -ENOMEM; 180 goto error; 181 } 182 } 183 184 for (index = 0; index < rx->pipe.ndesc; index++) { 185 struct mxlk_transfer_desc *td = rx->pipe.tdr + index; 186 187 bd = mxlk_alloc_rx_bd(mxlk); 188 if (!bd) { 189 rc = -ENOMEM; 190 goto error; 191 } 192 193 if (mxlk_map_dma(mxlk, bd, DMA_FROM_DEVICE)) { 194 dev_err(mxlk_to_dev(mxlk), "failed to map rx bd\n"); 195 rc = -ENOMEM; 196 goto error; 197 } 198 199 rx->ddr[index] = bd; 200 mxlk_set_td_address(td, bd->phys); 201 mxlk_set_td_length(td, bd->length); 202 } 203 204 return 0; 205 206 error: 207 mxlk_txrx_cleanup(mxlk); 208 209 return rc; 210 } 211 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org