[PATCH v11 27/27] iommu/exynos: enhanced error messages

2014-03-13 Thread Cho KyongHo
Some redundant error message is removed and some error messages are changed to error level from debug level. Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 23 +-- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/d

[PATCH v11 25/27] iommu/exynos: use simpler function to get MMU version

2014-03-13 Thread Cho KyongHo
This commit changes the function to get MMU version simpler. Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 30 ++ 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu.c index 6e716cc

[PATCH v11 26/27] iommu/exynos: apply workaround of caching fault page table entries

2014-03-13 Thread Cho KyongHo
This patch contains 2 workaround for the System MMU v3.x. System MMU v3.2 and v3.3 has FLPD cache that caches first level page table entries to reduce page table walking latency. However, the FLPD cache is filled with a first level page table entry even though it is not accessed by a master H/W be

[PATCH v11 24/27] iommu/exynos: use exynos-iommu specific typedef

2014-03-13 Thread Cho KyongHo
This commit introduces sysmmu_pte_t for page table entries and sysmmu_iova_t vor I/O virtual address that is manipulated by exynos-iommu driver. The purpose of the typedef is to remove dependencies to the driver code from the change of CPU architecture from 32 bit to 64 bit. Signed-off-by: Cho Kyo

[PATCH v11 22/27] iommu/exynos: add devices attached to the System MMU to an IOMMU group

2014-03-13 Thread Cho KyongHo
Patch written by Antonios Motakis : IOMMU groups are expected by certain users of the IOMMU API, e.g. VFIO. Since each device is behind its own System MMU, we can allocate a new IOMMU group for each device. Reviewd-by: Cho KyongHo Signed-off-by: Antonios Motakis --- drivers/iommu/exynos-iommu.

[PATCH v11 23/27] iommu/exynos: fix address handling

2014-03-13 Thread Cho KyongHo
Use of __pa and __va macro is changed to virt_to_phys and phys_to_virt which are recommended in driver code. printk formatting of physical address is also fixed to %pa. Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 45 +++--- 1 file changed,

[PATCH v11 21/27] iommu/exynos: change rwlock to spinlock

2014-03-13 Thread Cho KyongHo
Since acquiring read_lock is not more frequent than write_lock, it is not beneficial to use rwlock, this commit changes rwlock to spinlock. Reviewed-by: Grant Grundler Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 39 --- 1 file changed, 20

[PATCH v11 20/27] iommu/exynos: allow having multiple System MMUs for a master H/W

2014-03-13 Thread Cho KyongHo
Some master device descriptor like fimc-is which is an abstraction of very complex H/W may have multiple System MMUs. For those devices, the design of the link between System MMU and its master H/W is needed to be reconsidered. A link structure, sysmmu_list_data is introduced that provides a link

[PATCH v11 19/27] iommu/exynos: add support for power management subsystems.

2014-03-13 Thread Cho KyongHo
This adds support for Suspend to RAM and Runtime Power Management. Since System MMU is located in the same local power domain of its master H/W, System MMU must be initialized before it is working if its power domain was ever turned off. TLB invalidation according to unmapping on page tables must

[PATCH v11 14/27] iommu/exynos: gating clocks of master H/W

2014-03-13 Thread Cho KyongHo
This patch gates clocks of master H/W as well as clocks of System MMU if master clocks are specified. Some Exynos SoCs (i.e. GScalers in Exynos5250) have dependencies in the gating clocks of master H/W and its System MMU. If a H/W is the case, accessing control registers of System MMU is prohibite

[PATCH v11 15/27] iommu/exynos: use convenient macro to handle gate clocks

2014-03-13 Thread Cho KyongHo
exynos-iommu driver must care about master H/W's gate clock as well as System MMU's gate clock. To enhance readability of the source code, macros to gate/ungate those clocks are defined. Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 34 ++ 1 file

[PATCH v11 13/27] iommu/exynos: support for device tree

2014-03-13 Thread Cho KyongHo
This commit adds device tree support for System MMU. Signed-off-by: Cho KyongHo --- drivers/iommu/Kconfig|5 ++--- drivers/iommu/exynos-iommu.c | 21 + 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/drivers/iommu/Kconfig b/drivers/iommu/Kconfig

[PATCH v11 18/27] iommu/exynos: turn on useful configuration options

2014-03-13 Thread Cho KyongHo
This turns on FLPD_CACHE, ACGEN and SYSSEL. FLPD_CACHE is a cache of 1st level page table entries that contains the address of a 2nd level page table to reduce latency of page table walking. ACGEN is architectural clock gating that gates clocks by System MMU itself if it is not active. Note that

[PATCH v11 17/27] iommu/exynos: remove calls to Runtime PM API functions

