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

From: Jeremy Fitzhardinge
Date: Wed Apr 08 2009 - 17:56:21 EST


FUJITA Tomonori wrote:
On Wed, 8 Apr 2009 15:56:32 -0500
Kumar Gala <galak@xxxxxxxxxxxxxxxxxxx> wrote:

On Apr 8, 2009, at 3:38 PM, Christoph Hellwig wrote:

On Wed, Apr 08, 2009 at 09:09:18AM -0500, Kumar Gala wrote:
From: Becky Bruce <beckyb@xxxxxxxxxxxxxxxxxxx>

Some architectures require additional checking to determine
if a device can dma to an address and need to provide their
own address_needs_mapping..
Shouldn't we just move it completely to the arch? I think that ia64 and
x86 currently use the same one is more of an accident.
It seems like the swiotlb code uses __weak for a number of things:

lib/swiotlb.c:void * __weak __init swiotlb_alloc_boot(size_t size, unsigned long nslabs)
lib/swiotlb.c:void * __weak swiotlb_alloc(unsigned order, unsigned long nslabs)
lib/swiotlb.c:dma_addr_t __weak swiotlb_phys_to_bus(struct device *hwdev, phys_addr_t paddr)
lib/swiotlb.c:phys_addr_t __weak swiotlb_bus_to_phys(struct device *hwdev, dma_addr_t baddr)
lib/swiotlb.c:void * __weak swiotlb_bus_to_virt(struct device *hwdev, dma_addr_t address)
lib/swiotlb.c:int __weak swiotlb_arch_address_needs_mapping(struct device *hwdev,
lib/swiotlb.c:int __weak swiotlb_arch_range_needs_mapping(phys_addr_t paddr, size_t size)

instead of #ifndef HAVE_ARCH_<FOO>. Not sure if there is a historical reason for that.

ia64 and x86_64 use swiotlb but neither need this function. And
neither need any above __weak. They were added for dom0 support.
Yeah, swiotlb is much cleaner and better if we don't add dom0 support.

Some architectures need non-trivial bus<->phys conversion routines, etc, so either we can require it that all architectures wishing to use swiotlb define these functions, or have weak default functions that can be overridden by architectures where necessary.

This isn't a specific Xen dom0 requirement, except that enabling it in the config will override these functions (but now in a Xen-only file, rather than affecting the normal x86 pci-swiotlb.c).

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