- To: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
- Subject: Re: [PATCHv9 10/10] ARM: dma-mapping: add support for IOMMU mapper
- From: Paul Gortmaker <paul.gortmaker@xxxxxxxxxxxxx>
- Date: Thu, 10 May 2012 22:08:39 -0400
- Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linaro-mm-sig@xxxxxxxxxxxxxxxx, linux-mm@xxxxxxxxx, linux-arch@xxxxxxxxxxxxxxx, iommu@xxxxxxxxxxxxxxxxxxxxxxxxxx, Kyungmin Park <kyungmin.park@xxxxxxxxxxx>, Arnd Bergmann <arnd@xxxxxxxx>, Joerg Roedel <joro@xxxxxxxxxx>, Russell King - ARM Linux <linux@xxxxxxxxxxxxxxxx>, Chunsang Jeong <chunsang.jeong@xxxxxxxxxx>, Krishna Reddy <vdumpa@xxxxxxxxxx>, KyongHo Cho <pullip.cho@xxxxxxxxxxx>, Andrzej Pietrasiewicz <andrzej.p@xxxxxxxxxxx>, Benjamin Herrenschmidt <benh@xxxxxxxxxxxxxxxxxxx>, Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>, Hiroshi Doyu <hdoyu@xxxxxxxxxx>, Subash Patel <subashrp@xxxxxxxxx>, linux-next@xxxxxxxxxxxxxxx
- Delivered-to: linux-mm-outgoing@xxxxxxxxx
- Delivered-to: int-list-linux-mm@xxxxxxxxx
- Delivered-to: linux-mm@xxxxxxxxx
- In-reply-to: <1334756652-30830-11-git-send-email-m.szyprowski@samsung.com>
On Wed, Apr 18, 2012 at 9:44 AM, Marek Szyprowski
<m.szyprowski@xxxxxxxxxxx> wrote:
> This patch add a complete implementation of DMA-mapping API for
> devices which have IOMMU support.
Hi Marek,
It looks like this patch breaks no-MMU builds on ARM, at least
according to git bisect. Here is a link to a linux-next failure:
http://kisskb.ellerman.id.au/kisskb/buildresult/6291233/
arch/arm/mm/dma-mapping.c:726:42: error: 'pgprot_kernel' undeclared
(first use in this function)
make[2]: *** [arch/arm/mm/dma-mapping.o] Error 1
Please have a look, thanks.
Paul.
---
>
> This implementation tries to optimize dma address space usage by remapping
> all possible physical memory chunks into a single dma address space chunk.
>
> DMA address space is managed on top of the bitmap stored in the
> dma_iommu_mapping structure stored in device->archdata. Platform setup
> code has to initialize parameters of the dma address space (base address,
> size, allocation precision order) with arm_iommu_create_mapping()
> function.
> To reduce the size of the bitmap, all allocations are aligned to the
> specified order of base 4 KiB pages.
>
> dma_alloc_* functions allocate physical memory in chunks, each with
> alloc_pages() function to avoid failing if the physical memory gets
> fragmented. In worst case the allocated buffer is composed of 4 KiB page
> chunks.
>
> dma_map_sg() function minimizes the total number of dma address space
> chunks by merging of physical memory chunks into one larger dma address
> space chunk. If requested chunk (scatter list entry) boundaries
> match physical page boundaries, most calls to dma_map_sg() requests will
> result in creating only one chunk in dma address space.
>
> dma_map_page() simply creates a mapping for the given page(s) in the dma
> address space.
>
> All dma functions also perform required cache operation like their
> counterparts from the arm linear physical memory mapping version.
>
> This patch contains code and fixes kindly provided by:
> - Krishna Reddy <vdumpa@xxxxxxxxxx>,
> - Andrzej Pietrasiewicz <andrzej.p@xxxxxxxxxxx>,
> - Hiroshi DOYU <hdoyu@xxxxxxxxxx>
>
> Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
> Acked-by: Kyungmin Park <kyungmin.park@xxxxxxxxxxx>
> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx>
> Tested-By: Subash Patel <subash.ramaswamy@xxxxxxxxxx>
> ---
> arch/arm/Kconfig | 8 +
> arch/arm/include/asm/device.h | 3 +
> arch/arm/include/asm/dma-iommu.h | 34 ++
> arch/arm/mm/dma-mapping.c | 727
> +++++++++++++++++++++++++++++++++++++-
> arch/arm/mm/vmregion.h | 2 +-
> 5 files changed, 759 insertions(+), 15 deletions(-)
> create mode 100644 arch/arm/include/asm/dma-iommu.h
>
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href
[Site Home]
[Linux ARM Kernel]
[Linux ARM]
[Linux Omap]
[Fedora ARM]
[IETF Annouce]
[Security]
[Bugtraq]
[Linux]
[Linux OMAP]
[Linux MIPS]
[ECOS]
[Tools]
[DDR & Rambus]
[Asterisk Internet PBX]
[Linux API]
[Monitors]