From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniy Paltsev Subject: Re: [PATCH v2 0/4] ARC: allow to use IOC and non-IOC DMA devices simultaneously Date: Mon, 13 Aug 2018 17:27:19 +0000 Message-ID: <1534181238.3962.74.camel@synopsys.com> References: <20180730162636.3556-1-Eugeniy.Paltsev@synopsys.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org To: "Eugeniy.Paltsev@synopsys.com" , Vineet Gupta , "linux-snps-arc@lists.infradead.org" Cc: "hch@lst.de" , "linux-kernel@vger.kernel.org" , "linux-arch@vger.kernel.org" , Alexey Brodkin List-Id: linux-arch.vger.kernel.org T24gTW9uLCAyMDE4LTA4LTEzIGF0IDE2OjE5ICswMDAwLCBWaW5lZXQgR3VwdGEgd3JvdGU6DQo+ IE9uIDA3LzMwLzIwMTggMDk6MjYgQU0sIEV1Z2VuaXkgUGFsdHNldiB3cm90ZToNCj4gPiBUaGUg QVJDIEhTIHByb2Nlc3NvciBwcm92aWRlcyBhbiBJT0MgcG9ydCAoSS9PIGNvaGVyZW5jeSBidXMN Cj4gPiBpbnRlcmZhY2UpIHRoYXQgYWxsb3dzIGV4dGVybmFsIGRldmljZXMgc3VjaCBhcyBETUEg ZGV2aWNlcw0KPiA+IHRvIGFjY2VzcyBtZW1vcnkgdGhyb3VnaCB0aGUgY2FjaGUgaGllcmFyY2h5 LCBwcm92aWRpbmcNCj4gPiBjb2hlcmVuY3kgYmV0d2VlbiBJL08gdHJhbnNhY3Rpb25zIGFuZCB0 aGUgY29tcGxldGUgbWVtb3J5DQo+ID4gaGllcmFyY2h5Lg0KPiANCj4gWW91IGRpZG4ndCBwYXkg YXR0ZW50aW9uIHRvIG15IHByZXZpb3VzIGNvbW1lbnQgb24gdGhpcyAhDQo+IElPQyBwb3J0IGNh biBiZSBjb25zaWRlcmVkIGEgbWljcm8tYXJjaGl0ZWN0dXJlIG9wdGltaXphdGlvbiAoYW4gaW1w b3J0YW50IG9uZQ0KPiB0aG91Z2gpLiBUaGUgbWFpbiB0aGluZyBpcyBoYXJkd2FyZSBzbm9vcGlu ZyBETUEgdHJhbnNhY3Rpb25zIHdoaWNoIGVuYWJsZWQgSU9DIGluDQo+IGZpcnN0IHBsYWNlLg0K DQpPaywgSSdsbCByZXdyaXRlIHRoaXMgY29tbWl0IG1lc3NhZ2UuDQoNCj4gPiBTb21lIHJlY2Vu dCBTb0Mgd2l0aCBBUkMgSFMgKGxpa2UgSFNESykgYWxsb3cgdG8gc2VsZWN0IGJ1cw0KPiA+IHBv cnQgKElPQyBvciBub24tSU9DIHBvcnQpIGZvciBjb25uZWN0aW5nIERNQSBkZXZpY2VzIGluIHJ1 bnRpbWUuDQo+IA0KPiBBZ2FpbiB5b3UgbWVudGlvbiB0aGUgcG9ydCBidXQgbm9uZSBvZiB5b3Vy IDQgcGF0Y2hlcyBhY3R1YWxseSB0b3VjaCB0aGUgcG9ydA0KPiBpdHNlbGYgaW4gcHJvZ3JhbW1p bmcgaXQuDQoNCk9rLg0KDQo+IA0KPiA+IFdpdGggdGhpcyBwYXRjaCB3ZSBjYW4gdXNlIGJvdGgg SFctY29oZXJlbnQgYW5kIHJlZ3VsYXIgRE1BDQo+ID4gcGVyaXBoZXJhbHMgc2ltdWx0YW5lb3Vz bHkuDQo+ID4gDQo+ID4gTk9URToNCj4gPiBUaGlzIHBhdGNoIHNlcmllcyB3YXMgc3RyZXNzIHRl c3RlZCBvbiBIU0RLIHdpdGggaXBlcmYzIChldGhlcm5ldCkNCj4gPiBhbmQgYm9uaWUrKyAodXNi IGFuZCBzZGlvKSBpbiB0aHJlZSBjb25maWd1cmF0aW9uczoNCj4gPiAgKiBJT0MgZW5hYmxlZCBn bG9iYWx5DQo+ID4gICogSU9DIGRpc2FibGVkIGdsb2JhbHkNCj4gPiAgKiBJT0MgZW5hYmxlZCBw YXJ0aWFsbHkgKFVTQiAmIFNESU8gYXJlIGNvbm5lY3RlZCB2aWEgSU9DIEFYSSBwb3J0LA0KPiA+ ICAgIGV0aGVybmV0IGlzIGNvbm5lY3RlZCB0byBERFIgQVhJIHBvcnQgKG5vbi1JT0MgcG9ydCkg DQo+ID4gDQo+ID4gTk9URToNCj4gPiBJZiB5b3Ugd2FudCB0byB0ZXN0IHNvbWUgZGV2aWNlIHdp dGhvdXQgSU9DIGl0IGlzIG5vdCBlbm91Z2gNCj4gPiB0byByZW1vdmUgImRtYS1jb2hlcmVudCIg cHJvcGVydHkgZnJvbSBkdHMuIFlvdSBoYWQgdG8gcmVtYXAgdGhpcw0KPiA+IGRldmljZSB0byBy ZWd1bGFyIEREUiBBWEkgcG9ydCBpbnRlYWQgb2YgSU9DIEFYSSBwb3J0Lg0KPiANCj4gV2h5IGFy ZSB3ZSBub3QgZG9pbmcgdGhhdCBmb3IgdGhlIEdQVSBhcyBwYXJ0IG9mIHRoaXMgc2VyaWVzLg0K DQpXZSBzdGlsbCBuZWVkIHRvIHVwc3RyZWFtIGNvdXBsZSBvZiBtaW5vciBjaGFuZ2VzIGluIFZp dmFudGUgZHJpdmVyIGJlZm9yZSBlbmFibGUNCml0IGZvciBIU0RLLg0KDQo+IA0KPiA+IFlvdSBh bHNvIG5lZWQgdG8gYXBwbHkgMyBmb2xsb3dpbmcgcGF0Y2hlcyBmaXJzdGx5Og0KPiA+IGh0dHBz Oi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vbGludXgtc25wcy1hcmNAbGlzdHMuaW5mcmFkZWFkLm9y Zy9tc2cwMzg2NS5odG1sDQo+ID4gaHR0cHM6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9saW51eC1z bnBzLWFyY0BsaXN0cy5pbmZyYWRlYWQub3JnL21zZzAzODg5Lmh0bWwNCj4gPiBodHRwczovL3d3 dy5tYWlsLWFyY2hpdmUuY29tL2xpbnV4LXNucHMtYXJjQGxpc3RzLmluZnJhZGVhZC5vcmcvbXNn MDM4ODcuaHRtbA0KPiA+IA0KPiA+IE5PVEU6DQo+ID4gV2UgZG9uJ3QgdG91Y2ggYW55IGFwZXJ0 dXJlIGNvbmZpZ3VyYXRpb24gaW4gdGhpcyBwYXRjaCBzZXJpZXMuIFNvIHdlDQo+ID4gZG9uJ3Qg c3dpdGNoIGFueSBkZXZpY2VzIGJldHdlZW4gSU9DIGFuZCBub24tSU9DIEFYSSBwb3J0cyBvbiBh bnkgYm9hcmQuDQo+ID4gSXQgY2FuIGJlIGRvbmUgbGF0ZXIgaWYgaXQgaXMgcmVxdWlyZWQuDQo+ ID4gDQo+ID4gQ2hhbmdlcyB2MS0+djIgKFRoYW5rcyB0byBDaHJpc3RvcGgpOg0KPiA+ICAqIERv bid0IHNlbGVjdCBETUFfRElSRUNUX09QUyBleHBsaWNpdGx5IGFzIGl0IGlzIGFscmVhZHkgc2Vs ZWN0ZWQgYnkNCj4gPiAgICBETUFfTk9OQ09IRVJFTlRfT1BTDQo+ID4gICogUmVtb3ZlIGNoZWNr IGZvciBISUdITUVNIHBhZ2VzIGZyb20gYXJjaF9kbWFfe2FsbG9jLCBmcmVlfQ0KPiA+IA0KPiA+ IEV1Z2VuaXkgUGFsdHNldiAoNCk6DQo+ID4gICBBUkM6IERUUzogbWFyayBETUEgZGV2aWNlcyBj b25uZWN0ZWQgdGhyb3VnaCBJT0MgcG9ydCBhcyBkbWEtY29oZXJlbnQNCj4gPiAgIEFSQzogYWxs b3cgdG8gdXNlIElPQyBhbmQgbm9uLUlPQyBETUEgZGV2aWNlcyBzaW11bHRhbmVvdXNseQ0KPiA+ ICAgQVJDOiBJT0M6IHBhbmljIGlmIGJvdGggSU9DIGFuZCBaT05FX0hJR0hNRU0gZW5hYmxlZA0K PiA+ICAgQVJDOiBkb24ndCBjaGVjayBmb3IgSElHSE1FTSBwYWdlcyBpbiBhcmNoX2RtYV9hbGxv Yw0KPiA+IA0KPiA+ICBhcmNoL2FyYy9ib290L2R0cy9heGMwMDMuZHRzaSAgICAgIHwgMjYgKysr KysrKysrKysrKysrKw0KPiA+ICBhcmNoL2FyYy9ib290L2R0cy9heGMwMDNfaWR1LmR0c2kgIHwg MjYgKysrKysrKysrKysrKysrKw0KPiA+ICBhcmNoL2FyYy9ib290L2R0cy9oc2RrLmR0cyAgICAg ICAgIHwgIDQgKysrDQo+ID4gIGFyY2gvYXJjL2luY2x1ZGUvYXNtL2RtYS1tYXBwaW5nLmggfCAx MyArKysrKysrKw0KPiA+ICBhcmNoL2FyYy9tbS9jYWNoZS5jICAgICAgICAgICAgICAgIHwgMzAg KysrKysrKysrLS0tLS0tLS0tDQo+ID4gIGFyY2gvYXJjL21tL2RtYS5jICAgICAgICAgICAgICAg ICAgfCA2MiArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiA+ICA2IGZp bGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkNCj4gPiAgY3Jl YXRlIG1vZGUgMTAwNjQ0IGFyY2gvYXJjL2luY2x1ZGUvYXNtL2RtYS1tYXBwaW5nLmgNCj4gPiAN Cj4gDQo+IA0KLS0gDQogRXVnZW5peSBQYWx0c2V2 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniy.Paltsev@synopsys.com (Eugeniy Paltsev) Date: Mon, 13 Aug 2018 17:27:19 +0000 Subject: [PATCH v2 0/4] ARC: allow to use IOC and non-IOC DMA devices simultaneously In-Reply-To: References: <20180730162636.3556-1-Eugeniy.Paltsev@synopsys.com> List-ID: Message-ID: <1534181238.3962.74.camel@synopsys.com> To: linux-snps-arc@lists.infradead.org On Mon, 2018-08-13@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 at lists.infradead.org/msg03865.html > > https://www.mail-archive.com/linux-snps-arc at lists.infradead.org/msg03889.html > > https://www.mail-archive.com/linux-snps-arc at lists.infradead.org/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