From: "Niklas Söderlund" <niklas.soderlund@ragnatech.se>
To: Magnus Damm <magnus.damm@gmail.com>
Cc: Linux-Renesas <linux-renesas-soc@vger.kernel.org>
Subject: Re: [PATCH/RFC] iommu/ipmmu-vmsa: IPMMU SYS-DMAC iova mapping workaround
Date: Tue, 27 Sep 2016 12:11:32 +0200 [thread overview]
Message-ID: <20160927101132.GF16263@bigcity.dyn.berto.se> (raw)
In-Reply-To: <CANqRtoS_ZDzjz0qpKO0sep-gypvOVKkUFkB+8tsZeqphsMwwNQ@mail.gmail.com>
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@ragnatech.se> wrote:
> > Hi Magnus,
> >
> > On 2016-09-20 20:54:33 +0900, Magnus Damm wrote:
> >> From: Magnus Damm <damm+renesas@opensource.se>
> >>
> >> 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
prev parent reply other threads:[~2016-09-27 10:11 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-09-20 11:54 [PATCH/RFC] iommu/ipmmu-vmsa: IPMMU SYS-DMAC iova mapping workaround Magnus Damm
2016-09-27 6:20 ` Niklas Söderlund
2016-09-27 6:43 ` Magnus Damm
2016-09-27 10:11 ` Niklas Söderlund [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160927101132.GF16263@bigcity.dyn.berto.se \
--to=niklas.soderlund@ragnatech.se \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=magnus.damm@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.