Re: [PATCH/RFC] iommu/ipmmu-vmsa: IPMMU SYS-DMAC iova mapping workaround

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Magnus,

On 2016-09-27 15:43:30 +0900, Magnus Damm wrote:
> Hi Niklas,
> 
> On Tue, Sep 27, 2016 at 3:20 PM, Niklas Söderlund
> <niklas.soderlund@xxxxxxxxxxxx> wrote:
> > Hi Magnus,
> >
> > On 2016-09-20 20:54:33 +0900, Magnus Damm wrote:
> >> From: Magnus Damm <damm+renesas@xxxxxxxxxxxxx>
> >>
> >> Here's some prototype code that works around the lack of software
> >> support for mapping I/O devices to the SYS-DMAC hardware via the
> >> DMA Engine framework when using IOMMU.
> >>
> >> The code itself is one big layering violation that goes through
> >> the DT and unconditionally maps I/O devices using DMACs via the
> >> IPMMU device instance into iova space with a 1:1 mapping.
> >>
> >> This very short term prototype will for instance automatically make
> >> the SCIF serial port function with the IPMMU hardware in case the
> >> SYS-DMAC is hooked up to the IPMMU device.
> >>
> >> Not to be confused with the more long term solution to allow the
> >> DMA Engine framework to map I/O device memory dynamically.
> >
> > Good news, Vinod queued the dma_{map,unmap}_resource API and rcar-dmac
> > usage of it yesterday \o/.
> 
> Excellent. Are the DMA Engine slave devices supposed to work out of
> the box with the IPMMU then, or is some other component missing?

The DT and shmobile_defconfig patches are missing. If you enable 
CONFIG_IPMMU_VMSA and wire up DT (see bellow for Koelsch example) then 
all devices I have tried works (MMC, I2C and serial consoles).

diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi
index 8f0086b..d19bffd 100644
--- a/arch/arm/boot/dts/r8a7791.dtsi
+++ b/arch/arm/boot/dts/r8a7791.dtsi
@@ -325,6 +325,21 @@
                power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
                #dma-cells = <1>;
                dma-channels = <15>;
+               iommus = <&ipmmu_ds 0>,
+                        <&ipmmu_ds 1>,
+                        <&ipmmu_ds 2>,
+                        <&ipmmu_ds 3>,
+                        <&ipmmu_ds 4>,
+                        <&ipmmu_ds 5>,
+                        <&ipmmu_ds 6>,
+                        <&ipmmu_ds 7>,
+                        <&ipmmu_ds 8>,
+                        <&ipmmu_ds 9>,
+                        <&ipmmu_ds 10>,
+                        <&ipmmu_ds 11>,
+                        <&ipmmu_ds 12>,
+                        <&ipmmu_ds 13>,
+                        <&ipmmu_ds 14>;
        };
 
        dmac1: dma-controller@e6720000 {
@@ -356,6 +371,21 @@
                power-domains = <&sysc R8A7791_PD_ALWAYS_ON>;
                #dma-cells = <1>;
                dma-channels = <15>;
+               iommus = <&ipmmu_ds 15>,
+                        <&ipmmu_ds 16>,
+                        <&ipmmu_ds 17>,
+                        <&ipmmu_ds 18>,
+                        <&ipmmu_ds 19>,
+                        <&ipmmu_ds 20>,
+                        <&ipmmu_ds 21>,
+                        <&ipmmu_ds 22>,
+                        <&ipmmu_ds 23>,
+                        <&ipmmu_ds 24>,
+                        <&ipmmu_ds 25>,
+                        <&ipmmu_ds 26>,
+                        <&ipmmu_ds 27>,
+                        <&ipmmu_ds 28>,
+                        <&ipmmu_ds 29>;
        };
 
        audma0: dma-controller@ec700000 {
@@ -1693,7 +1723,7 @@
                interrupts = <GIC_SPI 198 IRQ_TYPE_LEVEL_HIGH>,
                             <GIC_SPI 199 IRQ_TYPE_LEVEL_HIGH>;
                #iommu-cells = <1>;
-               status = "disabled";
+               status = "okay";
        };
 
        ipmmu_mp: mmu@ec680000 {

Also please note that I'm having problems with the next branch of 
git://git.kernel.org/pub/scm/linux/kernel/git/vkoul/slave-dma.git and 
the commit 761ed4a (tty: serial_core: convert uart_close to use 
tty_port_close) together with a systemd init system. I have to revert to 
commit in order for the system to boot, but I will comment on that in a 
separate e-mail.

-- 
Regards,
Niklas Söderlund



[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux