From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from invmail.skhynix.com (exvmail.hynix.com [166.125.252.79]) by ml01.01.org (Postfix) with ESMTP id 832341A1E08 for ; Fri, 22 Jul 2016 00:29:41 -0700 (PDT) From: "kwangwoo.lee@sk.com" Subject: RE: [PATCH v3 1/3] arm64: mm: add __clean_dcache_area() Date: Fri, 22 Jul 2016 07:28:32 +0000 Message-ID: <10b66389d013414490d85c6d11c69347@nmail01.hynixad.com> References: <1468550782-14454-1-git-send-email-kwangwoo.lee@sk.com> <1468550782-14454-2-git-send-email-kwangwoo.lee@sk.com> <20160721161137.GG21616@arm.com> In-Reply-To: <20160721161137.GG21616@arm.com> Content-Language: ko-KR MIME-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="euc-kr" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: Will Deacon Cc: Mark Rutland , "linux-nvdimm@lists.01.org" , Catalin Marinas , "linux-kernel@vger.kernel.org" , "woosuk.chung@sk.com" , "linux-arm-kernel@lists.infradead.org" List-ID: SGkgV2lsbCwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXaWxsIERl YWNvbiBbbWFpbHRvOndpbGwuZGVhY29uQGFybS5jb21dDQo+IFNlbnQ6IEZyaWRheSwgSnVseSAy MiwgMjAxNiAxOjEyIEFNDQo+IFRvOiDAzLGkv+woTEVFIEtXQU5HV09PKSBNUyBTVw0KPiBDYzog bGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1udmRpbW1AbGlzdHMu MDEub3JnOyBDYXRhbGluIE1hcmluYXM7IE1hcmsgUnV0bGFuZDsNCj4gUm9zcyBad2lzbGVyOyBE YW4gV2lsbGlhbXM7IFZpc2hhbCBWZXJtYTsgwaS/7LyuKENIVU5HIFdPTyBTVUspIE1TIFNXOyCx 6Mf2w7YoS0lNIEhZVU5DSFVMKSBNUyBTVzsNCj4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9y Zw0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzIDEvM10gYXJtNjQ6IG1tOiBhZGQgX19jbGVhbl9k Y2FjaGVfYXJlYSgpDQo+IA0KPiBPbiBGcmksIEp1bCAxNSwgMjAxNiBhdCAxMTo0NjoyMEFNICsw OTAwLCBLd2FuZ3dvbyBMZWUgd3JvdGU6DQo+ID4gRW5zdXJlIEQtY2FjaGUgbGluZXMgYXJlIGNs ZWFuZWQgdG8gdGhlIFBvQyhQb2ludCBvZiBDb2hlcmVuY3kpLg0KPiA+DQo+ID4gVGhpcyBmdW5j dGlvbiBpcyBjYWxsZWQgYnkgYXJjaF93Yl9jYWNoZV9wbWVtKCkgdG8gY2xlYW4gdGhlIGNhY2hl IGxpbmVzDQo+ID4gYW5kIHJlbWFpbiB0aGUgZGF0YSBpbiBjYWNoZSBmb3IgdGhlIG5leHQgYWNj ZXNzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogS3dhbmd3b28gTGVlIDxrd2FuZ3dvby5sZWVA c2suY29tPg0KPiA+IC0tLQ0KPiA+ICBhcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2gu aCB8ICAxICsNCj4gPiAgYXJjaC9hcm02NC9tbS9jYWNoZS5TICAgICAgICAgICAgICAgfCAxOCAr KysrKysrKysrKysrKysrKysNCj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCsp DQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jYWNoZWZsdXNo LmggYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaA0KPiA+IGluZGV4IGM2NDI2 OGQuLjkwM2E5NGYgMTAwNjQ0DQo+ID4gLS0tIGEvYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9jYWNo ZWZsdXNoLmgNCj4gPiArKysgYi9hcmNoL2FybTY0L2luY2x1ZGUvYXNtL2NhY2hlZmx1c2guaA0K PiA+IEBAIC02OCw2ICs2OCw3IEBADQo+ID4gIGV4dGVybiB2b2lkIGZsdXNoX2NhY2hlX3Jhbmdl KHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hLCB1bnNpZ25lZCBsb25nIHN0YXJ0LCB1bnNpZ25l ZCBsb25nIGVuZCk7DQo+ID4gIGV4dGVybiB2b2lkIGZsdXNoX2ljYWNoZV9yYW5nZSh1bnNpZ25l ZCBsb25nIHN0YXJ0LCB1bnNpZ25lZCBsb25nIGVuZCk7DQo+ID4gIGV4dGVybiB2b2lkIF9fZmx1 c2hfZGNhY2hlX2FyZWEodm9pZCAqYWRkciwgc2l6ZV90IGxlbik7DQo+ID4gK2V4dGVybiB2b2lk IF9fY2xlYW5fZGNhY2hlX2FyZWEodm9pZCAqYWRkciwgc2l6ZV90IGxlbik7DQo+ID4gIGV4dGVy biB2b2lkIF9fY2xlYW5fZGNhY2hlX2FyZWFfcG91KHZvaWQgKmFkZHIsIHNpemVfdCBsZW4pOw0K PiA+ICBleHRlcm4gbG9uZyBfX2ZsdXNoX2NhY2hlX3VzZXJfcmFuZ2UodW5zaWduZWQgbG9uZyBz dGFydCwgdW5zaWduZWQgbG9uZyBlbmQpOw0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJt NjQvbW0vY2FjaGUuUyBiL2FyY2gvYXJtNjQvbW0vY2FjaGUuUw0KPiA+IGluZGV4IDZkZjA3MDYu LjVhMzUwZTQgMTAwNjQ0DQo+ID4gLS0tIGEvYXJjaC9hcm02NC9tbS9jYWNoZS5TDQo+ID4gKysr IGIvYXJjaC9hcm02NC9tbS9jYWNoZS5TDQo+ID4gQEAgLTkzLDYgKzkzLDI0IEBAIEVOVFJZKF9f Zmx1c2hfZGNhY2hlX2FyZWEpDQo+ID4gIEVORFBJUFJPQyhfX2ZsdXNoX2RjYWNoZV9hcmVhKQ0K PiA+DQo+ID4gIC8qDQo+ID4gKyAqCV9fY2xlYW5fZGNhY2hlX2FyZWEoa2FkZHIsIHNpemUpDQo+ ID4gKyAqDQo+ID4gKyAqIAlFbnN1cmUgdGhhdCBhbnkgRC1jYWNoZSBsaW5lcyBmb3IgdGhlIGlu dGVydmFsIFtrYWRkciwga2FkZHIrc2l6ZSkNCj4gPiArICogCWFyZSBjbGVhbmVkIHRvIHRoZSBQ b0MuDQo+ID4gKyAqDQo+ID4gKyAqCS0ga2FkZHIgICAtIGtlcm5lbCBhZGRyZXNzDQo+ID4gKyAq CS0gc2l6ZSAgICAtIHNpemUgaW4gcXVlc3Rpb24NCj4gPiArICovDQo+ID4gK0VOVFJZKF9fY2xl YW5fZGNhY2hlX2FyZWEpDQo+ID4gK2FsdGVybmF0aXZlX2lmX25vdCBBUk02NF9XT1JLQVJPVU5E X0NMRUFOX0NBQ0hFDQo+ID4gKwlkY2FjaGVfYnlfbGluZV9vcCBjdmFjLCBzeSwgeDAsIHgxLCB4 MiwgeDMNCj4gPiArYWx0ZXJuYXRpdmVfZWxzZQ0KPiA+ICsJZGNhY2hlX2J5X2xpbmVfb3AgY2l2 YWMsIHN5LCB4MCwgeDEsIHgyLCB4Mw0KPiA+ICthbHRlcm5hdGl2ZV9lbmRpZg0KPiA+ICsJcmV0 DQo+ID4gK0VORFBST0MoX19jbGVhbl9kY2FjaGVfYXJlYSkNCj4gDQo+IFRoaXMgbG9va3MgZnVu Y3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gX19kbWFfY2xlYW5fcmFuZ2UuIEhvdyBhYm91dCB3ZToN Cj4gDQo+ICAgMS4gQ29udmVydCB0aGUgX19kbWFfKiByb3V0aW5lcyB0byB1c2UgZGNhY2hlX2J5 X2xpbmUNCj4gICAyLiBJbnRyb2R1Y2UgX19jbGVhbl9kY2FjaGVfYXJlYV9wb2MgYXMgYSBmYWxs dGhyb3VnaCB0byBfX2RtYV9jbGVhbl9yYW5nZQ0KPiAgIDMuIFVzZSBfX2NsZWFuX2RjYWNoZV9h cmVhX3BvYyBmb3IgdGhlIHBtZW0gc3R1ZmYgKHdpdGggc29tZSBwYXJhbWV0ZXINCj4gICAgICBt YXJzaGFsbGluZyBpbiB0aGUgbWFjcm8pLg0KDQpPSy4gSSdsbCByZXZpc2UgdGhlIHBhdGNoIGZv bGxvd2luZyB5b3VyIGNvbW1lbnQgaW4gdGhlIG5leHQgcm91bmQuIFRoYW5rcyBmb3IgdGhlIGNv bW1lbnQhDQoNCj4gV2lsbA0KDQpCZXN0IFJlZ2FyZHMsDQpLd2FuZ3dvbyBMZWUNCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LW52ZGltbSBtYWls aW5nIGxpc3QKTGludXgtbnZkaW1tQGxpc3RzLjAxLm9yZwpodHRwczovL2xpc3RzLjAxLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2xpbnV4LW52ZGltbQo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753436AbcGVH26 (ORCPT ); Fri, 22 Jul 2016 03:28:58 -0400 Received: from exvmail.hynix.com ([166.125.252.79]:60441 "EHLO invmail.skhynix.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752711AbcGVH2y (ORCPT ); Fri, 22 Jul 2016 03:28:54 -0400 X-AuditID: a67dfc4e-f797e6d000000a40-65-5791cb2e1856 From: "kwangwoo.lee@sk.com" To: Will Deacon CC: "linux-arm-kernel@lists.infradead.org" , "linux-nvdimm@lists.01.org" , Catalin Marinas , "Mark Rutland" , Ross Zwisler , Dan Williams , Vishal Verma , "woosuk.chung@sk.com" , "hyunchul3.kim@sk.com" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v3 1/3] arm64: mm: add __clean_dcache_area() Thread-Topic: [PATCH v3 1/3] arm64: mm: add __clean_dcache_area() Thread-Index: AQHR3kMbhdvHQ3IGm06VWyLCNGRndaAigbeAgAGVSeA= Date: Fri, 22 Jul 2016 07:28:32 +0000 Message-ID: <10b66389d013414490d85c6d11c69347@nmail01.hynixad.com> References: <1468550782-14454-1-git-send-email-kwangwoo.lee@sk.com> <1468550782-14454-2-git-send-email-kwangwoo.lee@sk.com> <20160721161137.GG21616@arm.com> In-Reply-To: <20160721161137.GG21616@arm.com> Accept-Language: ko-KR, en-US Content-Language: ko-KR X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.92.132.196] Content-Type: text/plain; charset="ks_c_5601-1987" MIME-Version: 1.0 X-CFilter-Loop: Reflected X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrOIsWRmVeSWpSXmKPExsXCNUdUSVfv9MRwg5WT+SzeL+thtJg+9QKj xabH11gtLu+aw2bRPPE2u8XS6xeZLCY+/81icWvCMSaLlx9PsDhweqyZt4bRY/Gel0we804G enTP/sfisXlJvcfnTXIBbFFcNimpOZllqUX6dglcGfd2rWMtuCBfMfvgeZYGxhdyXYwcHBIC JhKz+ti7GDmBTDGJC/fWs3UxcnEICaxhlJh5YhUzhLOYUWLe1zssIFVsAoYSe2/tYwWxRQRU JS5PO8IIUsQs0MIi8bH5NFiRsICDxKI53VBFjhIv1uxkh7CtJLYsfA8WZwFq3jzvFTOIzSvg JHFjyRlGiG0LGCUWPtsFluAU0JX48e45G8ipjAKyElevyYCEmQXEJRZ/vcYMcbaAxJI956Fs UYmXj/+xQtiKEt9ef2eHqDeSWLJ6PhOErSgxpfshO8ReQYmTM5+wQNRLShxccYNlAqP4LCQr ZiFpn4WkfRaS9gWMLKsYhTPzynITM3P0irMzKvMyK/SS83M3MQKjd1ntH78djC9+aR1iFOBg VOLhrXg1IVyINbGsuDL3EKMEB7OSCC/L0YnhQrwpiZVVqUX58UWlOanFhxilOViUxHm//e8L FxJITyxJzU5NLUgtgskycXBKNTBGzIyNPfRQyHbqxym/LN9/bu4om//7+fF/awO/yF7deP/O Vl5WqY+Pks49sD6xU07aosZd4WMlK+eCrJBVSnIylp3XddNXLlI993PZ+S1p51eoGwsrf11c 5PH6m6RLbszxeGvD/fGL9Xf56yZ9//h5qY4S12Xf/if5NnWZ8q19RRVXVnZenbhQiaU4I9FQ i7moOBEAr5I2HdoCAAA= Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id u6M7T1PK001564 Hi Will, > -----Original Message----- > From: Will Deacon [mailto:will.deacon@arm.com] > Sent: Friday, July 22, 2016 1:12 AM > To: À̱¤¿ì(LEE KWANGWOO) MS SW > Cc: linux-arm-kernel@lists.infradead.org; linux-nvdimm@lists.01.org; Catalin Marinas; Mark Rutland; > Ross Zwisler; Dan Williams; Vishal Verma; Á¤¿ì¼®(CHUNG WOO SUK) MS SW; ±èÇöö(KIM HYUNCHUL) MS SW; > linux-kernel@vger.kernel.org > Subject: Re: [PATCH v3 1/3] arm64: mm: add __clean_dcache_area() > > On Fri, Jul 15, 2016 at 11:46:20AM +0900, Kwangwoo Lee wrote: > > Ensure D-cache lines are cleaned to the PoC(Point of Coherency). > > > > This function is called by arch_wb_cache_pmem() to clean the cache lines > > and remain the data in cache for the next access. > > > > Signed-off-by: Kwangwoo Lee > > --- > > arch/arm64/include/asm/cacheflush.h | 1 + > > arch/arm64/mm/cache.S | 18 ++++++++++++++++++ > > 2 files changed, 19 insertions(+) > > > > diff --git a/arch/arm64/include/asm/cacheflush.h b/arch/arm64/include/asm/cacheflush.h > > index c64268d..903a94f 100644 > > --- a/arch/arm64/include/asm/cacheflush.h > > +++ b/arch/arm64/include/asm/cacheflush.h > > @@ -68,6 +68,7 @@ > > extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); > > extern void flush_icache_range(unsigned long start, unsigned long end); > > extern void __flush_dcache_area(void *addr, size_t len); > > +extern void __clean_dcache_area(void *addr, size_t len); > > extern void __clean_dcache_area_pou(void *addr, size_t len); > > extern long __flush_cache_user_range(unsigned long start, unsigned long end); > > > > diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S > > index 6df0706..5a350e4 100644 > > --- a/arch/arm64/mm/cache.S > > +++ b/arch/arm64/mm/cache.S > > @@ -93,6 +93,24 @@ ENTRY(__flush_dcache_area) > > ENDPIPROC(__flush_dcache_area) > > > > /* > > + * __clean_dcache_area(kaddr, size) > > + * > > + * Ensure that any D-cache lines for the interval [kaddr, kaddr+size) > > + * are cleaned to the PoC. > > + * > > + * - kaddr - kernel address > > + * - size - size in question > > + */ > > +ENTRY(__clean_dcache_area) > > +alternative_if_not ARM64_WORKAROUND_CLEAN_CACHE > > + dcache_by_line_op cvac, sy, x0, x1, x2, x3 > > +alternative_else > > + dcache_by_line_op civac, sy, x0, x1, x2, x3 > > +alternative_endif > > + ret > > +ENDPROC(__clean_dcache_area) > > This looks functionally equivalent to __dma_clean_range. How about we: > > 1. Convert the __dma_* routines to use dcache_by_line > 2. Introduce __clean_dcache_area_poc as a fallthrough to __dma_clean_range > 3. Use __clean_dcache_area_poc for the pmem stuff (with some parameter > marshalling in the macro). OK. I'll revise the patch following your comment in the next round. Thanks for the comment! > Will Best Regards, Kwangwoo Lee From mboxrd@z Thu Jan 1 00:00:00 1970 From: kwangwoo.lee@sk.com (kwangwoo.lee at sk.com) Date: Fri, 22 Jul 2016 07:28:32 +0000 Subject: [PATCH v3 1/3] arm64: mm: add __clean_dcache_area() In-Reply-To: <20160721161137.GG21616@arm.com> References: <1468550782-14454-1-git-send-email-kwangwoo.lee@sk.com> <1468550782-14454-2-git-send-email-kwangwoo.lee@sk.com> <20160721161137.GG21616@arm.com> Message-ID: <10b66389d013414490d85c6d11c69347@nmail01.hynixad.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Will, > -----Original Message----- > From: Will Deacon [mailto:will.deacon at arm.com] > Sent: Friday, July 22, 2016 1:12 AM > To: ???(LEE KWANGWOO) MS SW > Cc: linux-arm-kernel at lists.infradead.org; linux-nvdimm at lists.01.org; Catalin Marinas; Mark Rutland; > Ross Zwisler; Dan Williams; Vishal Verma; ???(CHUNG WOO SUK) MS SW; ???(KIM HYUNCHUL) MS SW; > linux-kernel at vger.kernel.org > Subject: Re: [PATCH v3 1/3] arm64: mm: add __clean_dcache_area() > > On Fri, Jul 15, 2016 at 11:46:20AM +0900, Kwangwoo Lee wrote: > > Ensure D-cache lines are cleaned to the PoC(Point of Coherency). > > > > This function is called by arch_wb_cache_pmem() to clean the cache lines > > and remain the data in cache for the next access. > > > > Signed-off-by: Kwangwoo Lee > > --- > > arch/arm64/include/asm/cacheflush.h | 1 + > > arch/arm64/mm/cache.S | 18 ++++++++++++++++++ > > 2 files changed, 19 insertions(+) > > > > diff --git a/arch/arm64/include/asm/cacheflush.h b/arch/arm64/include/asm/cacheflush.h > > index c64268d..903a94f 100644 > > --- a/arch/arm64/include/asm/cacheflush.h > > +++ b/arch/arm64/include/asm/cacheflush.h > > @@ -68,6 +68,7 @@ > > extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, unsigned long end); > > extern void flush_icache_range(unsigned long start, unsigned long end); > > extern void __flush_dcache_area(void *addr, size_t len); > > +extern void __clean_dcache_area(void *addr, size_t len); > > extern void __clean_dcache_area_pou(void *addr, size_t len); > > extern long __flush_cache_user_range(unsigned long start, unsigned long end); > > > > diff --git a/arch/arm64/mm/cache.S b/arch/arm64/mm/cache.S > > index 6df0706..5a350e4 100644 > > --- a/arch/arm64/mm/cache.S > > +++ b/arch/arm64/mm/cache.S > > @@ -93,6 +93,24 @@ ENTRY(__flush_dcache_area) > > ENDPIPROC(__flush_dcache_area) > > > > /* > > + * __clean_dcache_area(kaddr, size) > > + * > > + * Ensure that any D-cache lines for the interval [kaddr, kaddr+size) > > + * are cleaned to the PoC. > > + * > > + * - kaddr - kernel address > > + * - size - size in question > > + */ > > +ENTRY(__clean_dcache_area) > > +alternative_if_not ARM64_WORKAROUND_CLEAN_CACHE > > + dcache_by_line_op cvac, sy, x0, x1, x2, x3 > > +alternative_else > > + dcache_by_line_op civac, sy, x0, x1, x2, x3 > > +alternative_endif > > + ret > > +ENDPROC(__clean_dcache_area) > > This looks functionally equivalent to __dma_clean_range. How about we: > > 1. Convert the __dma_* routines to use dcache_by_line > 2. Introduce __clean_dcache_area_poc as a fallthrough to __dma_clean_range > 3. Use __clean_dcache_area_poc for the pmem stuff (with some parameter > marshalling in the macro). OK. I'll revise the patch following your comment in the next round. Thanks for the comment! > Will Best Regards, Kwangwoo Lee