Re: [PATCH V2 2/3] powerpc: Add support for swiotlb on 32-bit

From: Becky Bruce
Date: Wed May 27 2009 - 15:11:28 EST



On May 26, 2009, at 7:51 AM, Ian Campbell wrote:

On Fri, 2009-05-22 at 19:55 -0400, Jeremy Fitzhardinge wrote:
Ian Campbell wrote:
On Thu, 2009-05-21 at 14:27 -0400, Becky Bruce wrote:

I can work with that, but it's going to be a bit inefficient, as I
actually need the dma_addr_t, not the phys_addr_t, so I'll have to
convert. In every case, this is a conversion I've already done and
that I need in the calling code as well.


Does

dma_addr_t dma_map_range(struct device *hwdev, phys_addr_t addr,
size_t size);

work for you?

If the range does not need mapping then it returns the dma address, if
you needed to calculate the dma address anyway to figure out if mapping
is required then this is fine. If the range does need mapping then it
returns NULL.


My only concern is whether dma_addr_t == 0 is actually equivalent to
NULL. That is, can we be sure that address 0 will never be used?

It seems not, ~0UL might have been an option, but...

Taking dma_alloc_coherent as a model, we could have something like:

int dma_map_range(struct device *hwdev, phys_addr_t addr, size_t size, dma_addr_t *dma_addrp);


where *dma_addrp is set if the function returns success (bool return
type might be clearer).

... this sounds like a good idea to me.

I agree. This will work for me as well.

-becky

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/