diff for duplicates of <1494024273.30303.71.camel@hpe.com> diff --git a/a/1.txt b/N1/1.txt index e8e82d7..f3d93e6 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,26 +1,39 @@ -T24gRnJpLCAyMDE3LTA1LTA1IGF0IDE1OjI1IC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+ -IE9uIEZyaSwgTWF5IDUsIDIwMTcgYXQgMTozOSBQTSwgS2FuaSwgVG9zaGltaXRzdSA8dG9zaGku -a2FuaUBocGUuY29tPg0KPiB3cm90ZToNCiA6DQo+ID4gPiAtLS0NCj4gPiA+IENoYW5nZXMgc2lu -Y2UgdGhlIGluaXRpYWwgUkZDOg0KPiA+ID4gKiBzL3dyaXRldGhydS93dC8gc2luY2Ugd2UgYWxy -ZWFkeSBoYXZlIGlvcmVtYXBfd3QoKSwNCj4gPiA+IHNldF9tZW1vcnlfd3QoKSwgZXRjLiAoSW5n -bykNCj4gPiANCj4gPiBTb3JyeSBJIHNob3VsZCBoYXZlIHNhaWQgZWFybGllciwgYnV0IEkgdGhp -bmsgdGhlIHRlcm0gInd0IiBpcw0KPiA+IG1pc2xlYWRpbmcuwqDCoE5vbi10ZW1wb3JhbCBzdG9y -ZXMgdXNlZCBpbiBtZW1jcHlfd3QoKSBwcm92aWRlIFdDDQo+ID4gc2VtYW50aWNzLCBub3QgV1Qg -c2VtYW50aWNzLg0KPiANCj4gVGhlIG5vbi10ZW1wb3JhbCBzdG9yZXMgZG8sIGJ1dCBtZW1jcHlf -d3QoKSBpcyB1c2luZyBhIGNvbWJpbmF0aW9uIG9mDQo+IG5vbi10ZW1wb3JhbCBzdG9yZXMgYW5k -IGV4cGxpY2l0IGNhY2hlIGZsdXNoaW5nLg0KPiANCj4gPiBIb3cgYWJvdXQgdXNpbmcgIm5vY2Fj -aGUiIGFzIGl0J3MgYmVlbg0KPiA+IHVzZWQgaW4gX19jb3B5X3VzZXJfbm9jYWNoZSgpPw0KPiAN -Cj4gVGhlIGRpZmZlcmVuY2UgaW4gbXkgbWluZCBpcyB0aGF0IHRoZSAiX25vY2FjaGUiIHN1ZmZp -eCBpbmRpY2F0ZXMNCj4gb3Bwb3J0dW5pc3RpYyAvIG9wdGlvbmFsIGNhY2hlIHBvbGx1dGlvbiBh -dm9pZGFuY2Ugd2hlcmVhcyAiX3d0Ig0KPiBzdHJpY3RseSBhcnJhbmdlcyBmb3IgY2FjaGVzIG5v -dCB0byBjb250YWluIGRpcnR5IGRhdGEgdXBvbg0KPiBjb21wbGV0aW9uIG9mIHRoZSByb3V0aW5l -LiBGb3IgZXhhbXBsZSwgbm9uLXRlbXBvcmFsIHN0b3JlcyBvbiBvbGRlcg0KPiB4ODYgY3B1cyBj -b3VsZCBwb3RlbnRpYWxseSBsZWF2ZSBkaXJ0eSBkYXRhIGluIHRoZSBjYWNoZSwgc28NCj4gbWVt -Y3B5X3d0IG9uIHRob3NlIGNwdXMgd291bGQgbmVlZCB0byB1c2UgZXhwbGljaXQgY2FjaGUgZmx1 -c2hpbmcuDQoNCkkgc2VlLiAgSSBhZ3JlZSB0aGF0IGl0cyBiZWhhdmlvciBpcyBkaWZmZXJlbnQg -ZnJvbSB0aGUgZXhpc3Rpbmcgb25lDQp3aXRoICJfbm9jYWNoZSIuICAgVGhhdCBzYWlkLCBJIHRo -aW5rICJ3dCIgb3IgIndyaXRlLXRocm91Z2giIGdlbmVyYWxseQ0KbWVhbnMgdGhhdCB3cml0ZXMg -YWxsb2NhdGUgY2FjaGVsaW5lcyBhbmQga2VlcCB0aGVtIGNsZWFuIGJ5IHdyaXRpbmcgdG8NCm1l -bW9yeS4gIFNvLCBzdWJzZXF1ZW50IHJlYWRzIHRvIHRoZSBkZXN0aW5hdGlvbiB3aWxsIGhpdCB0 -aGUNCmNhY2hlbGluZXMuICBUaGlzIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXMgaW50ZXJmYWNl -Lg0KDQpUaGFua3MsDQotVG9zaGkNCiA= +On Fri, 2017-05-05 at 15:25 -0700, Dan Williams wrote: +> On Fri, May 5, 2017 at 1:39 PM, Kani, Toshimitsu <toshi.kani@hpe.com> +> wrote: + : +> > > --- +> > > Changes since the initial RFC: +> > > * s/writethru/wt/ since we already have ioremap_wt(), +> > > set_memory_wt(), etc. (Ingo) +> > +> > Sorry I should have said earlier, but I think the term "wt" is +> > misleading. Non-temporal stores used in memcpy_wt() provide WC +> > semantics, not WT semantics. +> +> The non-temporal stores do, but memcpy_wt() is using a combination of +> non-temporal stores and explicit cache flushing. +> +> > How about using "nocache" as it's been +> > used in __copy_user_nocache()? +> +> The difference in my mind is that the "_nocache" suffix indicates +> opportunistic / optional cache pollution avoidance whereas "_wt" +> strictly arranges for caches not to contain dirty data upon +> completion of the routine. For example, non-temporal stores on older +> x86 cpus could potentially leave dirty data in the cache, so +> memcpy_wt on those cpus would need to use explicit cache flushing. + +I see. I agree that its behavior is different from the existing one +with "_nocache". That said, I think "wt" or "write-through" generally +means that writes allocate cachelines and keep them clean by writing to +memory. So, subsequent reads to the destination will hit the +cachelines. This is not the case with this interface. + +Thanks, +-Toshi + +_______________________________________________ +Linux-nvdimm mailing list +Linux-nvdimm@lists.01.org +https://lists.01.org/mailman/listinfo/linux-nvdimm diff --git a/a/content_digest b/N1/content_digest index f246eec..86e2a56 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -6,47 +6,58 @@ "Subject\0Re: [PATCH v2] x86, uaccess: introduce copy_from_iter_wt for pmem / writethrough operations\0" "Date\0Fri, 5 May 2017 22:44:40 +0000\0" "To\0dan.j.williams@intel.com <dan.j.williams@intel.com>\0" - "Cc\0linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org>" - linux-block@vger.kernel.org <linux-block@vger.kernel.org> - jmoyer@redhat.com <jmoyer@redhat.com> - tglx@linutronix.de <tglx@linutronix.de> - hch@lst.de <hch@lst.de> - viro@zeniv.linux.org.uk <viro@zeniv.linux.org.uk> - x86@kernel.org <x86@kernel.org> + "Cc\0jack@suse.cz <jack@suse.cz>" mawilcox@microsoft.com <mawilcox@microsoft.com> - hpa@zytor.com <hpa@zytor.com> + x86@kernel.org <x86@kernel.org> + linux-kernel@vger.kernel.org <linux-kernel@vger.kernel.org> + linux-block@vger.kernel.org <linux-block@vger.kernel.org> linux-nvdimm@lists.01.org <linux-nvdimm@lists.01.org> mingo@redhat.com <mingo@redhat.com> + viro@zeniv.linux.org.uk <viro@zeniv.linux.org.uk> + hpa@zytor.com <hpa@zytor.com> linux-fsdevel@vger.kernel.org <linux-fsdevel@vger.kernel.org> - ross.zwisler@linux.intel.com <ross.zwisler@linux.intel.com> - " jack@suse.cz <jack@suse.cz>\0" + tglx@linutronix.de <tglx@linutronix.de> + " hch@lst.de <hch@lst.de>\0" "\00:1\0" "b\0" - "T24gRnJpLCAyMDE3LTA1LTA1IGF0IDE1OjI1IC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+\n" - "IE9uIEZyaSwgTWF5IDUsIDIwMTcgYXQgMTozOSBQTSwgS2FuaSwgVG9zaGltaXRzdSA8dG9zaGku\n" - "a2FuaUBocGUuY29tPg0KPiB3cm90ZToNCiA6DQo+ID4gPiAtLS0NCj4gPiA+IENoYW5nZXMgc2lu\n" - "Y2UgdGhlIGluaXRpYWwgUkZDOg0KPiA+ID4gKiBzL3dyaXRldGhydS93dC8gc2luY2Ugd2UgYWxy\n" - "ZWFkeSBoYXZlIGlvcmVtYXBfd3QoKSwNCj4gPiA+IHNldF9tZW1vcnlfd3QoKSwgZXRjLiAoSW5n\n" - "bykNCj4gPiANCj4gPiBTb3JyeSBJIHNob3VsZCBoYXZlIHNhaWQgZWFybGllciwgYnV0IEkgdGhp\n" - "bmsgdGhlIHRlcm0gInd0IiBpcw0KPiA+IG1pc2xlYWRpbmcuwqDCoE5vbi10ZW1wb3JhbCBzdG9y\n" - "ZXMgdXNlZCBpbiBtZW1jcHlfd3QoKSBwcm92aWRlIFdDDQo+ID4gc2VtYW50aWNzLCBub3QgV1Qg\n" - "c2VtYW50aWNzLg0KPiANCj4gVGhlIG5vbi10ZW1wb3JhbCBzdG9yZXMgZG8sIGJ1dCBtZW1jcHlf\n" - "d3QoKSBpcyB1c2luZyBhIGNvbWJpbmF0aW9uIG9mDQo+IG5vbi10ZW1wb3JhbCBzdG9yZXMgYW5k\n" - "IGV4cGxpY2l0IGNhY2hlIGZsdXNoaW5nLg0KPiANCj4gPiBIb3cgYWJvdXQgdXNpbmcgIm5vY2Fj\n" - "aGUiIGFzIGl0J3MgYmVlbg0KPiA+IHVzZWQgaW4gX19jb3B5X3VzZXJfbm9jYWNoZSgpPw0KPiAN\n" - "Cj4gVGhlIGRpZmZlcmVuY2UgaW4gbXkgbWluZCBpcyB0aGF0IHRoZSAiX25vY2FjaGUiIHN1ZmZp\n" - "eCBpbmRpY2F0ZXMNCj4gb3Bwb3J0dW5pc3RpYyAvIG9wdGlvbmFsIGNhY2hlIHBvbGx1dGlvbiBh\n" - "dm9pZGFuY2Ugd2hlcmVhcyAiX3d0Ig0KPiBzdHJpY3RseSBhcnJhbmdlcyBmb3IgY2FjaGVzIG5v\n" - "dCB0byBjb250YWluIGRpcnR5IGRhdGEgdXBvbg0KPiBjb21wbGV0aW9uIG9mIHRoZSByb3V0aW5l\n" - "LiBGb3IgZXhhbXBsZSwgbm9uLXRlbXBvcmFsIHN0b3JlcyBvbiBvbGRlcg0KPiB4ODYgY3B1cyBj\n" - "b3VsZCBwb3RlbnRpYWxseSBsZWF2ZSBkaXJ0eSBkYXRhIGluIHRoZSBjYWNoZSwgc28NCj4gbWVt\n" - "Y3B5X3d0IG9uIHRob3NlIGNwdXMgd291bGQgbmVlZCB0byB1c2UgZXhwbGljaXQgY2FjaGUgZmx1\n" - "c2hpbmcuDQoNCkkgc2VlLiAgSSBhZ3JlZSB0aGF0IGl0cyBiZWhhdmlvciBpcyBkaWZmZXJlbnQg\n" - "ZnJvbSB0aGUgZXhpc3Rpbmcgb25lDQp3aXRoICJfbm9jYWNoZSIuICAgVGhhdCBzYWlkLCBJIHRo\n" - "aW5rICJ3dCIgb3IgIndyaXRlLXRocm91Z2giIGdlbmVyYWxseQ0KbWVhbnMgdGhhdCB3cml0ZXMg\n" - "YWxsb2NhdGUgY2FjaGVsaW5lcyBhbmQga2VlcCB0aGVtIGNsZWFuIGJ5IHdyaXRpbmcgdG8NCm1l\n" - "bW9yeS4gIFNvLCBzdWJzZXF1ZW50IHJlYWRzIHRvIHRoZSBkZXN0aW5hdGlvbiB3aWxsIGhpdCB0\n" - "aGUNCmNhY2hlbGluZXMuICBUaGlzIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXMgaW50ZXJmYWNl\n" - Lg0KDQpUaGFua3MsDQotVG9zaGkNCiA= + "On Fri, 2017-05-05 at 15:25 -0700, Dan Williams wrote:\n" + "> On Fri, May 5, 2017 at 1:39 PM, Kani, Toshimitsu <toshi.kani@hpe.com>\n" + "> wrote:\n" + " :\n" + "> > > ---\n" + "> > > Changes since the initial RFC:\n" + "> > > * s/writethru/wt/ since we already have ioremap_wt(),\n" + "> > > set_memory_wt(), etc. (Ingo)\n" + "> > \n" + "> > Sorry I should have said earlier, but I think the term \"wt\" is\n" + "> > misleading.\302\240\302\240Non-temporal stores used in memcpy_wt() provide WC\n" + "> > semantics, not WT semantics.\n" + "> \n" + "> The non-temporal stores do, but memcpy_wt() is using a combination of\n" + "> non-temporal stores and explicit cache flushing.\n" + "> \n" + "> > How about using \"nocache\" as it's been\n" + "> > used in __copy_user_nocache()?\n" + "> \n" + "> The difference in my mind is that the \"_nocache\" suffix indicates\n" + "> opportunistic / optional cache pollution avoidance whereas \"_wt\"\n" + "> strictly arranges for caches not to contain dirty data upon\n" + "> completion of the routine. For example, non-temporal stores on older\n" + "> x86 cpus could potentially leave dirty data in the cache, so\n" + "> memcpy_wt on those cpus would need to use explicit cache flushing.\n" + "\n" + "I see. I agree that its behavior is different from the existing one\n" + "with \"_nocache\". That said, I think \"wt\" or \"write-through\" generally\n" + "means that writes allocate cachelines and keep them clean by writing to\n" + "memory. So, subsequent reads to the destination will hit the\n" + "cachelines. This is not the case with this interface.\n" + "\n" + "Thanks,\n" + "-Toshi\n" + " \n" + "_______________________________________________\n" + "Linux-nvdimm mailing list\n" + "Linux-nvdimm@lists.01.org\n" + https://lists.01.org/mailman/listinfo/linux-nvdimm -144389b513521a487b593790c86f201eb0ab180ccec4fd2318961c658d39e2fb +4e4ed4983d0028dce15bf82ddd0d9032144af3d269496ef2dfae038246668c6f
diff --git a/a/1.txt b/N2/1.txt index e8e82d7..2c7215d 100644 --- a/a/1.txt +++ b/N2/1.txt @@ -1,26 +1,34 @@ -T24gRnJpLCAyMDE3LTA1LTA1IGF0IDE1OjI1IC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+ -IE9uIEZyaSwgTWF5IDUsIDIwMTcgYXQgMTozOSBQTSwgS2FuaSwgVG9zaGltaXRzdSA8dG9zaGku -a2FuaUBocGUuY29tPg0KPiB3cm90ZToNCiA6DQo+ID4gPiAtLS0NCj4gPiA+IENoYW5nZXMgc2lu -Y2UgdGhlIGluaXRpYWwgUkZDOg0KPiA+ID4gKiBzL3dyaXRldGhydS93dC8gc2luY2Ugd2UgYWxy -ZWFkeSBoYXZlIGlvcmVtYXBfd3QoKSwNCj4gPiA+IHNldF9tZW1vcnlfd3QoKSwgZXRjLiAoSW5n -bykNCj4gPiANCj4gPiBTb3JyeSBJIHNob3VsZCBoYXZlIHNhaWQgZWFybGllciwgYnV0IEkgdGhp -bmsgdGhlIHRlcm0gInd0IiBpcw0KPiA+IG1pc2xlYWRpbmcuwqDCoE5vbi10ZW1wb3JhbCBzdG9y -ZXMgdXNlZCBpbiBtZW1jcHlfd3QoKSBwcm92aWRlIFdDDQo+ID4gc2VtYW50aWNzLCBub3QgV1Qg -c2VtYW50aWNzLg0KPiANCj4gVGhlIG5vbi10ZW1wb3JhbCBzdG9yZXMgZG8sIGJ1dCBtZW1jcHlf -d3QoKSBpcyB1c2luZyBhIGNvbWJpbmF0aW9uIG9mDQo+IG5vbi10ZW1wb3JhbCBzdG9yZXMgYW5k -IGV4cGxpY2l0IGNhY2hlIGZsdXNoaW5nLg0KPiANCj4gPiBIb3cgYWJvdXQgdXNpbmcgIm5vY2Fj -aGUiIGFzIGl0J3MgYmVlbg0KPiA+IHVzZWQgaW4gX19jb3B5X3VzZXJfbm9jYWNoZSgpPw0KPiAN -Cj4gVGhlIGRpZmZlcmVuY2UgaW4gbXkgbWluZCBpcyB0aGF0IHRoZSAiX25vY2FjaGUiIHN1ZmZp -eCBpbmRpY2F0ZXMNCj4gb3Bwb3J0dW5pc3RpYyAvIG9wdGlvbmFsIGNhY2hlIHBvbGx1dGlvbiBh -dm9pZGFuY2Ugd2hlcmVhcyAiX3d0Ig0KPiBzdHJpY3RseSBhcnJhbmdlcyBmb3IgY2FjaGVzIG5v -dCB0byBjb250YWluIGRpcnR5IGRhdGEgdXBvbg0KPiBjb21wbGV0aW9uIG9mIHRoZSByb3V0aW5l -LiBGb3IgZXhhbXBsZSwgbm9uLXRlbXBvcmFsIHN0b3JlcyBvbiBvbGRlcg0KPiB4ODYgY3B1cyBj -b3VsZCBwb3RlbnRpYWxseSBsZWF2ZSBkaXJ0eSBkYXRhIGluIHRoZSBjYWNoZSwgc28NCj4gbWVt -Y3B5X3d0IG9uIHRob3NlIGNwdXMgd291bGQgbmVlZCB0byB1c2UgZXhwbGljaXQgY2FjaGUgZmx1 -c2hpbmcuDQoNCkkgc2VlLiAgSSBhZ3JlZSB0aGF0IGl0cyBiZWhhdmlvciBpcyBkaWZmZXJlbnQg -ZnJvbSB0aGUgZXhpc3Rpbmcgb25lDQp3aXRoICJfbm9jYWNoZSIuICAgVGhhdCBzYWlkLCBJIHRo -aW5rICJ3dCIgb3IgIndyaXRlLXRocm91Z2giIGdlbmVyYWxseQ0KbWVhbnMgdGhhdCB3cml0ZXMg -YWxsb2NhdGUgY2FjaGVsaW5lcyBhbmQga2VlcCB0aGVtIGNsZWFuIGJ5IHdyaXRpbmcgdG8NCm1l -bW9yeS4gIFNvLCBzdWJzZXF1ZW50IHJlYWRzIHRvIHRoZSBkZXN0aW5hdGlvbiB3aWxsIGhpdCB0 -aGUNCmNhY2hlbGluZXMuICBUaGlzIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXMgaW50ZXJmYWNl -Lg0KDQpUaGFua3MsDQotVG9zaGkNCiA= +On Fri, 2017-05-05 at 15:25 -0700, Dan Williams wrote: +> On Fri, May 5, 2017 at 1:39 PM, Kani, Toshimitsu <toshi.kani@hpe.com> +> wrote: + : +> > > --- +> > > Changes since the initial RFC: +> > > * s/writethru/wt/ since we already have ioremap_wt(), +> > > set_memory_wt(), etc. (Ingo) +> > +> > Sorry I should have said earlier, but I think the term "wt" is +> > misleading. Non-temporal stores used in memcpy_wt() provide WC +> > semantics, not WT semantics. +> +> The non-temporal stores do, but memcpy_wt() is using a combination of +> non-temporal stores and explicit cache flushing. +> +> > How about using "nocache" as it's been +> > used in __copy_user_nocache()? +> +> The difference in my mind is that the "_nocache" suffix indicates +> opportunistic / optional cache pollution avoidance whereas "_wt" +> strictly arranges for caches not to contain dirty data upon +> completion of the routine. For example, non-temporal stores on older +> x86 cpus could potentially leave dirty data in the cache, so +> memcpy_wt on those cpus would need to use explicit cache flushing. + +I see. I agree that its behavior is different from the existing one +with "_nocache". That said, I think "wt" or "write-through" generally +means that writes allocate cachelines and keep them clean by writing to +memory. So, subsequent reads to the destination will hit the +cachelines. This is not the case with this interface. + +Thanks, +-Toshi diff --git a/a/content_digest b/N2/content_digest index f246eec..934c360 100644 --- a/a/content_digest +++ b/N2/content_digest @@ -22,31 +22,39 @@ " jack@suse.cz <jack@suse.cz>\0" "\00:1\0" "b\0" - "T24gRnJpLCAyMDE3LTA1LTA1IGF0IDE1OjI1IC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+\n" - "IE9uIEZyaSwgTWF5IDUsIDIwMTcgYXQgMTozOSBQTSwgS2FuaSwgVG9zaGltaXRzdSA8dG9zaGku\n" - "a2FuaUBocGUuY29tPg0KPiB3cm90ZToNCiA6DQo+ID4gPiAtLS0NCj4gPiA+IENoYW5nZXMgc2lu\n" - "Y2UgdGhlIGluaXRpYWwgUkZDOg0KPiA+ID4gKiBzL3dyaXRldGhydS93dC8gc2luY2Ugd2UgYWxy\n" - "ZWFkeSBoYXZlIGlvcmVtYXBfd3QoKSwNCj4gPiA+IHNldF9tZW1vcnlfd3QoKSwgZXRjLiAoSW5n\n" - "bykNCj4gPiANCj4gPiBTb3JyeSBJIHNob3VsZCBoYXZlIHNhaWQgZWFybGllciwgYnV0IEkgdGhp\n" - "bmsgdGhlIHRlcm0gInd0IiBpcw0KPiA+IG1pc2xlYWRpbmcuwqDCoE5vbi10ZW1wb3JhbCBzdG9y\n" - "ZXMgdXNlZCBpbiBtZW1jcHlfd3QoKSBwcm92aWRlIFdDDQo+ID4gc2VtYW50aWNzLCBub3QgV1Qg\n" - "c2VtYW50aWNzLg0KPiANCj4gVGhlIG5vbi10ZW1wb3JhbCBzdG9yZXMgZG8sIGJ1dCBtZW1jcHlf\n" - "d3QoKSBpcyB1c2luZyBhIGNvbWJpbmF0aW9uIG9mDQo+IG5vbi10ZW1wb3JhbCBzdG9yZXMgYW5k\n" - "IGV4cGxpY2l0IGNhY2hlIGZsdXNoaW5nLg0KPiANCj4gPiBIb3cgYWJvdXQgdXNpbmcgIm5vY2Fj\n" - "aGUiIGFzIGl0J3MgYmVlbg0KPiA+IHVzZWQgaW4gX19jb3B5X3VzZXJfbm9jYWNoZSgpPw0KPiAN\n" - "Cj4gVGhlIGRpZmZlcmVuY2UgaW4gbXkgbWluZCBpcyB0aGF0IHRoZSAiX25vY2FjaGUiIHN1ZmZp\n" - "eCBpbmRpY2F0ZXMNCj4gb3Bwb3J0dW5pc3RpYyAvIG9wdGlvbmFsIGNhY2hlIHBvbGx1dGlvbiBh\n" - "dm9pZGFuY2Ugd2hlcmVhcyAiX3d0Ig0KPiBzdHJpY3RseSBhcnJhbmdlcyBmb3IgY2FjaGVzIG5v\n" - "dCB0byBjb250YWluIGRpcnR5IGRhdGEgdXBvbg0KPiBjb21wbGV0aW9uIG9mIHRoZSByb3V0aW5l\n" - "LiBGb3IgZXhhbXBsZSwgbm9uLXRlbXBvcmFsIHN0b3JlcyBvbiBvbGRlcg0KPiB4ODYgY3B1cyBj\n" - "b3VsZCBwb3RlbnRpYWxseSBsZWF2ZSBkaXJ0eSBkYXRhIGluIHRoZSBjYWNoZSwgc28NCj4gbWVt\n" - "Y3B5X3d0IG9uIHRob3NlIGNwdXMgd291bGQgbmVlZCB0byB1c2UgZXhwbGljaXQgY2FjaGUgZmx1\n" - "c2hpbmcuDQoNCkkgc2VlLiAgSSBhZ3JlZSB0aGF0IGl0cyBiZWhhdmlvciBpcyBkaWZmZXJlbnQg\n" - "ZnJvbSB0aGUgZXhpc3Rpbmcgb25lDQp3aXRoICJfbm9jYWNoZSIuICAgVGhhdCBzYWlkLCBJIHRo\n" - "aW5rICJ3dCIgb3IgIndyaXRlLXRocm91Z2giIGdlbmVyYWxseQ0KbWVhbnMgdGhhdCB3cml0ZXMg\n" - "YWxsb2NhdGUgY2FjaGVsaW5lcyBhbmQga2VlcCB0aGVtIGNsZWFuIGJ5IHdyaXRpbmcgdG8NCm1l\n" - "bW9yeS4gIFNvLCBzdWJzZXF1ZW50IHJlYWRzIHRvIHRoZSBkZXN0aW5hdGlvbiB3aWxsIGhpdCB0\n" - "aGUNCmNhY2hlbGluZXMuICBUaGlzIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXMgaW50ZXJmYWNl\n" - Lg0KDQpUaGFua3MsDQotVG9zaGkNCiA= + "On Fri, 2017-05-05 at 15:25 -0700, Dan Williams wrote:\n" + "> On Fri, May 5, 2017 at 1:39 PM, Kani, Toshimitsu <toshi.kani@hpe.com>\n" + "> wrote:\n" + " :\n" + "> > > ---\n" + "> > > Changes since the initial RFC:\n" + "> > > * s/writethru/wt/ since we already have ioremap_wt(),\n" + "> > > set_memory_wt(), etc. (Ingo)\n" + "> > \n" + "> > Sorry I should have said earlier, but I think the term \"wt\" is\n" + "> > misleading.\302\240\302\240Non-temporal stores used in memcpy_wt() provide WC\n" + "> > semantics, not WT semantics.\n" + "> \n" + "> The non-temporal stores do, but memcpy_wt() is using a combination of\n" + "> non-temporal stores and explicit cache flushing.\n" + "> \n" + "> > How about using \"nocache\" as it's been\n" + "> > used in __copy_user_nocache()?\n" + "> \n" + "> The difference in my mind is that the \"_nocache\" suffix indicates\n" + "> opportunistic / optional cache pollution avoidance whereas \"_wt\"\n" + "> strictly arranges for caches not to contain dirty data upon\n" + "> completion of the routine. For example, non-temporal stores on older\n" + "> x86 cpus could potentially leave dirty data in the cache, so\n" + "> memcpy_wt on those cpus would need to use explicit cache flushing.\n" + "\n" + "I see. I agree that its behavior is different from the existing one\n" + "with \"_nocache\". That said, I think \"wt\" or \"write-through\" generally\n" + "means that writes allocate cachelines and keep them clean by writing to\n" + "memory. So, subsequent reads to the destination will hit the\n" + "cachelines. This is not the case with this interface.\n" + "\n" + "Thanks,\n" + -Toshi -144389b513521a487b593790c86f201eb0ab180ccec4fd2318961c658d39e2fb +b80c7e4040c817a1ff8ccc4ffb979b8b5a9d2286f49d86002647cbd05d1265ab
diff --git a/a/1.txt b/N3/1.txt index e8e82d7..2c7215d 100644 --- a/a/1.txt +++ b/N3/1.txt @@ -1,26 +1,34 @@ -T24gRnJpLCAyMDE3LTA1LTA1IGF0IDE1OjI1IC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+ -IE9uIEZyaSwgTWF5IDUsIDIwMTcgYXQgMTozOSBQTSwgS2FuaSwgVG9zaGltaXRzdSA8dG9zaGku -a2FuaUBocGUuY29tPg0KPiB3cm90ZToNCiA6DQo+ID4gPiAtLS0NCj4gPiA+IENoYW5nZXMgc2lu -Y2UgdGhlIGluaXRpYWwgUkZDOg0KPiA+ID4gKiBzL3dyaXRldGhydS93dC8gc2luY2Ugd2UgYWxy -ZWFkeSBoYXZlIGlvcmVtYXBfd3QoKSwNCj4gPiA+IHNldF9tZW1vcnlfd3QoKSwgZXRjLiAoSW5n -bykNCj4gPiANCj4gPiBTb3JyeSBJIHNob3VsZCBoYXZlIHNhaWQgZWFybGllciwgYnV0IEkgdGhp -bmsgdGhlIHRlcm0gInd0IiBpcw0KPiA+IG1pc2xlYWRpbmcuwqDCoE5vbi10ZW1wb3JhbCBzdG9y -ZXMgdXNlZCBpbiBtZW1jcHlfd3QoKSBwcm92aWRlIFdDDQo+ID4gc2VtYW50aWNzLCBub3QgV1Qg -c2VtYW50aWNzLg0KPiANCj4gVGhlIG5vbi10ZW1wb3JhbCBzdG9yZXMgZG8sIGJ1dCBtZW1jcHlf -d3QoKSBpcyB1c2luZyBhIGNvbWJpbmF0aW9uIG9mDQo+IG5vbi10ZW1wb3JhbCBzdG9yZXMgYW5k -IGV4cGxpY2l0IGNhY2hlIGZsdXNoaW5nLg0KPiANCj4gPiBIb3cgYWJvdXQgdXNpbmcgIm5vY2Fj -aGUiIGFzIGl0J3MgYmVlbg0KPiA+IHVzZWQgaW4gX19jb3B5X3VzZXJfbm9jYWNoZSgpPw0KPiAN -Cj4gVGhlIGRpZmZlcmVuY2UgaW4gbXkgbWluZCBpcyB0aGF0IHRoZSAiX25vY2FjaGUiIHN1ZmZp -eCBpbmRpY2F0ZXMNCj4gb3Bwb3J0dW5pc3RpYyAvIG9wdGlvbmFsIGNhY2hlIHBvbGx1dGlvbiBh -dm9pZGFuY2Ugd2hlcmVhcyAiX3d0Ig0KPiBzdHJpY3RseSBhcnJhbmdlcyBmb3IgY2FjaGVzIG5v -dCB0byBjb250YWluIGRpcnR5IGRhdGEgdXBvbg0KPiBjb21wbGV0aW9uIG9mIHRoZSByb3V0aW5l -LiBGb3IgZXhhbXBsZSwgbm9uLXRlbXBvcmFsIHN0b3JlcyBvbiBvbGRlcg0KPiB4ODYgY3B1cyBj -b3VsZCBwb3RlbnRpYWxseSBsZWF2ZSBkaXJ0eSBkYXRhIGluIHRoZSBjYWNoZSwgc28NCj4gbWVt -Y3B5X3d0IG9uIHRob3NlIGNwdXMgd291bGQgbmVlZCB0byB1c2UgZXhwbGljaXQgY2FjaGUgZmx1 -c2hpbmcuDQoNCkkgc2VlLiAgSSBhZ3JlZSB0aGF0IGl0cyBiZWhhdmlvciBpcyBkaWZmZXJlbnQg -ZnJvbSB0aGUgZXhpc3Rpbmcgb25lDQp3aXRoICJfbm9jYWNoZSIuICAgVGhhdCBzYWlkLCBJIHRo -aW5rICJ3dCIgb3IgIndyaXRlLXRocm91Z2giIGdlbmVyYWxseQ0KbWVhbnMgdGhhdCB3cml0ZXMg -YWxsb2NhdGUgY2FjaGVsaW5lcyBhbmQga2VlcCB0aGVtIGNsZWFuIGJ5IHdyaXRpbmcgdG8NCm1l -bW9yeS4gIFNvLCBzdWJzZXF1ZW50IHJlYWRzIHRvIHRoZSBkZXN0aW5hdGlvbiB3aWxsIGhpdCB0 -aGUNCmNhY2hlbGluZXMuICBUaGlzIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXMgaW50ZXJmYWNl -Lg0KDQpUaGFua3MsDQotVG9zaGkNCiA= +On Fri, 2017-05-05 at 15:25 -0700, Dan Williams wrote: +> On Fri, May 5, 2017 at 1:39 PM, Kani, Toshimitsu <toshi.kani@hpe.com> +> wrote: + : +> > > --- +> > > Changes since the initial RFC: +> > > * s/writethru/wt/ since we already have ioremap_wt(), +> > > set_memory_wt(), etc. (Ingo) +> > +> > Sorry I should have said earlier, but I think the term "wt" is +> > misleading. Non-temporal stores used in memcpy_wt() provide WC +> > semantics, not WT semantics. +> +> The non-temporal stores do, but memcpy_wt() is using a combination of +> non-temporal stores and explicit cache flushing. +> +> > How about using "nocache" as it's been +> > used in __copy_user_nocache()? +> +> The difference in my mind is that the "_nocache" suffix indicates +> opportunistic / optional cache pollution avoidance whereas "_wt" +> strictly arranges for caches not to contain dirty data upon +> completion of the routine. For example, non-temporal stores on older +> x86 cpus could potentially leave dirty data in the cache, so +> memcpy_wt on those cpus would need to use explicit cache flushing. + +I see. I agree that its behavior is different from the existing one +with "_nocache". That said, I think "wt" or "write-through" generally +means that writes allocate cachelines and keep them clean by writing to +memory. So, subsequent reads to the destination will hit the +cachelines. This is not the case with this interface. + +Thanks, +-Toshi diff --git a/a/content_digest b/N3/content_digest index f246eec..67cde98 100644 --- a/a/content_digest +++ b/N3/content_digest @@ -15,38 +15,46 @@ x86@kernel.org <x86@kernel.org> mawilcox@microsoft.com <mawilcox@microsoft.com> hpa@zytor.com <hpa@zytor.com> - linux-nvdimm@lists.01.org <linux-nvdimm@lists.01.org> + linux-nvdimm@lists.01.org <linux-nvdimm@ml01.01.org> mingo@redhat.com <mingo@redhat.com> linux-fsdevel@vger.kernel.org <linux-fsdevel@vger.kernel.org> ross.zwisler@linux.intel.com <ross.zwisler@linux.intel.com> " jack@suse.cz <jack@suse.cz>\0" "\00:1\0" "b\0" - "T24gRnJpLCAyMDE3LTA1LTA1IGF0IDE1OjI1IC0wNzAwLCBEYW4gV2lsbGlhbXMgd3JvdGU6DQo+\n" - "IE9uIEZyaSwgTWF5IDUsIDIwMTcgYXQgMTozOSBQTSwgS2FuaSwgVG9zaGltaXRzdSA8dG9zaGku\n" - "a2FuaUBocGUuY29tPg0KPiB3cm90ZToNCiA6DQo+ID4gPiAtLS0NCj4gPiA+IENoYW5nZXMgc2lu\n" - "Y2UgdGhlIGluaXRpYWwgUkZDOg0KPiA+ID4gKiBzL3dyaXRldGhydS93dC8gc2luY2Ugd2UgYWxy\n" - "ZWFkeSBoYXZlIGlvcmVtYXBfd3QoKSwNCj4gPiA+IHNldF9tZW1vcnlfd3QoKSwgZXRjLiAoSW5n\n" - "bykNCj4gPiANCj4gPiBTb3JyeSBJIHNob3VsZCBoYXZlIHNhaWQgZWFybGllciwgYnV0IEkgdGhp\n" - "bmsgdGhlIHRlcm0gInd0IiBpcw0KPiA+IG1pc2xlYWRpbmcuwqDCoE5vbi10ZW1wb3JhbCBzdG9y\n" - "ZXMgdXNlZCBpbiBtZW1jcHlfd3QoKSBwcm92aWRlIFdDDQo+ID4gc2VtYW50aWNzLCBub3QgV1Qg\n" - "c2VtYW50aWNzLg0KPiANCj4gVGhlIG5vbi10ZW1wb3JhbCBzdG9yZXMgZG8sIGJ1dCBtZW1jcHlf\n" - "d3QoKSBpcyB1c2luZyBhIGNvbWJpbmF0aW9uIG9mDQo+IG5vbi10ZW1wb3JhbCBzdG9yZXMgYW5k\n" - "IGV4cGxpY2l0IGNhY2hlIGZsdXNoaW5nLg0KPiANCj4gPiBIb3cgYWJvdXQgdXNpbmcgIm5vY2Fj\n" - "aGUiIGFzIGl0J3MgYmVlbg0KPiA+IHVzZWQgaW4gX19jb3B5X3VzZXJfbm9jYWNoZSgpPw0KPiAN\n" - "Cj4gVGhlIGRpZmZlcmVuY2UgaW4gbXkgbWluZCBpcyB0aGF0IHRoZSAiX25vY2FjaGUiIHN1ZmZp\n" - "eCBpbmRpY2F0ZXMNCj4gb3Bwb3J0dW5pc3RpYyAvIG9wdGlvbmFsIGNhY2hlIHBvbGx1dGlvbiBh\n" - "dm9pZGFuY2Ugd2hlcmVhcyAiX3d0Ig0KPiBzdHJpY3RseSBhcnJhbmdlcyBmb3IgY2FjaGVzIG5v\n" - "dCB0byBjb250YWluIGRpcnR5IGRhdGEgdXBvbg0KPiBjb21wbGV0aW9uIG9mIHRoZSByb3V0aW5l\n" - "LiBGb3IgZXhhbXBsZSwgbm9uLXRlbXBvcmFsIHN0b3JlcyBvbiBvbGRlcg0KPiB4ODYgY3B1cyBj\n" - "b3VsZCBwb3RlbnRpYWxseSBsZWF2ZSBkaXJ0eSBkYXRhIGluIHRoZSBjYWNoZSwgc28NCj4gbWVt\n" - "Y3B5X3d0IG9uIHRob3NlIGNwdXMgd291bGQgbmVlZCB0byB1c2UgZXhwbGljaXQgY2FjaGUgZmx1\n" - "c2hpbmcuDQoNCkkgc2VlLiAgSSBhZ3JlZSB0aGF0IGl0cyBiZWhhdmlvciBpcyBkaWZmZXJlbnQg\n" - "ZnJvbSB0aGUgZXhpc3Rpbmcgb25lDQp3aXRoICJfbm9jYWNoZSIuICAgVGhhdCBzYWlkLCBJIHRo\n" - "aW5rICJ3dCIgb3IgIndyaXRlLXRocm91Z2giIGdlbmVyYWxseQ0KbWVhbnMgdGhhdCB3cml0ZXMg\n" - "YWxsb2NhdGUgY2FjaGVsaW5lcyBhbmQga2VlcCB0aGVtIGNsZWFuIGJ5IHdyaXRpbmcgdG8NCm1l\n" - "bW9yeS4gIFNvLCBzdWJzZXF1ZW50IHJlYWRzIHRvIHRoZSBkZXN0aW5hdGlvbiB3aWxsIGhpdCB0\n" - "aGUNCmNhY2hlbGluZXMuICBUaGlzIGlzIG5vdCB0aGUgY2FzZSB3aXRoIHRoaXMgaW50ZXJmYWNl\n" - Lg0KDQpUaGFua3MsDQotVG9zaGkNCiA= + "On Fri, 2017-05-05 at 15:25 -0700, Dan Williams wrote:\n" + "> On Fri, May 5, 2017 at 1:39 PM, Kani, Toshimitsu <toshi.kani@hpe.com>\n" + "> wrote:\n" + " :\n" + "> > > ---\n" + "> > > Changes since the initial RFC:\n" + "> > > * s/writethru/wt/ since we already have ioremap_wt(),\n" + "> > > set_memory_wt(), etc. (Ingo)\n" + "> > \n" + "> > Sorry I should have said earlier, but I think the term \"wt\" is\n" + "> > misleading.\302\240\302\240Non-temporal stores used in memcpy_wt() provide WC\n" + "> > semantics, not WT semantics.\n" + "> \n" + "> The non-temporal stores do, but memcpy_wt() is using a combination of\n" + "> non-temporal stores and explicit cache flushing.\n" + "> \n" + "> > How about using \"nocache\" as it's been\n" + "> > used in __copy_user_nocache()?\n" + "> \n" + "> The difference in my mind is that the \"_nocache\" suffix indicates\n" + "> opportunistic / optional cache pollution avoidance whereas \"_wt\"\n" + "> strictly arranges for caches not to contain dirty data upon\n" + "> completion of the routine. For example, non-temporal stores on older\n" + "> x86 cpus could potentially leave dirty data in the cache, so\n" + "> memcpy_wt on those cpus would need to use explicit cache flushing.\n" + "\n" + "I see. I agree that its behavior is different from the existing one\n" + "with \"_nocache\". That said, I think \"wt\" or \"write-through\" generally\n" + "means that writes allocate cachelines and keep them clean by writing to\n" + "memory. So, subsequent reads to the destination will hit the\n" + "cachelines. This is not the case with this interface.\n" + "\n" + "Thanks,\n" + -Toshi -144389b513521a487b593790c86f201eb0ab180ccec4fd2318961c658d39e2fb +5ce51b472f857cde928cccaa6f839eb9e9967acaa50bc8af76a2e3e5ff28041c
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.