Thread (1 message) 1 message, 1 author, 2016-02-23

[PATCH] dma: mv_xor_v2: new driver

From: Vinod Koul <hidden>
Date: 2016-02-23 03:02:35
Also in: linux-devicetree

On Mon, Feb 22, 2016 at 10:16:21AM +0100, Thomas Petazzoni wrote:
quoted
So why should it depend on how kernel is configured?
Because using upper_32_bits() on a 32-bits type seems wrong? You can do
a git grep for CONFIG_ARCH_DMA_ADDR_T_64BIT, and see that it is already
used in drivers/dma/sh/rcar-dmac.c, drivers/gpu/drm/tegra/dc.c or
drivers/iommu/tegra-smmu.c.

drivers/dma/sh/rcar-dmac.c uses it for exactly the same reason as me:
they need to know if dma_addr_t is 32 bits or 64 bits, and if it's 64
bits, then they need to take the upper 32 bits and feed them to some
register.
So is the hardware capable of 32bit of 64bit?

quoted
You don't want to check the source of interrupt?
To protect against what? An improper MSI message that ends up firing
this interrupt for now reason? But only kernel space stuff (or
privileged code in user-space) can write to the MSI triggering
registers, so we should be able to trust that such an improper MSI
message will not arrive.
Your device might go bonkers or some erranious programming does cause
interrupts. Its better to be safe than sorry :)
That being said, I can add a read of the pending descriptors number,
and if it's 0, then bail out with IRQ_NONE. Is that what you were
thinking about?
Sounds good

quoted
why BUG_ON, is the system unusable after this?
Well, the XOR engine cannot do XOR with 0 source buffers, or with more
than MV_XOR_V2_CMD_LINE_NUM_MAX_D_BUF.

But I see that I'm already setting max_xor in struct dma_device, so one
can assume that ->prep_dma_xor() will not be called with src_cnt == or
src_cnt > max_xor, so this BUG_ON can be removed.
Okay, you should return NULL to caller if that is the case

-- 
~Vinod
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help