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: x86_64-randconfig-s021-20201118 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-15) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.3-123-g626c4742-dirty
#
https://github.com/intel/linux-intel-lts/commit/792c8003efc4d75b5f52db70e...
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
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=x86_64
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
"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
[noderef] <asn:2> * @@ got unsigned int * @@
> drivers/misc/xlink-pcie/remote_host/mxlk_core.c:127:41: sparse: expected void
[noderef] <asn:2> *
> 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 [noderef]
<asn:2> * @@ got unsigned int * @@
drivers/misc/xlink-pcie/remote_host/mxlk_core.c:130:36: sparse: expected void
[noderef] <asn:2> *
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 [noderef] <asn:2> * @@
got unsigned int * @@
drivers/misc/xlink-pcie/remote_host/mxlk_core.c:133:34: sparse: expected void
[noderef] <asn:2> *
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 [noderef] <asn:2> * @@
got unsigned int * @@
drivers/misc/xlink-pcie/remote_host/mxlk_core.c:134:63: sparse: expected void
[noderef] <asn:2> *
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] <asn:2> * @@
> 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] <asn:2> *
drivers/misc/xlink-pcie/remote_host/mxlk_core.c:143:36:
sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected
void [noderef] <asn:2> * @@ got unsigned int * @@
drivers/misc/xlink-pcie/remote_host/mxlk_core.c:143:36: sparse: expected void
[noderef] <asn:2> *
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 [noderef] <asn:2> * @@
got unsigned int * @@
drivers/misc/xlink-pcie/remote_host/mxlk_core.c:146:34: sparse: expected void
[noderef] <asn:2> *
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 [noderef] <asn:2> * @@
got unsigned int * @@
drivers/misc/xlink-pcie/remote_host/mxlk_core.c:147:63: sparse: expected void
[noderef] <asn:2> *
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] <asn:2> * @@
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]
<asn:2> *
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]
<asn:2> *addr @@ got unsigned long long * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse:
expected void [noderef] <asn:2> *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
[noderef] <asn:2> * @@ got unsigned int * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse:
expected void [noderef] <asn:2> *
> 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] <asn:2> *addr @@ got unsigned long long * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse:
expected void [noderef] <asn:2> *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
[noderef] <asn:2> * @@ got unsigned int * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse:
expected void [noderef] <asn:2> *
> 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] <asn:2> *addr @@ got unsigned long long * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse:
expected void [noderef] <asn:2> *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
[noderef] <asn:2> * @@ got unsigned int * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse:
expected void [noderef] <asn:2> *
> 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 '<asn:2>' 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] <asn:2> * @@ 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] <asn:2> *
> 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 '<asn:2>' 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 [noderef]
<asn:2> * @@ got unsigned int [usertype] *tail @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse:
expected void [noderef] <asn:2> *
>
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
[noderef] <asn:2> * @@ got unsigned int [usertype] *head @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse:
expected void [noderef] <asn:2> *
>
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
[noderef] <asn:2> * @@ got unsigned short * @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse:
expected void [noderef] <asn:2> *
>
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 [noderef]
<asn:2> * @@ got unsigned short * @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:96:31: sparse:
expected void [noderef] <asn:2> *
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
[noderef] <asn:2> * @@ got unsigned int * @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:84:31: sparse:
expected void [noderef] <asn:2> *
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]
<asn:2> *addr @@ got unsigned long long * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse:
expected void [noderef] <asn:2> *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
[noderef] <asn:2> * @@ got unsigned int * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse:
expected void [noderef] <asn:2> *
> 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
[noderef] <asn:2> * @@ got unsigned int [usertype] *head @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse:
expected void [noderef] <asn:2> *
>
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 [noderef]
<asn:2> * @@ got unsigned int [usertype] *head @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:114:31: sparse:
expected void [noderef] <asn:2> *
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 [noderef]
<asn:2> * @@ got unsigned int [usertype] *tail @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse:
expected void [noderef] <asn:2> *
>
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
[noderef] <asn:2> * @@ got unsigned int [usertype] *head @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:120:31: sparse:
expected void [noderef] <asn:2> *
>
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
[noderef] <asn:2> * @@ got unsigned short * @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:108:31: sparse:
expected void [noderef] <asn:2> *
>
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]
<asn:2> *addr @@ got unsigned long long * @@
>> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:66:34: sparse:
expected void [noderef] <asn:2> *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
[noderef] <asn:2> * @@ got unsigned int * @@
>> drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:78:33: sparse:
expected void [noderef] <asn:2> *
>> 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
[noderef] <asn:2> * @@ got unsigned short * @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:90:36: sparse:
expected void [noderef] <asn:2> *
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
[noderef] <asn:2> * @@ got unsigned short * @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:102:33: sparse:
expected void [noderef] <asn:2> *
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 [noderef]
<asn:2> * @@ got unsigned int [usertype] *tail @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:132:31: sparse:
expected void [noderef] <asn:2> *
>
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 [noderef]
<asn:2> * @@ got unsigned int [usertype] *tail @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_capabilities.h:126:31: sparse:
expected void [noderef] <asn:2> *
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] <asn:2> * @@
> 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] <asn:2> *
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] <asn:2> * @@
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] <asn:2> *
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] <asn:2> * @@
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] <asn:2> *
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] <asn:2> * @@
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] <asn:2> *
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] <asn:2> * @@
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] <asn:2> *
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] <asn:2> * @@
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] <asn:2> *
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:46:50:
sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected
void [noderef] <asn:2> * @@ got unsigned char [usertype] * @@
> drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:46:50: sparse: expected
void [noderef] <asn:2> *
> 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 [noderef] <asn:2>
* @@ got unsigned char [usertype] * @@
drivers/misc/xlink-pcie/remote_host/../common/mxlk_util.c:52:49: sparse: expected
void [noderef] <asn:2> *
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@lists.01.org