2014-03-13 Thread Cho KyongHo
Runtime power management by exynos-iommu driver independently from master H/W's runtime pm is not useful for power saving since attaching master H/W in probing time turns on its local power endlessly. Thus this removes runtime pm API calls. Runtime PM support is added in the following commits to ex

[PATCH v11 16/27] iommu/exynos: remove custom fault handler

2014-03-13 Thread Cho KyongHo
This commit removes custom fault handler. The device drivers that need to register fault handler can register with iommu_set_fault_handler(). CC: Grant Grundler Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 80 +- 1 file changed, 24 inse

[PATCH v11 12/27] ARM: dts: Add description of System MMU of Exynos SoCs

2014-03-13 Thread Cho KyongHo
This patch adds dts entries for the System MMU devices found on Exynos4 and Exynos5 SoC series and the System MMU binding documentation. CC: Rob Herring CC: Sylwester Nawrocki Signed-off-by: Cho KyongHo --- .../bindings/iommu/samsung,exynos4210-sysmmu.txt | 86 +++ arch/arm/boot/dts/ex

[PATCH v11 11/27] clk: exynos: add gate clock descriptions of System MMU

2014-03-13 Thread Cho KyongHo
This adds gate clocks of all System MMUs and their master IPs that are not apeared in clk-exynos5250.c and clk-exynos5420.c Also fixes GATE_IP_ACP to 0x18800 and changed GATE_DA to GATE for System MMU clocks in clk-exynos4.c Signed-off-by: Cho KyongHo --- .../devicetree/bindings/clock/exynos5250

[PATCH v11 10/27] iommu/exynos: use managed device helper functions

2014-03-13 Thread Cho KyongHo
This patch uses managed device helper functions in the probe(). Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 64 +- 1 file changed, 26 insertions(+), 38 deletions(-) diff --git a/drivers/iommu/exynos-iommu.c b/drivers/iommu/exynos-iommu

[PATCH v11 08/27] iommu/exynos: always use a single clock descriptor

2014-03-13 Thread Cho KyongHo
System MMU driver is changed to control only a single instance of System MMU at a time. Since a single instance of System MMU has only a single clock descriptor for its clock gating, there is no need to obtain two or more clock descriptors. Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iom

[PATCH v11 09/27] iommu/exynos: remove dbgname from drvdata of a System MMU

2014-03-13 Thread Cho KyongHo
This patch removes dbgname member from sysmmu_drvdata structure. Kernel message for debugging already has the name of a single System MMU node. Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 32 +--- 1 file changed, 13 insertions(+), 19 deletions(-)

[PATCH v11 06/27] iommu/exynos: allocate lv2 page table from own slab

2014-03-13 Thread Cho KyongHo
Since kmalloc() does not guarantee that the allignment of 1KiB when it allocates 1KiB, it is required to allocate lv2 page table from own slab that guarantees alignment of 1KiB Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 34 -- 1 file changed,

[PATCH v11 07/27] iommu/exynos: always enable runtime PM

2014-03-13 Thread Cho KyongHo
Checking if the probing device has a parent device was just to discover if the probing device is involved in a power domain when the power domain controlled by Samsung's custom implementation. Since generic IO power domain is applied, it is required to remove the condition to see if the probing dev

[PATCH v11 05/27] iommu/exynos: remove prefetch buffer setting

2014-03-13 Thread Cho KyongHo
Prefetch buffer is a cache of System MMU 3.x and caches a block of page table entries to make effect of larger page with small pages. However, how to control prefetch buffers and the specifications of prefetch buffers different from minor versions of System MMU v3. Prefetch buffers must be controle

[PATCH v11 03/27] iommu/exynos: change error handling when page table update is failed

2014-03-13 Thread Cho KyongHo
This patch changes not to panic on any error when updating page table. Instead prints error messages with callstack. Signed-off-by: Cho KyongHo --- drivers/iommu/exynos-iommu.c | 58 -- 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/driv

[PATCH v11 04/27] iommu/exynos: fix L2TLB invalidation

2014-03-13 Thread Cho KyongHo
L2TLB is 8-way set-associative TLB with 512 entries. The number of sets is 64. A single 4KB(small page) translation information is cached only to a set whose index is the same with the lower 6 bits of the page frame number. A single 64KB(large page) translation information can be cached to any 16 s

[PATCH v11 02/27] iommu/exynos: add missing cache flush for removed page table entries

2014-03-13 Thread Cho KyongHo
This commit adds cache flush for removed small and large page entries in exynos_iommu_unmap(). Missing cache flush of removed page table entries can cause missing page fault interrupt when a master IP accesses an unmapped area. Reviewed-by: Tomasz Figa Tested-by: Grant Grundler Signed-off-by: Ch

[PATCH v11 01/27] iommu/exynos: do not include removed header

