Re: [PATCH v2 0/4] ARC: allow to use IOC and non-IOC DMA devices simultaneously
From: Eugeniy Paltsev
Date: Mon Aug 13 2018 - 13:27:26 EST
On Mon, 2018-08-13 at 16:19 +0000, Vineet Gupta wrote:
> On 07/30/2018 09:26 AM, Eugeniy Paltsev wrote:
> > The ARC HS processor provides an IOC port (I/O coherency bus
> > interface) that allows external devices such as DMA devices
> > to access memory through the cache hierarchy, providing
> > coherency between I/O transactions and the complete memory
> > hierarchy.
>
> You didn't pay attention to my previous comment on this !
> IOC port can be considered a micro-architecture optimization (an important one
> though). The main thing is hardware snooping DMA transactions which enabled IOC in
> first place.
Ok, I'll rewrite this commit message.
> > Some recent SoC with ARC HS (like HSDK) allow to select bus
> > port (IOC or non-IOC port) for connecting DMA devices in runtime.
>
> Again you mention the port but none of your 4 patches actually touch the port
> itself in programming it.
Ok.
>
> > With this patch we can use both HW-coherent and regular DMA
> > peripherals simultaneously.
> >
> > NOTE:
> > This patch series was stress tested on HSDK with iperf3 (ethernet)
> > and bonie++ (usb and sdio) in three configurations:
> > * IOC enabled globaly
> > * IOC disabled globaly
> > * IOC enabled partially (USB & SDIO are connected via IOC AXI port,
> > ethernet is connected to DDR AXI port (non-IOC port)
> >
> > NOTE:
> > If you want to test some device without IOC it is not enough
> > to remove "dma-coherent" property from dts. You had to remap this
> > device to regular DDR AXI port intead of IOC AXI port.
>
> Why are we not doing that for the GPU as part of this series.
We still need to upstream couple of minor changes in Vivante driver before enable
it for HSDK.
>
> > You also need to apply 3 following patches firstly:
> > https://www.mail-archive.com/linux-snps-arc@xxxxxxxxxxxxxxxxxxx/msg03865.html
> > https://www.mail-archive.com/linux-snps-arc@xxxxxxxxxxxxxxxxxxx/msg03889.html
> > https://www.mail-archive.com/linux-snps-arc@xxxxxxxxxxxxxxxxxxx/msg03887.html
> >
> > NOTE:
> > We don't touch any aperture configuration in this patch series. So we
> > don't switch any devices between IOC and non-IOC AXI ports on any board.
> > It can be done later if it is required.
> >
> > Changes v1->v2 (Thanks to Christoph):
> > * Don't select DMA_DIRECT_OPS explicitly as it is already selected by
> > DMA_NONCOHERENT_OPS
> > * Remove check for HIGHMEM pages from arch_dma_{alloc, free}
> >
> > Eugeniy Paltsev (4):
> > ARC: DTS: mark DMA devices connected through IOC port as dma-coherent
> > ARC: allow to use IOC and non-IOC DMA devices simultaneously
> > ARC: IOC: panic if both IOC and ZONE_HIGHMEM enabled
> > ARC: don't check for HIGHMEM pages in arch_dma_alloc
> >
> > arch/arc/boot/dts/axc003.dtsi | 26 ++++++++++++++++
> > arch/arc/boot/dts/axc003_idu.dtsi | 26 ++++++++++++++++
> > arch/arc/boot/dts/hsdk.dts | 4 +++
> > arch/arc/include/asm/dma-mapping.h | 13 ++++++++
> > arch/arc/mm/cache.c | 30 +++++++++---------
> > arch/arc/mm/dma.c | 62 +++++++++++++++++++-------------------
> > 6 files changed, 115 insertions(+), 46 deletions(-)
> > create mode 100644 arch/arc/include/asm/dma-mapping.h
> >
>
>
--
Eugeniy Paltsev