* [linux-next:master 7518/15793] drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types)
@ 2020-06-06 6:22 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2020-06-06 6:22 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 10441 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head: af30725c132e2e5c5369b60369ff0771fde7d4ff
commit: bbfa112b46bdbbdfc2f5bfb9c2dcbef780ff6417 [7518/15793] READ_ONCE: Simplify implementations of {READ,WRITE}_ONCE()
config: i386-randconfig-s001-20200606 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-13) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.1-247-gcadbd124-dirty
git checkout bbfa112b46bdbbdfc2f5bfb9c2dcbef780ff6417
# save the attached .config to linux build tree
make W=1 C=1 ARCH=i386 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__'
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int [usertype] src @@
>> drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: got unsigned int [usertype] src
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: sparse: restricted __le32 degrades to integer
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int @@
drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:452:17: sparse: got unsigned int
>> drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got unsigned int [usertype] dest @@
drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:456:17: sparse: got unsigned int [usertype] dest
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: sparse: incorrect type in assignment (different base types) @@ expected restricted __le32 volatile @@ got int @@
drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: expected restricted __le32 volatile
>> drivers/dma/mediatek/mtk-hsdma.c:457:17: sparse: got int
drivers/dma/mediatek/mtk-hsdma.c:580:33: sparse: sparse: restricted __le32 degrades to integer
drivers/dma/mediatek/mtk-hsdma.c:604:26: sparse: sparse: Using plain integer as NULL pointer
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ddone @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: expected restricted __le32 [usertype] ddone
drivers/dma/mediatek/mtk-hsdma.c:878:18: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ls0 @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: expected restricted __le32 [usertype] ls0
drivers/dma/mediatek/mtk-hsdma.c:879:16: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ddone @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: expected restricted __le32 [usertype] ddone
drivers/dma/mediatek/mtk-hsdma.c:883:18: sparse: got unsigned long
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __le32 [usertype] ls0 @@ got unsigned long @@
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: expected restricted __le32 [usertype] ls0
drivers/dma/mediatek/mtk-hsdma.c:884:16: sparse: got unsigned long
vim +451 drivers/dma/mediatek/mtk-hsdma.c
548c4597e984b7 Sean Wang 2018-03-15 411
548c4597e984b7 Sean Wang 2018-03-15 412 static int mtk_hsdma_issue_pending_vdesc(struct mtk_hsdma_device *hsdma,
548c4597e984b7 Sean Wang 2018-03-15 413 struct mtk_hsdma_pchan *pc,
548c4597e984b7 Sean Wang 2018-03-15 414 struct mtk_hsdma_vdesc *hvd)
548c4597e984b7 Sean Wang 2018-03-15 415 {
548c4597e984b7 Sean Wang 2018-03-15 416 struct mtk_hsdma_ring *ring = &pc->ring;
548c4597e984b7 Sean Wang 2018-03-15 417 struct mtk_hsdma_pdesc *txd, *rxd;
548c4597e984b7 Sean Wang 2018-03-15 418 u16 reserved, prev, tlen, num_sgs;
548c4597e984b7 Sean Wang 2018-03-15 419 unsigned long flags;
548c4597e984b7 Sean Wang 2018-03-15 420
548c4597e984b7 Sean Wang 2018-03-15 421 /* Protect against PC is accessed by multiple VCs simultaneously */
548c4597e984b7 Sean Wang 2018-03-15 422 spin_lock_irqsave(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 423
548c4597e984b7 Sean Wang 2018-03-15 424 /*
548c4597e984b7 Sean Wang 2018-03-15 425 * Reserve rooms, where pc->nr_free is used to track how many free
548c4597e984b7 Sean Wang 2018-03-15 426 * rooms in the ring being updated in user and IRQ context.
548c4597e984b7 Sean Wang 2018-03-15 427 */
548c4597e984b7 Sean Wang 2018-03-15 428 num_sgs = DIV_ROUND_UP(hvd->len, MTK_HSDMA_MAX_LEN);
548c4597e984b7 Sean Wang 2018-03-15 429 reserved = min_t(u16, num_sgs, atomic_read(&pc->nr_free));
548c4597e984b7 Sean Wang 2018-03-15 430
548c4597e984b7 Sean Wang 2018-03-15 431 if (!reserved) {
548c4597e984b7 Sean Wang 2018-03-15 432 spin_unlock_irqrestore(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 433 return -ENOSPC;
548c4597e984b7 Sean Wang 2018-03-15 434 }
548c4597e984b7 Sean Wang 2018-03-15 435
548c4597e984b7 Sean Wang 2018-03-15 436 atomic_sub(reserved, &pc->nr_free);
548c4597e984b7 Sean Wang 2018-03-15 437
548c4597e984b7 Sean Wang 2018-03-15 438 while (reserved--) {
548c4597e984b7 Sean Wang 2018-03-15 439 /* Limit size by PD capability for valid data moving */
548c4597e984b7 Sean Wang 2018-03-15 440 tlen = (hvd->len > MTK_HSDMA_MAX_LEN) ?
548c4597e984b7 Sean Wang 2018-03-15 441 MTK_HSDMA_MAX_LEN : hvd->len;
548c4597e984b7 Sean Wang 2018-03-15 442
548c4597e984b7 Sean Wang 2018-03-15 443 /*
548c4597e984b7 Sean Wang 2018-03-15 444 * Setup PDs using the remaining VD info mapped on those
548c4597e984b7 Sean Wang 2018-03-15 445 * reserved rooms. And since RXD is shared memory between the
548c4597e984b7 Sean Wang 2018-03-15 446 * host and the device allocated by dma_alloc_coherent call,
548c4597e984b7 Sean Wang 2018-03-15 447 * the helper macro WRITE_ONCE can ensure the data written to
548c4597e984b7 Sean Wang 2018-03-15 448 * RAM would really happens.
548c4597e984b7 Sean Wang 2018-03-15 449 */
548c4597e984b7 Sean Wang 2018-03-15 450 txd = &ring->txd[ring->cur_tptr];
548c4597e984b7 Sean Wang 2018-03-15 @451 WRITE_ONCE(txd->desc1, hvd->src);
548c4597e984b7 Sean Wang 2018-03-15 @452 WRITE_ONCE(txd->desc2,
548c4597e984b7 Sean Wang 2018-03-15 453 hsdma->soc->ls0 | MTK_HSDMA_DESC_PLEN(tlen));
548c4597e984b7 Sean Wang 2018-03-15 454
548c4597e984b7 Sean Wang 2018-03-15 455 rxd = &ring->rxd[ring->cur_tptr];
548c4597e984b7 Sean Wang 2018-03-15 @456 WRITE_ONCE(rxd->desc1, hvd->dest);
548c4597e984b7 Sean Wang 2018-03-15 @457 WRITE_ONCE(rxd->desc2, MTK_HSDMA_DESC_PLEN(tlen));
548c4597e984b7 Sean Wang 2018-03-15 458
548c4597e984b7 Sean Wang 2018-03-15 459 /* Associate VD, the PD belonged to */
548c4597e984b7 Sean Wang 2018-03-15 460 ring->cb[ring->cur_tptr].vd = &hvd->vd;
548c4597e984b7 Sean Wang 2018-03-15 461
548c4597e984b7 Sean Wang 2018-03-15 462 /* Move forward the pointer of TX ring */
548c4597e984b7 Sean Wang 2018-03-15 463 ring->cur_tptr = MTK_HSDMA_NEXT_DESP_IDX(ring->cur_tptr,
548c4597e984b7 Sean Wang 2018-03-15 464 MTK_DMA_SIZE);
548c4597e984b7 Sean Wang 2018-03-15 465
548c4597e984b7 Sean Wang 2018-03-15 466 /* Update VD with remaining data */
548c4597e984b7 Sean Wang 2018-03-15 467 hvd->src += tlen;
548c4597e984b7 Sean Wang 2018-03-15 468 hvd->dest += tlen;
548c4597e984b7 Sean Wang 2018-03-15 469 hvd->len -= tlen;
548c4597e984b7 Sean Wang 2018-03-15 470 }
548c4597e984b7 Sean Wang 2018-03-15 471
548c4597e984b7 Sean Wang 2018-03-15 472 /*
548c4597e984b7 Sean Wang 2018-03-15 473 * Tagging flag for the last PD for VD will be responsible for
548c4597e984b7 Sean Wang 2018-03-15 474 * completing VD.
548c4597e984b7 Sean Wang 2018-03-15 475 */
548c4597e984b7 Sean Wang 2018-03-15 476 if (!hvd->len) {
548c4597e984b7 Sean Wang 2018-03-15 477 prev = MTK_HSDMA_LAST_DESP_IDX(ring->cur_tptr, MTK_DMA_SIZE);
548c4597e984b7 Sean Wang 2018-03-15 478 ring->cb[prev].flag = MTK_HSDMA_VDESC_FINISHED;
548c4597e984b7 Sean Wang 2018-03-15 479 }
548c4597e984b7 Sean Wang 2018-03-15 480
548c4597e984b7 Sean Wang 2018-03-15 481 /* Ensure all changes indeed done before we're going on */
548c4597e984b7 Sean Wang 2018-03-15 482 wmb();
548c4597e984b7 Sean Wang 2018-03-15 483
548c4597e984b7 Sean Wang 2018-03-15 484 /*
548c4597e984b7 Sean Wang 2018-03-15 485 * Updating into hardware the pointer of TX ring lets HSDMA to take
548c4597e984b7 Sean Wang 2018-03-15 486 * action for those pending PDs.
548c4597e984b7 Sean Wang 2018-03-15 487 */
548c4597e984b7 Sean Wang 2018-03-15 488 mtk_dma_write(hsdma, MTK_HSDMA_TX_CPU, ring->cur_tptr);
548c4597e984b7 Sean Wang 2018-03-15 489
548c4597e984b7 Sean Wang 2018-03-15 490 spin_unlock_irqrestore(&hsdma->lock, flags);
548c4597e984b7 Sean Wang 2018-03-15 491
548c4597e984b7 Sean Wang 2018-03-15 492 return 0;
548c4597e984b7 Sean Wang 2018-03-15 493 }
548c4597e984b7 Sean Wang 2018-03-15 494
:::::: The code at line 451 was first introduced by commit
:::::: 548c4597e984b79aad8190235d664f1c3a433f94 dmaengine: mediatek: Add MediaTek High-Speed DMA controller for MT7622 and MT7623 SoC
:::::: TO: Sean Wang <sean.wang@mediatek.com>
:::::: CC: Vinod Koul <vinod.koul@intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 42429 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-06-06 6:22 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-06 6:22 [linux-next:master 7518/15793] drivers/dma/mediatek/mtk-hsdma.c:451:17: sparse: sparse: incorrect type in assignment (different base types) kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.