2014-03-13 Thread Cho KyongHo
Commit 25e9d28d92 (ARM: EXYNOS: remove system mmu initialization from exynos tree) removed arch/arm/mach-exynos/mach/sysmmu.h header without removing remaining use of it from exynos-iommu driver, thus causing a compilation error. This patch fixes the error by removing respective include line from

[PATCH v11 00/27] iommu/exynos: Fixes and Enhancements of System MMU driver with DT

2014-03-13 Thread Cho KyongHo
Sorry for the delayed posting the v11 patchset. The current exynos-iommu(System MMU) driver does not work autonomously since it is lack of support for power management of peripheral blocks. For example, MFC device driver must ensure that its System MMU is disabled before MFC block is power-down no

Re: [PATCH 1/5] iommu/omap: Use the cache cleaning API

2014-03-13 Thread Suman Anna
Hi Laurent, On 03/07/2014 06:46 PM, Laurent Pinchart wrote: The page table entries must be cleaned from the cache before being accessed by the IOMMU. Instead of implementing cache management manually (and ignoring L2 cache), use clean_dcache_area() to make sure the entries are visible to the dev

Re: [PATCH 0/5] OMAP IOMMU fixes and IOMMU architecture questions

2014-03-13 Thread Suman Anna
Hi Laurent, On 03/07/2014 06:46 PM, Laurent Pinchart wrote: Hello, This patch set fixes miscellaneous issues with the OMAP IOMMU driver, found when trying to port the OMAP3 ISP away from omap-iovmm to the ARM DMA API. The biggest issue is fixed by patch 5/5, while the other patches fix smaller

Re: [PATCH 5/5] iommu/omap: Fix map protection value handling

2014-03-13 Thread Suman Anna
Hi Laurent, On 03/07/2014 06:46 PM, Laurent Pinchart wrote: The prot flags passed to the IOMMU map handler are defined in include/linux/iommu.h as IOMMU_(READ|WRITE|CACHE|EXEC). However, the driver expects to receive MMU_RAM_* OMAP-specific flags. This causes IOMMU flags being interpreted as pag

Re: [PATCH 3/5] iommu/omap: Flush the TLB only after updating translation table entries

2014-03-13 Thread Suman Anna
Hi Laurent, On 03/07/2014 06:46 PM, Laurent Pinchart wrote: Flushing the TLB before updating translation entries creates a race condition and can lead to stale TLB entries if a translation request arrives between flushing the TLB and updating the translation entries. As there's no requirement to

Re: [PATCH 2/5] iommu/omap: Fix 'no page for' debug message in flush_iotlb_page()

2014-03-13 Thread Suman Anna
Hi Laurent, On 03/07/2014 06:46 PM, Laurent Pinchart wrote: The flush_iotlb_page() function prints a debug message when no corresponding page was found in the TLB. That condition is incorrectly checked and always resolves to true, given that the for_each_iotlb_cr() loop is never interrupted and

[PATCH 2/2] [RFC] arm: iommu: Refactoring dma-mapping iommu code

2014-03-13 Thread Ritesh Harjani
Taking out complete function defination to lib/iommu-helper.c from arch/arm/mm/dma-mapping.c Signed-off-by: Ritesh Harjani --- arch/arm/mm/dma-mapping.c| 38 -- include/linux/iommu-helper.h | 2 ++ lib/iommu-helper.c | 33 +++

[PATCH 1/2] [RFC] arm: iommu: Refactoring common code

2014-03-13 Thread Ritesh Harjani
Hi Everyone, Please find the following patch as refactoring of the common code out from arch/arm/mm/dma-mapping.c to lib/iommu-helper.c This is just an initial version of patch to get more details and to know if this is how we want to plan refactoring iommu code to lib/iommu-helper. Please let m

RE: [RFC][PATCH] iommu/arm: Add hotplugged devices support for arm-smmu.

2014-03-13 Thread Varun Sethi
Hi Ritesh, We have a hot plug bus architecture for the Layerscape SOCs. I am testing the patch specifically for this architecture on the AFM simulator. Regards Varun > -Original Message- > From: Ritesh Harjani [mailto:ritesh.harj...@gmail.com] > Sent: Wednesday, March 12, 2014 10:00 PM >

RE: [RFC][PATCH] iommu/arm: Add hotplugged devices support for arm-smmu.

2014-03-13 Thread Varun Sethi
> -Original Message- > From: iommu-boun...@lists.linux-foundation.org [mailto:iommu- > boun...@lists.linux-foundation.org] On Behalf Of Will Deacon > Sent: Wednesday, March 12, 2014 9:53 PM > To: Sethi Varun-B16395 > Cc: iommu@lists.linux-foundation.org > Subject: Re: [RFC][PATCH] iommu/a