From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniy Paltsev Subject: Re: [PATCH 3/4] ARC: refactor arch/arc/mm/dma.c Date: Mon, 30 Jul 2018 10:34:20 +0000 Message-ID: <1532946859.3059.8.camel@synopsys.com> References: <20180724101001.31965-1-Eugeniy.Paltsev@synopsys.com> <20180724101001.31965-4-Eugeniy.Paltsev@synopsys.com> <20180726091731.GC24209@lst.de> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20180726091731.GC24209@lst.de> Content-Language: en-US Content-ID: Sender: linux-kernel-owner@vger.kernel.org To: "hch@lst.de" Cc: "linux-kernel@vger.kernel.org" , "linux-arch@vger.kernel.org" , "Alexey.Brodkin@synopsys.com" , "Vineet.Gupta1@synopsys.com" , "Eugeniy.Paltsev@synopsys.com" , "linux-snps-arc@lists.infradead.org" List-Id: linux-arch.vger.kernel.org T24gVGh1LCAyMDE4LTA3LTI2IGF0IDExOjE3ICswMjAwLCBDaHJpc3RvcGggSGVsbHdpZyB3cm90 ZToNCj4gT24gVHVlLCBKdWwgMjQsIDIwMTggYXQgMDE6MTA6MDBQTSArMDMwMCwgRXVnZW5peSBQ YWx0c2V2IHdyb3RlOg0KPiA+IFJlZmFjdG9yaW5nLCBubyBmdW5jdGlvbmFsIGNoYW5nZSBpbnRl bmRlZC4NCj4gPiAgDQpbc25pcF0NCj4gPiAgDQo+ID4gIAkqZG1hX2hhbmRsZSA9IHBhZGRyOw0K PiA+ICANCj4gPiArCS8qDQo+ID4gKwkgKiAtIEEgY29oZXJlbnQgYnVmZmVyIG5lZWRzIE1NVSBt YXBwaW5nIHRvIGVuZm9yY2Ugbm9uLWNhY2hhYmlsaXR5DQo+ID4gKwkgKiAtIEEgaGlnaG1lbSBw YWdlIG5lZWRzIGEgdmlydHVhbCBoYW5kbGUgKGhlbmNlIE1NVSBtYXBwaW5nKQ0KPiA+ICsJICog ICBpbmRlcGVuZGVudCBvZiBjYWNoYWJpbGl0eS4NCj4gPiArCSAqIGt2YWRkciBpcyBrZXJuZWwg VmlydHVhbCBhZGRyZXNzICgweDcwMDBfMDAwMCBiYXNlZCkNCj4gPiArCSAqLw0KPiA+ICsJaWYg KFBhZ2VIaWdoTWVtKHBhZ2UpIHx8IG5lZWRfY29oKSB7DQo+IA0KPiBkbWFfYWxsb2NfYXR0cnMg Y2xlYXJzIF9fR0ZQX0hJR0hNRU0gZnJvbSB0aGUgcGFzc2VkIGluIGdmcCBtYXNrLCBzbw0KPiB5 b3UnbGwgbmV2ZXIgZ2V0IGEgaGlnaG1lbSBwYWdlIGhlcmUuDQo+IA0KDQpOaWNlIGNhdGNoLCB0 aGFua3MuDQpXaWxsIHJlbW92ZSBjaGVjayBmb3IgaGlnaG1lbSBwYWdlIGluIG5leHQgcGF0Y2gg dmVyc2lvbi4gDQoNCj4gVGhhdCBhbHNvIG1lYW5zIHlvdSBjYW4gbWVyZ2UgdGhpcyBjb25kaXRp b25hbCB3aXRoIHRoZSBvbmUgZm9yIHRoZSBjYWNoZQ0KPiB3cml0ZWJhY2sgYW5kIGludmFsaWRh dGlvbiBhbmQga2lsbCB0aGUgbmVlZF9jb2ggZmxhZyBlbnRpcmVseS4NCj4gDQo+ID4gIAkJa3Zh ZGRyID0gaW9yZW1hcF9ub2NhY2hlKHBhZGRyLCBzaXplKTsNCj4gPiAgCQlpZiAoa3ZhZGRyID09 IE5VTEwpIHsNCj4gPiAgCQkJX19mcmVlX3BhZ2VzKHBhZ2UsIG9yZGVyKTsNCj4gPiBAQCAtODEs MTEgKzc1LDkgQEAgdm9pZCBhcmNoX2RtYV9mcmVlKHN0cnVjdCBkZXZpY2UgKmRldiwgc2l6ZV90 IHNpemUsIHZvaWQgKnZhZGRyLA0KPiA+ICB7DQo+ID4gIAlwaHlzX2FkZHJfdCBwYWRkciA9IGRt YV9oYW5kbGU7DQo+ID4gIAlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHZpcnRfdG9fcGFnZShwYWRkcik7 DQo+ID4gLQlpbnQgaXNfbm9uX2NvaCA9IDE7DQo+ID4gLQ0KPiA+IC0JaXNfbm9uX2NvaCA9IChh dHRycyAmIERNQV9BVFRSX05PTl9DT05TSVNURU5UKTsNCj4gPiArCWJvb2wgaXNfY29oID0gIShh dHRycyAmIERNQV9BVFRSX05PTl9DT05TSVNURU5UKTsNCj4gPiAgDQo+ID4gLQlpZiAoUGFnZUhp Z2hNZW0ocGFnZSkgfHwgIWlzX25vbl9jb2gpDQo+ID4gKwlpZiAoUGFnZUhpZ2hNZW0ocGFnZSkg fHwgaXNfY29oKQ0KPiA+ICAJCWlvdW5tYXAoKHZvaWQgX19mb3JjZSBfX2lvbWVtICopdmFkZHIp Ow0KPiA+ICANCj4gDQo+IFNhbWUgaGVyZS4NCj4gDQo+IEFsc28gaWYgeW91IGNsZWFuIHRoaXMg dXAgaXQgd291bGQgYmUgZ3JlYXQgdG8gdGFrZSB0aGUgcGVyLWRldmljZSBwZm4gb2Zmc2V0DQo+ IGludG8gYWNjb3VudCwgZXZlbiBpZiB0aGF0IGlzbid0IHVzZWQgYW55d2hlcmUgb24gYXJjIHll dCwgdGhhdCBpcyBjYWxsDQo+IHBoeXNfdG9fZG1hIGFuZCBkbWFfdG9fcGh5cyB0byBjb252ZXJ0 IHRvIGFuIGZyb20gdGhlIGRtYSBhZGRyZXNzLg0KDQpPaywgSSdsbCBsb29rIGF0IGl0Lg0KUHJv YmFibHkgSSdsbCBpbXBsZW1lbnQgaXQgYXMgYSBzZXBhcmF0ZSBwYXRjaCBhcyBpdCBpcyBpcnJl bGV2YW50IHRvIHRoaXMNCnBhdGNoIHNlcmllcyB0b3BpYy4NCg0KLS0gDQogRXVnZW5peSBQYWx0 c2V2 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eugeniy.Paltsev@synopsys.com (Eugeniy Paltsev) Date: Mon, 30 Jul 2018 10:34:20 +0000 Subject: [PATCH 3/4] ARC: refactor arch/arc/mm/dma.c In-Reply-To: <20180726091731.GC24209@lst.de> References: <20180724101001.31965-1-Eugeniy.Paltsev@synopsys.com> <20180724101001.31965-4-Eugeniy.Paltsev@synopsys.com> <20180726091731.GC24209@lst.de> List-ID: Message-ID: <1532946859.3059.8.camel@synopsys.com> To: linux-snps-arc@lists.infradead.org On Thu, 2018-07-26@11:17 +0200, Christoph Hellwig wrote: > On Tue, Jul 24, 2018@01:10:00PM +0300, Eugeniy Paltsev wrote: > > Refactoring, no functional change intended. > > [snip] > > > > *dma_handle = paddr; > > > > + /* > > + * - A coherent buffer needs MMU mapping to enforce non-cachability > > + * - A highmem page needs a virtual handle (hence MMU mapping) > > + * independent of cachability. > > + * kvaddr is kernel Virtual address (0x7000_0000 based) > > + */ > > + if (PageHighMem(page) || need_coh) { > > dma_alloc_attrs clears __GFP_HIGHMEM from the passed in gfp mask, so > you'll never get a highmem page here. > Nice catch, thanks. Will remove check for highmem page in next patch version. > That also means you can merge this conditional with the one for the cache > writeback and invalidation and kill the need_coh flag entirely. > > > kvaddr = ioremap_nocache(paddr, size); > > if (kvaddr == NULL) { > > __free_pages(page, order); > > @@ -81,11 +75,9 @@ void arch_dma_free(struct device *dev, size_t size, void *vaddr, > > { > > phys_addr_t paddr = dma_handle; > > struct page *page = virt_to_page(paddr); > > - int is_non_coh = 1; > > - > > - is_non_coh = (attrs & DMA_ATTR_NON_CONSISTENT); > > + bool is_coh = !(attrs & DMA_ATTR_NON_CONSISTENT); > > > > - if (PageHighMem(page) || !is_non_coh) > > + if (PageHighMem(page) || is_coh) > > iounmap((void __force __iomem *)vaddr); > > > > Same here. > > Also if you clean this up it would be great to take the per-device pfn offset > into account, even if that isn't used anywhere on arc yet, that is call > phys_to_dma and dma_to_phys to convert to an from the dma address. Ok, I'll look at it. Probably I'll implement it as a separate patch as it is irrelevant to this patch series topic. -- Eugeniy Paltsev