Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

dma: mv_xor: Silence a bunch of LPAE-related warnings

Enabling some of the mvebu platforms in the multiplatform config for ARM
enabled these drivers, which also triggered a bunch of warnings when LPAE
is enabled (thus making phys_addr_t 64-bit).

Most changes are switching printk formats, but also a bit of changes to what
used to be array-based pointer arithmetic that could just be done with the
address types instead.

The warnings were:

drivers/dma/mv_xor.c: In function 'mv_xor_tx_submit':
drivers/dma/mv_xor.c:500:3: warning: format '%x' expects argument of type
'unsigned int', but argument 4 has type 'dma_addr_t' [-Wformat]
drivers/dma/mv_xor.c: In function 'mv_xor_alloc_chan_resources':
drivers/dma/mv_xor.c:553:13: warning: cast to pointer from integer of
different size [-Wint-to-pointer-cast]
drivers/dma/mv_xor.c:555:4: warning: cast from pointer to integer of
different size [-Wpointer-to-int-cast]
drivers/dma/mv_xor.c: In function 'mv_xor_prep_dma_memcpy':
drivers/dma/mv_xor.c:584:2: warning: format '%x' expects argument of type
'unsigned int', but argument 5 has type 'dma_addr_t' [-Wformat]
drivers/dma/mv_xor.c:584:2: warning: format '%x' expects argument of type
'unsigned int', but argument 6 has type 'dma_addr_t' [-Wformat]
drivers/dma/mv_xor.c: In function 'mv_xor_prep_dma_xor':
drivers/dma/mv_xor.c:628:2: warning: format '%u' expects argument of type
'unsigned int', but argument 7 has type 'dma_addr_t' [-Wformat]

Acked-by: Vinod Koul <vinod.koul@intel.com>
Acked-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Olof Johansson <olof@lixom.net>

+12 -12
+12 -12
drivers/dma/mv_xor.c
··· 497 497 if (!mv_can_chain(grp_start)) 498 498 goto submit_done; 499 499 500 - dev_dbg(mv_chan_to_devp(mv_chan), "Append to last desc %x\n", 501 - old_chain_tail->async_tx.phys); 500 + dev_dbg(mv_chan_to_devp(mv_chan), "Append to last desc %pa\n", 501 + &old_chain_tail->async_tx.phys); 502 502 503 503 /* fix up the hardware chain */ 504 504 mv_desc_set_next_desc(old_chain_tail, grp_start->async_tx.phys); ··· 527 527 /* returns the number of allocated descriptors */ 528 528 static int mv_xor_alloc_chan_resources(struct dma_chan *chan) 529 529 { 530 - char *hw_desc; 530 + void *virt_desc; 531 + dma_addr_t dma_desc; 531 532 int idx; 532 533 struct mv_xor_chan *mv_chan = to_mv_xor_chan(chan); 533 534 struct mv_xor_desc_slot *slot = NULL; ··· 543 542 " %d descriptor slots", idx); 544 543 break; 545 544 } 546 - hw_desc = (char *) mv_chan->dma_desc_pool_virt; 547 - slot->hw_desc = (void *) &hw_desc[idx * MV_XOR_SLOT_SIZE]; 545 + virt_desc = mv_chan->dma_desc_pool_virt; 546 + slot->hw_desc = virt_desc + idx * MV_XOR_SLOT_SIZE; 548 547 549 548 dma_async_tx_descriptor_init(&slot->async_tx, chan); 550 549 slot->async_tx.tx_submit = mv_xor_tx_submit; 551 550 INIT_LIST_HEAD(&slot->chain_node); 552 551 INIT_LIST_HEAD(&slot->slot_node); 553 552 INIT_LIST_HEAD(&slot->tx_list); 554 - hw_desc = (char *) mv_chan->dma_desc_pool; 555 - slot->async_tx.phys = 556 - (dma_addr_t) &hw_desc[idx * MV_XOR_SLOT_SIZE]; 553 + dma_desc = mv_chan->dma_desc_pool; 554 + slot->async_tx.phys = dma_desc + idx * MV_XOR_SLOT_SIZE; 557 555 slot->idx = idx++; 558 556 559 557 spin_lock_bh(&mv_chan->lock); ··· 582 582 int slot_cnt; 583 583 584 584 dev_dbg(mv_chan_to_devp(mv_chan), 585 - "%s dest: %x src %x len: %u flags: %ld\n", 586 - __func__, dest, src, len, flags); 585 + "%s dest: %pad src %pad len: %u flags: %ld\n", 586 + __func__, &dest, &src, len, flags); 587 587 if (unlikely(len < MV_XOR_MIN_BYTE_COUNT)) 588 588 return NULL; 589 589 ··· 626 626 BUG_ON(len > MV_XOR_MAX_BYTE_COUNT); 627 627 628 628 dev_dbg(mv_chan_to_devp(mv_chan), 629 - "%s src_cnt: %d len: dest %x %u flags: %ld\n", 630 - __func__, src_cnt, len, dest, flags); 629 + "%s src_cnt: %d len: %u dest %pad flags: %ld\n", 630 + __func__, src_cnt, len, &dest, flags); 631 631 632 632 spin_lock_bh(&mv_chan->lock); 633 633 slot_cnt = mv_chan_xor_slot_count(len, src_cnt);