Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1699093 > unrolled thread

[PATCH 0/2] iommu/omap: Rework cache functionality with DMA Streaming API

Started byJosue Albarran <j-albarran@ti.com>
First post2017-07-28 23:00 +0200
Last post2017-07-28 23:00 +0200
Articles 2 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/2] iommu/omap: Rework cache functionality with DMA Streaming API Josue Albarran <j-albarran@ti.com> - 2017-07-28 23:00 +0200
    [PATCH 1/2] iommu/omap: Fix disabling of MMU upon a fault Josue Albarran <j-albarran@ti.com> - 2017-07-28 23:00 +0200

#1699093 — [PATCH 0/2] iommu/omap: Rework cache functionality with DMA Streaming API

FromJosue Albarran <j-albarran@ti.com>
Date2017-07-28 23:00 +0200
Subject[PATCH 0/2] iommu/omap: Rework cache functionality with DMA Streaming API
Message-ID<u8kmR-er-15@gated-at.bofh.it>
Hi Joerg,

This series adapts the OMAP IOMMU driver to use the DMA API to flush
the page table/directory table entries from the CPU caches instead of
the ARM assembly calls. The patches are baselined on 4.13-rc1.

Following is the patch summary:
 1. Patch 1 disables the OMAP IOMMU fault interrupts instead of
    disabling the MMU upon a fault, and resulted in recurring bus
    errors during remoteproc recovery on OMAP4. The MMU fault itself
    is triggered due to the missing PL310 L2 cache operations, and
    this patch fixes the recurring bus errors.
 2. The second patch makes the adaptation to the DMA API for flushing
    the caches. This fixes the MMU fault triggering issues in the
    first place on OMAP4.
    
I have tested these patches on DRA7, OMAP5, and OMAP4 platforms using
both OMAP IOMMU unit tests and some out-of-tree patches for exercising
the MMUs using the OMAP remoteproc driver.

Laurent,
Appreciate it if you can check the OMAP3ISP functionality with these
patches once.

Regards
Josue

Fernando Guzman Lugo (1):
  iommu/omap: Fix disabling of MMU upon a fault

Josue Albarran (1):
  iommu/omap: Use DMA-API for performing cache flushes

 drivers/iommu/omap-iommu.c | 125 +++++++++++++++++++++++++++++----------------
 drivers/iommu/omap-iommu.h |   1 +
 2 files changed, 81 insertions(+), 45 deletions(-)

-- 
2.7.4

[toc] | [next] | [standalone]


#1699094 — [PATCH 1/2] iommu/omap: Fix disabling of MMU upon a fault

FromJosue Albarran <j-albarran@ti.com>
Date2017-07-28 23:00 +0200
Subject[PATCH 1/2] iommu/omap: Fix disabling of MMU upon a fault
Message-ID<u8kwy-iP-23@gated-at.bofh.it>
In reply to#1699093
From: Fernando Guzman Lugo <fernando.lugo@ti.com>

The IOMMU framework lets its client users be notified on a
MMU fault and allows them to either handle the interrupt by
dynamic reloading of an appropriate TLB/PTE for the offending
fault address or to completely restart/recovery the device
and its IOMMU.

The OMAP remoteproc driver performs the latter option, and
does so after unwinding the previous mappings. The OMAP IOMMU
fault handler however disables the MMU and cuts off the clock
upon a MMU fault at present, resulting in an interconnect abort
during any subsequent operation that touches the MMU registers.

So, disable the IP-level fault interrupts instead of disabling
the MMU, to allow continued MMU register operations as well as
to avoid getting interrupted again.

Signed-off-by: Fernando Guzman Lugo <fernando.lugo@ti.com>
[s-anna@ti.com: add commit description]
Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Josue Albarran <j-albarran@ti.com>
---
 drivers/iommu/omap-iommu.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/iommu/omap-iommu.c b/drivers/iommu/omap-iommu.c
index 641e035cf866..10c9de8de45d 100644
--- a/drivers/iommu/omap-iommu.c
+++ b/drivers/iommu/omap-iommu.c
@@ -786,7 +786,7 @@ static irqreturn_t iommu_fault_handler(int irq, void *data)
 	if (!report_iommu_fault(domain, obj->dev, da, 0))
 		return IRQ_HANDLED;
 
-	iommu_disable(obj);
+	iommu_write_reg(obj, 0, MMU_IRQENABLE);
 
 	iopgd = iopgd_offset(obj, da);
 
-- 
2.7.4

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web