Re: [PATCH 4/7] swiotlb: Allow arch override of address_needs_mapping

From: Kumar Gala
Date: Thu Apr 09 2009 - 00:45:10 EST



On Apr 8, 2009, at 7:09 PM, Jeremy Fitzhardinge wrote:

FUJITA Tomonori wrote:
On Wed, 08 Apr 2009 16:16:17 -0700
Jeremy Fitzhardinge <jeremy@xxxxxxxx> wrote:


FUJITA Tomonori wrote:

Becky's patches of last week also added __weak annotations to swiotlb_bus_to_virt, virt_to_bus and bus_to_phys; added the hwdev parameter to swiotlb_bus_to_phys; and added a weak swiotlb_arch_address_needs_mapping. I assume that was needed because powerpc needs non-trivial implementations for those functions.

Hmm, what she added are wrappers of virt_to_bus and bus_to_virt. We
can remove these and directly use virt_to_bus and bus_to_virt.

In general those interfaces are deprecated. Are we un-deprecating them? Or do you mean adding virt<->bus to dma_ops?


Hmm, these interfaces are wrong for drivers surely because they can't
handle dma mapping properly. However, they are exactly what swiotlb
needs (swiotlb doesn't need to care about dma mapping).

It needs to care about the mapping from phys to bus. On x86 they're identical, but on powerpc there can be at least an offset between them.

Until 2.6.28,
swiotlb has used them. They are with IA64, X86_64 and PPC_32, I think.


Well, Becky's patches also added the hwdev argument to them, so presumably the powerpc implementation needs that (different devices/ buses have differing views of physical memory, I guess).

On powerpc we need the hwdev because things vary based on bus. For our SoC chips we don't need any mapping between phys & bus. However something like PCI does have a mapping (a simple offset).

- k
--
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/