Messages in this thread | | | Date | Thu, 16 Dec 2021 00:47:55 +0800 | From | kernel test robot <> | Subject | [asahilinux:touchpad/wip 63/82] drivers/dma/apple-admac.c:221:34: warning: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'size_t' {aka 'unsigned int'} |
| |
tree: https://github.com/AsahiLinux/linux touchpad/wip head: a2281d64fdbcbab0dae68c6ea75bd5b548332e06 commit: ebaeac45289171e9e6a775d13f2bf34bfec4d104 [63/82] dmaengine: apple-admac: Add Apple ADMAC driver config: parisc-allyesconfig (https://download.01.org/0day-ci/archive/20211216/202112160031.DEIICVwO-lkp@intel.com/config) compiler: hppa-linux-gcc (GCC) 11.2.0 reproduce (this is a W=1 build): wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # https://github.com/AsahiLinux/linux/commit/ebaeac45289171e9e6a775d13f2bf34bfec4d104 git remote add asahilinux https://github.com/AsahiLinux/linux git fetch --no-tags asahilinux touchpad/wip git checkout ebaeac45289171e9e6a775d13f2bf34bfec4d104 # save the config file to linux build tree mkdir build_dir COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross O=build_dir ARCH=parisc SHELL=/bin/bash drivers/dma/
If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@intel.com>
All warnings (new ones prefixed by >>):
drivers/dma/apple-admac.c:125:5: warning: no previous prototype for 'admac_alloc_chan_resources' [-Wmissing-prototypes] 125 | int admac_alloc_chan_resources(struct dma_chan *chan) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/dma/apple-admac.c:130:6: warning: no previous prototype for 'admac_free_chan_resources' [-Wmissing-prototypes] 130 | void admac_free_chan_resources(struct dma_chan *chan) | ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/dma/apple-admac.c:135:5: warning: no previous prototype for 'admac_ring_noccupied_slots' [-Wmissing-prototypes] 135 | int admac_ring_noccupied_slots(int ringval) | ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/dma/apple-admac.c: In function 'admac_ring_noccupied_slots': drivers/dma/apple-admac.c:137:22: error: implicit declaration of function 'FIELD_GET'; did you mean 'FOLL_GET'? [-Werror=implicit-function-declaration] 137 | int wrslot = FIELD_GET(RING_WRITE_SLOT, ringval); | ^~~~~~~~~ | FOLL_GET drivers/dma/apple-admac.c: At top level: drivers/dma/apple-admac.c:155:5: warning: no previous prototype for 'admac_cyclic_read_residue' [-Wmissing-prototypes] 155 | u32 admac_cyclic_read_residue(struct admac_data *ad, int channo, struct admac_tx *adtx) | ^~~~~~~~~~~~~~~~~~~~~~~~~ drivers/dma/apple-admac.c:181:17: warning: no previous prototype for 'admac_tx_status' [-Wmissing-prototypes] 181 | enum dma_status admac_tx_status(struct dma_chan *chan, dma_cookie_t cookie, | ^~~~~~~~~~~~~~~ In file included from include/linux/printk.h:555, from include/linux/kernel.h:20, from arch/parisc/include/asm/bug.h:5, from include/linux/bug.h:5, from include/linux/thread_info.h:13, from include/asm-generic/preempt.h:5, from ./arch/parisc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/rcupdate.h:27, from include/linux/rculist.h:11, from include/linux/pid.h:5, from include/linux/sched.h:14, from include/linux/ratelimit.h:6, from include/linux/dev_printk.h:16, from include/linux/device.h:15, from drivers/dma/apple-admac.c:2: drivers/dma/apple-admac.c: In function 'admac_tx_status': >> drivers/dma/apple-admac.c:221:34: warning: format '%lx' expects argument of type 'long unsigned int', but argument 5 has type 'size_t' {aka 'unsigned int'} [-Wformat=] 221 | dev_dbg(ad->dev, "ch%d residue: %lx, (%ld%%)\n", adchan->no, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call' 134 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call' 166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \ | ^~~~~~~~~~~~~~~~~~ include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg' 155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~~~~~~~~~ include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt' 155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~ drivers/dma/apple-admac.c:221:17: note: in expansion of macro 'dev_dbg' 221 | dev_dbg(ad->dev, "ch%d residue: %lx, (%ld%%)\n", adchan->no, | ^~~~~~~ drivers/dma/apple-admac.c:221:51: note: format string is defined here 221 | dev_dbg(ad->dev, "ch%d residue: %lx, (%ld%%)\n", adchan->no, | ~~^ | | | long unsigned int | %x In file included from include/linux/printk.h:555, from include/linux/kernel.h:20, from arch/parisc/include/asm/bug.h:5, from include/linux/bug.h:5, from include/linux/thread_info.h:13, from include/asm-generic/preempt.h:5, from ./arch/parisc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/rcupdate.h:27, from include/linux/rculist.h:11, from include/linux/pid.h:5, from include/linux/sched.h:14, from include/linux/ratelimit.h:6, from include/linux/dev_printk.h:16, from include/linux/device.h:15, from drivers/dma/apple-admac.c:2: >> drivers/dma/apple-admac.c:221:34: warning: format '%ld' expects argument of type 'long int', but argument 6 has type 'size_t' {aka 'unsigned int'} [-Wformat=] 221 | dev_dbg(ad->dev, "ch%d residue: %lx, (%ld%%)\n", adchan->no, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call' 134 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call' 166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \ | ^~~~~~~~~~~~~~~~~~ include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg' 155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~~~~~~~~~ include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt' 155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~ drivers/dma/apple-admac.c:221:17: note: in expansion of macro 'dev_dbg' 221 | dev_dbg(ad->dev, "ch%d residue: %lx, (%ld%%)\n", adchan->no, | ^~~~~~~ drivers/dma/apple-admac.c:221:57: note: format string is defined here 221 | dev_dbg(ad->dev, "ch%d residue: %lx, (%ld%%)\n", adchan->no, | ~~^ | | | long int | %d drivers/dma/apple-admac.c: At top level: drivers/dma/apple-admac.c:228:6: warning: no previous prototype for 'admac_start' [-Wmissing-prototypes] 228 | void admac_start(struct admac_chan *adchan) | ^~~~~~~~~~~ drivers/dma/apple-admac.c:244:6: warning: no previous prototype for 'admac_issue_pending' [-Wmissing-prototypes] 244 | void admac_issue_pending(struct dma_chan *chan) | ^~~~~~~~~~~~~~~~~~~ drivers/dma/apple-admac.c:263:5: warning: no previous prototype for 'admac_pause' [-Wmissing-prototypes] 263 | int admac_pause(struct dma_chan *chan) | ^~~~~~~~~~~ drivers/dma/apple-admac.c:272:5: warning: no previous prototype for 'admac_resume' [-Wmissing-prototypes] 272 | int admac_resume(struct dma_chan *chan) | ^~~~~~~~~~~~ drivers/dma/apple-admac.c:281:5: warning: no previous prototype for 'admac_terminate_all' [-Wmissing-prototypes] 281 | int admac_terminate_all(struct dma_chan *chan) | ^~~~~~~~~~~~~~~~~~~ drivers/dma/apple-admac.c:303:14: warning: no previous prototype for 'admac_tx_submit' [-Wmissing-prototypes] 303 | dma_cookie_t admac_tx_submit(struct dma_async_tx_descriptor *tx) | ^~~~~~~~~~~~~~~ drivers/dma/apple-admac.c:325:33: warning: no previous prototype for 'admac_prep_dma_cyclic' [-Wmissing-prototypes] 325 | struct dma_async_tx_descriptor *admac_prep_dma_cyclic( | ^~~~~~~~~~~~~~~~~~~~~ In file included from include/linux/printk.h:555, from include/linux/kernel.h:20, from arch/parisc/include/asm/bug.h:5, from include/linux/bug.h:5, from include/linux/thread_info.h:13, from include/asm-generic/preempt.h:5, from ./arch/parisc/include/generated/asm/preempt.h:1, from include/linux/preempt.h:78, from include/linux/rcupdate.h:27, from include/linux/rculist.h:11, from include/linux/pid.h:5, from include/linux/sched.h:14, from include/linux/ratelimit.h:6, from include/linux/dev_printk.h:16, from include/linux/device.h:15, from drivers/dma/apple-admac.c:2: drivers/dma/apple-admac.c: In function 'admac_cyclic_write_one_desc': >> drivers/dma/apple-admac.c:387:26: warning: format '%llx' expects argument of type 'long long unsigned int', but argument 5 has type 'dma_addr_t' {aka 'unsigned int'} [-Wformat=] 387 | dev_dbg(ad->dev, "ch%d descriptor: addr=0x%llx len=0x%x flags=0x%lx\n", | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/dynamic_debug.h:134:29: note: in definition of macro '__dynamic_func_call' 134 | func(&id, ##__VA_ARGS__); \ | ^~~~~~~~~~~ include/linux/dynamic_debug.h:166:9: note: in expansion of macro '_dynamic_func_call' 166 | _dynamic_func_call(fmt,__dynamic_dev_dbg, \ | ^~~~~~~~~~~~~~~~~~ include/linux/dev_printk.h:155:9: note: in expansion of macro 'dynamic_dev_dbg' 155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~~~~~~~~~ include/linux/dev_printk.h:155:30: note: in expansion of macro 'dev_fmt' 155 | dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__) | ^~~~~~~ drivers/dma/apple-admac.c:387:9: note: in expansion of macro 'dev_dbg' 387 | dev_dbg(ad->dev, "ch%d descriptor: addr=0x%llx len=0x%x flags=0x%lx\n", | ^~~~~~~ drivers/dma/apple-admac.c:387:54: note: format string is defined here 387 | dev_dbg(ad->dev, "ch%d descriptor: addr=0x%llx len=0x%x flags=0x%lx\n", | ~~~^ | | | long long unsigned int | %x >> drivers/dma/apple-admac.c:391:56: warning: right shift count >= width of type [-Wshift-count-overflow] 391 | admac_poke(ad, REG_TX_DESC_WRITE(channo), addr >> 32); | ^~ cc1: some warnings being treated as errors
vim +221 drivers/dma/apple-admac.c
180 181 enum dma_status admac_tx_status(struct dma_chan *chan, dma_cookie_t cookie, 182 struct dma_tx_state *txstate) 183 { 184 struct admac_chan *adchan = to_admac_chan(chan); 185 struct admac_data *ad = adchan->host; 186 struct admac_tx *adtx; 187 188 enum dma_status ret; 189 size_t residue; 190 unsigned long flags; 191 192 ret = dma_cookie_status(chan, cookie, txstate); 193 if (ret == DMA_COMPLETE || !txstate) 194 return ret; 195 196 /* 197 * Presumably ALSA code will query residue to know if an overrun occured, 198 * this seems a proper place to insert a write barrier. 199 */ 200 wmb(); 201 202 spin_lock_irqsave(&adchan->lock, flags); 203 adtx = adchan->current_tx; 204 205 if (adtx && adtx->tx.cookie == cookie) { 206 ret = DMA_IN_PROGRESS; 207 residue = admac_cyclic_read_residue(ad, adchan->no, adtx); 208 } else { 209 ret = DMA_IN_PROGRESS; 210 residue = 0; 211 list_for_each_entry(adtx, &adchan->issued, node) { 212 if (adtx->tx.cookie == cookie) { 213 residue = adtx->buf_len; 214 break; 215 } 216 } 217 } 218 spin_unlock_irqrestore(&adchan->lock, flags); 219 220 if (adtx) > 221 dev_dbg(ad->dev, "ch%d residue: %lx, (%ld%%)\n", adchan->no, 222 residue, residue*100/adtx->buf_len); 223 224 dma_set_residue(txstate, residue); 225 return ret; 226 } 227 228 void admac_start(struct admac_chan *adchan) 229 { 230 struct admac_data *ad = adchan->host; 231 int ch = adchan->no; 232 233 admac_poke(ad, REG_TX_STATUS1(ch), STATUS_DESC_DONE | STATUS_ERR); 234 admac_poke(ad, REG_TX_CTL(ch), REG_TX_CTL_RESET_RINGS); 235 admac_poke(ad, REG_TX_CTL(ch), 0); 236 admac_cyclic_write_one_desc(ad, ch, adchan->current_tx); 237 admac_poke(ad, REG_TX_EN, 1 << ch); 238 239 admac_cyclic_write_desc(ad, ch, adchan->current_tx); 240 241 dev_dbg(ad->dev, "ch%d start\n", ch); 242 } 243 244 void admac_issue_pending(struct dma_chan *chan) 245 { 246 struct admac_chan *adchan = to_admac_chan(chan); 247 struct admac_tx *tx; 248 unsigned long flags; 249 250 spin_lock_irqsave(&adchan->lock, flags); 251 list_splice_tail_init(&adchan->submitted, &adchan->issued); 252 if (!list_empty(&adchan->issued) && !adchan->current_tx) { 253 tx = list_first_entry(&adchan->issued, struct admac_tx, node); 254 list_del(&tx->node); 255 256 adchan->current_tx = tx; 257 adchan->nperiod_acks = 0; 258 admac_start(adchan); 259 } 260 spin_unlock_irqrestore(&adchan->lock, flags); 261 } 262 263 int admac_pause(struct dma_chan *chan) 264 { 265 struct admac_chan *adchan = to_admac_chan(chan); 266 267 admac_poke(adchan->host, REG_TX_EN_CLR, 1 << adchan->no); 268 269 return 0; 270 } 271 272 int admac_resume(struct dma_chan *chan) 273 { 274 struct admac_chan *adchan = to_admac_chan(chan); 275 276 admac_poke(adchan->host, REG_TX_EN, 1 << adchan->no); 277 278 return 0; 279 } 280 281 int admac_terminate_all(struct dma_chan *chan) 282 { 283 struct admac_chan *adchan = to_admac_chan(chan); 284 struct admac_tx *adtx, *_adtx; 285 unsigned long flags; 286 LIST_HEAD(head); 287 288 spin_lock_irqsave(&adchan->lock, flags); 289 admac_poke(adchan->host, REG_TX_EN_CLR, 1 << adchan->no); 290 adchan->current_tx = NULL; 291 list_splice_tail_init(&adchan->submitted, &head); 292 list_splice_tail_init(&adchan->issued, &head); 293 spin_unlock_irqrestore(&adchan->lock, flags); 294 295 list_for_each_entry_safe(adtx, _adtx, &head, node) { 296 list_del(&adtx->node); 297 admac_desc_free(&adtx->tx); 298 } 299 300 return 0; 301 } 302 303 dma_cookie_t admac_tx_submit(struct dma_async_tx_descriptor *tx) 304 { 305 struct admac_tx *adtx = to_admac_tx(tx); 306 struct admac_chan *adchan = to_admac_chan(tx->chan); 307 unsigned long flags; 308 dma_cookie_t cookie; 309 310 spin_lock_irqsave(&adchan->lock, flags); 311 cookie = dma_cookie_assign(tx); 312 list_add_tail(&adtx->node, &adchan->submitted); 313 spin_unlock_irqrestore(&adchan->lock, flags); 314 315 return cookie; 316 } 317 318 static int admac_desc_free(struct dma_async_tx_descriptor *tx) 319 { 320 struct admac_tx *adtx = to_admac_tx(tx); 321 devm_kfree(to_admac_chan(tx->chan)->host->dev, adtx); 322 return 0; 323 } 324 325 struct dma_async_tx_descriptor *admac_prep_dma_cyclic( 326 struct dma_chan *chan, dma_addr_t buf_addr, size_t buf_len, 327 size_t period_len, enum dma_transfer_direction direction, 328 unsigned long flags) 329 { 330 struct admac_chan *adchan = container_of(chan, struct admac_chan, chan); 331 struct admac_tx *adtx; 332 333 adtx = devm_kzalloc(adchan->host->dev, sizeof(*adtx), GFP_NOWAIT); 334 if (!adtx) 335 return NULL; 336 337 adtx->cyclic = true; 338 339 adtx->buf_addr = buf_addr; 340 adtx->buf_len = buf_len; 341 adtx->buf_end = buf_addr + buf_len; 342 adtx->period_len = period_len; 343 344 adtx->submitted_pos = 0; 345 adtx->reclaimed_pos = 0; 346 347 dma_async_tx_descriptor_init(&adtx->tx, chan); 348 adtx->tx.tx_submit = admac_tx_submit; 349 adtx->tx.desc_free = admac_desc_free; 350 351 return &adtx->tx; 352 } 353 354 static struct dma_chan *admac_dma_of_xlate(struct of_phandle_args *dma_spec, 355 struct of_dma *ofdma) 356 { 357 struct admac_data *ad = (struct admac_data*) ofdma->of_dma_data; 358 unsigned int index; 359 360 if (dma_spec->args_count != 1) 361 return NULL; 362 363 index = dma_spec->args[0]; 364 365 if (index >= ad->nchannels) { 366 dev_err(ad->dev, "channel index %u out of bounds\n", index); 367 return NULL; 368 } 369 370 return &ad->channels[index].chan; 371 } 372 373 /* 374 * Write one hardware descriptor for a dmaegine cyclic transaction. 375 */ 376 static void admac_cyclic_write_one_desc(struct admac_data *ad, int channo, 377 struct admac_tx *tx) 378 { 379 dma_addr_t addr; 380 381 if (WARN_ON(!tx->cyclic)) 382 return; 383 384 addr = tx->buf_addr + (tx->submitted_pos % tx->buf_len); 385 WARN_ON(addr + tx->period_len > tx->buf_end); 386 > 387 dev_dbg(ad->dev, "ch%d descriptor: addr=0x%llx len=0x%x flags=0x%lx\n", 388 channo, addr, (u32) tx->period_len, FLAG_DESC_NOTIFY); 389 390 admac_poke(ad, REG_TX_DESC_WRITE(channo), addr); > 391 admac_poke(ad, REG_TX_DESC_WRITE(channo), addr >> 32); 392 admac_poke(ad, REG_TX_DESC_WRITE(channo), tx->period_len); 393 admac_poke(ad, REG_TX_DESC_WRITE(channo), FLAG_DESC_NOTIFY); 394 395 tx->submitted_pos += tx->period_len; 396 tx->submitted_pos %= 2 * tx->buf_len; 397 } 398
--- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
| |