Hi Guoniu.zhou,
FYI, the error/warning still remains.
tree:
https://github.com/Freescale/linux-fslc pr/462
head: d82f28fa72f28c7f24d32e0707fce12f234402bd
commit: c339e95a929cb7112a10f8b7ccccc62bcae2e48a [11464/14694] MLK-25591-03: pxp: Kconfg:
remove dependency of 32 bits ARM platform
config: nds32-randconfig-r011-20211001 (attached as .config)
compiler: nds32le-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/Freescale/linux-fslc/commit/c339e95a929cb7112a10f8b7cc...
git remote add freescale-fslc
https://github.com/Freescale/linux-fslc
git fetch --no-tags freescale-fslc pr/462
git checkout c339e95a929cb7112a10f8b7ccccc62bcae2e48a
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross ARCH=nds32
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
drivers/dma/pxp/pxp_device.c: In function 'pxp_ioc_config_chan':
> drivers/dma/pxp/pxp_device.c:357:50: warning: implicit conversion
from 'enum dma_data_direction' to 'enum dma_transfer_direction'
[-Wenum-conversion]
357 |
DMA_TO_DEVICE,
| ^~~~~~~~~~~~~
vim +357 drivers/dma/pxp/pxp_device.c
ad85d4573b9201 Robby Cai 2019-08-15 305
ad85d4573b9201 Robby Cai 2019-08-15 306 static int pxp_ioc_config_chan(struct pxp_file
*priv, unsigned long arg)
ad85d4573b9201 Robby Cai 2019-08-15 307 {
ad85d4573b9201 Robby Cai 2019-08-15 308 struct scatterlist *sg;
ad85d4573b9201 Robby Cai 2019-08-15 309 struct pxp_tx_desc *desc;
ad85d4573b9201 Robby Cai 2019-08-15 310 struct dma_async_tx_descriptor *txd;
ad85d4573b9201 Robby Cai 2019-08-15 311 struct pxp_config_data *pxp_conf;
ad85d4573b9201 Robby Cai 2019-08-15 312 dma_cookie_t cookie;
ad85d4573b9201 Robby Cai 2019-08-15 313 int handle, chan_id;
ad85d4573b9201 Robby Cai 2019-08-15 314 struct dma_chan *chan;
ad85d4573b9201 Robby Cai 2019-08-15 315 struct pxp_chan_obj *obj;
ad85d4573b9201 Robby Cai 2019-08-15 316 int i = 0, j = 0, k = 0, m = 0, length, ret,
sg_len;
ad85d4573b9201 Robby Cai 2019-08-15 317
ad85d4573b9201 Robby Cai 2019-08-15 318 pxp_conf = kzalloc(sizeof(*pxp_conf),
GFP_KERNEL);
ad85d4573b9201 Robby Cai 2019-08-15 319 if (!pxp_conf)
ad85d4573b9201 Robby Cai 2019-08-15 320 return -ENOMEM;
ad85d4573b9201 Robby Cai 2019-08-15 321
ad85d4573b9201 Robby Cai 2019-08-15 322 ret = copy_from_user(pxp_conf,
ad85d4573b9201 Robby Cai 2019-08-15 323 (struct pxp_config_data *)arg,
ad85d4573b9201 Robby Cai 2019-08-15 324 sizeof(struct pxp_config_data));
ad85d4573b9201 Robby Cai 2019-08-15 325 if (ret) {
ad85d4573b9201 Robby Cai 2019-08-15 326 kfree(pxp_conf);
ad85d4573b9201 Robby Cai 2019-08-15 327 return -EFAULT;
ad85d4573b9201 Robby Cai 2019-08-15 328 }
ad85d4573b9201 Robby Cai 2019-08-15 329
ad85d4573b9201 Robby Cai 2019-08-15 330 handle = pxp_conf->handle;
ad85d4573b9201 Robby Cai 2019-08-15 331 obj = pxp_channel_object_lookup(priv, handle);
ad85d4573b9201 Robby Cai 2019-08-15 332 if (!obj) {
ad85d4573b9201 Robby Cai 2019-08-15 333 kfree(pxp_conf);
ad85d4573b9201 Robby Cai 2019-08-15 334 return -EINVAL;
ad85d4573b9201 Robby Cai 2019-08-15 335 }
ad85d4573b9201 Robby Cai 2019-08-15 336 chan = obj->chan;
ad85d4573b9201 Robby Cai 2019-08-15 337 chan_id = chan->chan_id;
ad85d4573b9201 Robby Cai 2019-08-15 338
ad85d4573b9201 Robby Cai 2019-08-15 339 sg_len = 3;
ad85d4573b9201 Robby Cai 2019-08-15 340 if (pxp_conf->proc_data.engine_enable &
PXP_ENABLE_WFE_A)
ad85d4573b9201 Robby Cai 2019-08-15 341 sg_len += 4;
ad85d4573b9201 Robby Cai 2019-08-15 342 if (pxp_conf->proc_data.engine_enable &
PXP_ENABLE_WFE_B)
ad85d4573b9201 Robby Cai 2019-08-15 343 sg_len += 4;
ad85d4573b9201 Robby Cai 2019-08-15 344 if (pxp_conf->proc_data.engine_enable &
PXP_ENABLE_DITHER)
ad85d4573b9201 Robby Cai 2019-08-15 345 sg_len += 4;
ad85d4573b9201 Robby Cai 2019-08-15 346
ad85d4573b9201 Robby Cai 2019-08-15 347 sg = kmalloc(sizeof(*sg) * sg_len,
GFP_KERNEL);
ad85d4573b9201 Robby Cai 2019-08-15 348 if (!sg) {
ad85d4573b9201 Robby Cai 2019-08-15 349 kfree(pxp_conf);
ad85d4573b9201 Robby Cai 2019-08-15 350 return -ENOMEM;
ad85d4573b9201 Robby Cai 2019-08-15 351 }
ad85d4573b9201 Robby Cai 2019-08-15 352
ad85d4573b9201 Robby Cai 2019-08-15 353 sg_init_table(sg, sg_len);
ad85d4573b9201 Robby Cai 2019-08-15 354
ad85d4573b9201 Robby Cai 2019-08-15 355 txd =
chan->device->device_prep_slave_sg(chan,
ad85d4573b9201 Robby Cai 2019-08-15 356 sg, sg_len,
ad85d4573b9201 Robby Cai 2019-08-15 @357 DMA_TO_DEVICE,
ad85d4573b9201 Robby Cai 2019-08-15 358 DMA_PREP_INTERRUPT,
ad85d4573b9201 Robby Cai 2019-08-15 359 NULL);
ad85d4573b9201 Robby Cai 2019-08-15 360 if (!txd) {
ad85d4573b9201 Robby Cai 2019-08-15 361 pr_err("Error preparing a DMA transaction
descriptor.\n");
ad85d4573b9201 Robby Cai 2019-08-15 362 kfree(pxp_conf);
ad85d4573b9201 Robby Cai 2019-08-15 363 kfree(sg);
ad85d4573b9201 Robby Cai 2019-08-15 364 return -EIO;
ad85d4573b9201 Robby Cai 2019-08-15 365 }
ad85d4573b9201 Robby Cai 2019-08-15 366
ad85d4573b9201 Robby Cai 2019-08-15 367 txd->callback_param = txd;
ad85d4573b9201 Robby Cai 2019-08-15 368 txd->callback = pxp_dma_done;
ad85d4573b9201 Robby Cai 2019-08-15 369
ad85d4573b9201 Robby Cai 2019-08-15 370 desc = to_tx_desc(txd);
ad85d4573b9201 Robby Cai 2019-08-15 371
ad85d4573b9201 Robby Cai 2019-08-15 372 length = desc->len;
ad85d4573b9201 Robby Cai 2019-08-15 373 for (i = 0; i < length; i++) {
ad85d4573b9201 Robby Cai 2019-08-15 374 if (i == 0) { /* S0 */
ad85d4573b9201 Robby Cai 2019-08-15 375 memcpy(&desc->proc_data,
ad85d4573b9201 Robby Cai 2019-08-15 376 &pxp_conf->proc_data,
ad85d4573b9201 Robby Cai 2019-08-15 377 sizeof(struct pxp_proc_data));
ad85d4573b9201 Robby Cai 2019-08-15 378 memcpy(&desc->layer_param.s0_param,
ad85d4573b9201 Robby Cai 2019-08-15 379 &pxp_conf->s0_param,
ad85d4573b9201 Robby Cai 2019-08-15 380 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 381 desc = desc->next;
ad85d4573b9201 Robby Cai 2019-08-15 382 } else if (i == 1) { /* Output */
ad85d4573b9201 Robby Cai 2019-08-15 383 memcpy(&desc->layer_param.out_param,
ad85d4573b9201 Robby Cai 2019-08-15 384 &pxp_conf->out_param,
ad85d4573b9201 Robby Cai 2019-08-15 385 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 386 desc = desc->next;
ad85d4573b9201 Robby Cai 2019-08-15 387 } else if (i == 2) {
ad85d4573b9201 Robby Cai 2019-08-15 388 /* OverLay */
ad85d4573b9201 Robby Cai 2019-08-15 389 memcpy(&desc->layer_param.ol_param,
ad85d4573b9201 Robby Cai 2019-08-15 390 &pxp_conf->ol_param,
ad85d4573b9201 Robby Cai 2019-08-15 391 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 392 desc = desc->next;
ad85d4573b9201 Robby Cai 2019-08-15 393 } else if
((pxp_conf->proc_data.engine_enable & PXP_ENABLE_WFE_A) && (j < 4)) {
ad85d4573b9201 Robby Cai 2019-08-15 394 for (j = 0; j < 4; j++) {
ad85d4573b9201 Robby Cai 2019-08-15 395 if (j == 0) {
ad85d4573b9201 Robby Cai 2019-08-15 396
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 397
&pxp_conf->wfe_a_fetch_param[0],
ad85d4573b9201 Robby Cai 2019-08-15 398 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 399 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_A_FETCH0;
ad85d4573b9201 Robby Cai 2019-08-15 400 } else if (j == 1) {
ad85d4573b9201 Robby Cai 2019-08-15 401
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 402
&pxp_conf->wfe_a_fetch_param[1],
ad85d4573b9201 Robby Cai 2019-08-15 403 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 404 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_A_FETCH1;
ad85d4573b9201 Robby Cai 2019-08-15 405 } else if (j == 2) {
ad85d4573b9201 Robby Cai 2019-08-15 406
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 407
&pxp_conf->wfe_a_store_param[0],
ad85d4573b9201 Robby Cai 2019-08-15 408 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 409 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_A_STORE0;
ad85d4573b9201 Robby Cai 2019-08-15 410 } else if (j == 3) {
ad85d4573b9201 Robby Cai 2019-08-15 411
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 412
&pxp_conf->wfe_a_store_param[1],
ad85d4573b9201 Robby Cai 2019-08-15 413 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 414 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_A_STORE1;
ad85d4573b9201 Robby Cai 2019-08-15 415 }
ad85d4573b9201 Robby Cai 2019-08-15 416
ad85d4573b9201 Robby Cai 2019-08-15 417 desc = desc->next;
ad85d4573b9201 Robby Cai 2019-08-15 418 }
ad85d4573b9201 Robby Cai 2019-08-15 419
ad85d4573b9201 Robby Cai 2019-08-15 420 i += 4;
ad85d4573b9201 Robby Cai 2019-08-15 421
ad85d4573b9201 Robby Cai 2019-08-15 422 } else if
((pxp_conf->proc_data.engine_enable & PXP_ENABLE_WFE_B) && (m < 4)) {
ad85d4573b9201 Robby Cai 2019-08-15 423 for (m = 0; m < 4; m++) {
ad85d4573b9201 Robby Cai 2019-08-15 424 if (m == 0) {
ad85d4573b9201 Robby Cai 2019-08-15 425
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 426
&pxp_conf->wfe_b_fetch_param[0],
ad85d4573b9201 Robby Cai 2019-08-15 427 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 428 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_B_FETCH0;
ad85d4573b9201 Robby Cai 2019-08-15 429 } else if (m == 1) {
ad85d4573b9201 Robby Cai 2019-08-15 430
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 431
&pxp_conf->wfe_b_fetch_param[1],
ad85d4573b9201 Robby Cai 2019-08-15 432 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 433 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_B_FETCH1;
ad85d4573b9201 Robby Cai 2019-08-15 434 } else if (m == 2) {
ad85d4573b9201 Robby Cai 2019-08-15 435
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 436
&pxp_conf->wfe_b_store_param[0],
ad85d4573b9201 Robby Cai 2019-08-15 437 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 438 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_B_STORE0;
ad85d4573b9201 Robby Cai 2019-08-15 439 } else if (m == 3) {
ad85d4573b9201 Robby Cai 2019-08-15 440
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 441
&pxp_conf->wfe_b_store_param[1],
ad85d4573b9201 Robby Cai 2019-08-15 442 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 443 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_WFE_B_STORE1;
ad85d4573b9201 Robby Cai 2019-08-15 444 }
ad85d4573b9201 Robby Cai 2019-08-15 445
ad85d4573b9201 Robby Cai 2019-08-15 446 desc = desc->next;
ad85d4573b9201 Robby Cai 2019-08-15 447 }
ad85d4573b9201 Robby Cai 2019-08-15 448
ad85d4573b9201 Robby Cai 2019-08-15 449 i += 4;
ad85d4573b9201 Robby Cai 2019-08-15 450
ad85d4573b9201 Robby Cai 2019-08-15 451 } else if
((pxp_conf->proc_data.engine_enable & PXP_ENABLE_DITHER) && (k < 4)) {
ad85d4573b9201 Robby Cai 2019-08-15 452 for (k = 0; k < 4; k++) {
ad85d4573b9201 Robby Cai 2019-08-15 453 if (k == 0) {
ad85d4573b9201 Robby Cai 2019-08-15 454
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 455
&pxp_conf->dither_fetch_param[0],
ad85d4573b9201 Robby Cai 2019-08-15 456 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 457 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_DITHER_FETCH0;
ad85d4573b9201 Robby Cai 2019-08-15 458 } else if (k == 1) {
ad85d4573b9201 Robby Cai 2019-08-15 459
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 460
&pxp_conf->dither_fetch_param[1],
ad85d4573b9201 Robby Cai 2019-08-15 461 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 462 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_DITHER_FETCH1;
ad85d4573b9201 Robby Cai 2019-08-15 463 } else if (k == 2) {
ad85d4573b9201 Robby Cai 2019-08-15 464
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 465
&pxp_conf->dither_store_param[0],
ad85d4573b9201 Robby Cai 2019-08-15 466 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 467 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_DITHER_STORE0;
ad85d4573b9201 Robby Cai 2019-08-15 468 } else if (k == 3) {
ad85d4573b9201 Robby Cai 2019-08-15 469
memcpy(&desc->layer_param.processing_param,
ad85d4573b9201 Robby Cai 2019-08-15 470
&pxp_conf->dither_store_param[1],
ad85d4573b9201 Robby Cai 2019-08-15 471 sizeof(struct pxp_layer_param));
ad85d4573b9201 Robby Cai 2019-08-15 472 desc->layer_param.processing_param.flag
= PXP_BUF_FLAG_DITHER_STORE1;
ad85d4573b9201 Robby Cai 2019-08-15 473 }
ad85d4573b9201 Robby Cai 2019-08-15 474
ad85d4573b9201 Robby Cai 2019-08-15 475 desc = desc->next;
ad85d4573b9201 Robby Cai 2019-08-15 476 }
ad85d4573b9201 Robby Cai 2019-08-15 477
ad85d4573b9201 Robby Cai 2019-08-15 478 i += 4;
ad85d4573b9201 Robby Cai 2019-08-15 479 }
ad85d4573b9201 Robby Cai 2019-08-15 480 }
ad85d4573b9201 Robby Cai 2019-08-15 481
ad85d4573b9201 Robby Cai 2019-08-15 482 cookie = txd->tx_submit(txd);
ad85d4573b9201 Robby Cai 2019-08-15 483 if (cookie < 0) {
ad85d4573b9201 Robby Cai 2019-08-15 484 pr_err("Error tx_submit\n");
ad85d4573b9201 Robby Cai 2019-08-15 485 kfree(pxp_conf);
ad85d4573b9201 Robby Cai 2019-08-15 486 kfree(sg);
ad85d4573b9201 Robby Cai 2019-08-15 487 return -EIO;
ad85d4573b9201 Robby Cai 2019-08-15 488 }
ad85d4573b9201 Robby Cai 2019-08-15 489
ad85d4573b9201 Robby Cai 2019-08-15 490
atomic_inc(&irq_info[chan_id].irq_pending);
ad85d4573b9201 Robby Cai 2019-08-15 491
ad85d4573b9201 Robby Cai 2019-08-15 492 kfree(pxp_conf);
ad85d4573b9201 Robby Cai 2019-08-15 493 kfree(sg);
ad85d4573b9201 Robby Cai 2019-08-15 494
ad85d4573b9201 Robby Cai 2019-08-15 495 return 0;
ad85d4573b9201 Robby Cai 2019-08-15 496 }
ad85d4573b9201 Robby Cai 2019-08-15 497
:::::: The code at line 357 was first introduced by commit
:::::: ad85d4573b9201d18cc7d35ce05e4df8e5138b52 dma: pxp: porting pxp dma driver from
imx_4.19.y
:::::: TO: Robby Cai <robby.cai(a)nxp.com>
:::::: CC: Dong Aisheng <aisheng.dong(a)nxp.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org