From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by ml01.01.org (Postfix) with ESMTP id 72C241A1F99 for ; Wed, 30 Mar 2016 14:29:58 -0700 (PDT) From: "Williams, Dan J" Subject: [GIT PULL v2] libnvdimm, pmem: hook up memcpy_mcsafe Date: Wed, 30 Mar 2016 21:29:26 +0000 Message-ID: <1459373365.14360.5.camel@intel.com> Content-Language: en-US Content-ID: <940231BEC7151D4AAC773E617639D2C8@intel.com> MIME-Version: 1.0 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-7" Content-Transfer-Encoding: base64 Errors-To: linux-nvdimm-bounces@lists.01.org Sender: "Linux-nvdimm" To: "torvalds@linux-foundation.org" , "mingo@kernel.org" , "akpm@linux-foundation.org" Cc: "Luck, Tony" , "linux-kernel@vger.kernel.org" , "linux-nvdimm@lists.01.org" List-ID: SGkgTGludXMsIHBsZWFzZSBwdWxsIGZyb206CgorQUtBIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1 Yi9zY20vbGludXgva2VybmVsL2dpdC9udmRpbW0vbnZkaW1tIGxpYm52ZGltbS1mb3ItbmV4dAoK Tm93IHRoYXQgbWNzYWZlX21lbWNweSgpIGhhcyBsYW5kZWQsIGFuZCB0aGUgcmV0dXJuIHZhbHVl IHdhcyBiZWVuCmNsYXJpZmllZCBpbiBjb21taXQgY2JmOGI1YTJiNjQ5ICJ4ODYvbW0sIHg4Ni9t Y2U6IEZpeCByZXR1cm4KdHlwZS92YWx1ZSBmb3IgbWVtY3B5X21jc2FmZSgpIiwgbGV0J3MgaG9v ayB1cCBpdHMgcHJpbWFyeSB1c2FnZSBpbiB0aGUKcG1lbSBkcml2ZXIuCgpUaGUgY29tcGlsYXRp b24gcHJvYmxlbXMgZnJvbSB0aGUgaW5pdGlhbCBwb3N0aW5nIGhhdmUgYmVlbiBmaXhlZCwgdGhp cwpoYXMgYXBwZWFyZWQgaW4gYSAtbmV4dCByZWxlYXNlIHdpdGggbm8gcmVwb3J0ZWQgaXNzdWVz LCBhbmQgaXQgcGlja2VkCnVwIGFuIGFjayBmcm9tIEluZ28uICtBS0EtVGhlcmUgaXMgbm8gcHJl c3NpbmcgbmVlZCB0byBtZXJnZSB0aGlzIGluIDQuNi0KcmMyLiArQUtBLUhvd2V2ZXIsIGlmIHdl IHdhaXQgdW50aWwgNC43IHRoZSBuZXcgbWVtY3B5X21jc2FmZSgpIGNhcGFiaWxpdHkKd2lsbCBz aGlwIHdpdGhvdXQgYSB1c2VyIGluIDQuNi1maW5hbC4KCi0tLQpUaGUgZm9sbG93aW5nIGNoYW5n ZXMgc2luY2UgY29tbWl0IGY1NTUzMmEwYzBiOGJiNjE0OGY0ZTA3ODUzYjg3NmVmNzNiYzY5Y2E6 CgorQUtBIExpbnV4IDQuNi1yYzEgKDIwMTYtMDMtMjYgMTY6MDM6MjQgLTA3MDApCgphcmUgYXZh aWxhYmxlIGluIHRoZSBnaXQgcmVwb3NpdG9yeSBhdDoKCitBS0EgZ2l0Oi8vZ2l0Lmtlcm5lbC5v cmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L252ZGltbS9udmRpbW0gbGlibnZkaW1tLWZvci1u ZXh0Cgpmb3IgeW91IHRvIGZldGNoIGNoYW5nZXMgdXAgdG8gZmMwYzIwMjgxMzVjN2Y3NWZjZTM2 YjkwZTQ0ZWZiODAwM2E5MTczYjoKCitBS0EgeDg2LCBwbWVtOiB1c2UgbWVtY3B5X21jc2FmZSgp IGZvciBtZW1jcHlfZnJvbV9wbWVtKCkgKDIwMTYtMDMtMjggMTc6MTk6MzEgLTA3MDApCgotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCkRhbiBXaWxsaWFtcyAoMSk6CitBS0FBb0FDZ0FLQUFvQUNnLXg4NiwgcG1lbTogdXNlIG1l bWNweV9tY3NhZmUoKSBmb3IgbWVtY3B5X2Zyb21fcG1lbSgpCgpjb21taXQgZmMwYzIwMjgxMzVj N2Y3NWZjZTM2YjkwZTQ0ZWZiODAwM2E5MTczYgpBdXRob3I6IERhbiBXaWxsaWFtcyA8ZGFuLmou d2lsbGlhbXNAaW50ZWwuY29tPgpEYXRlOitBS0FBb0FDZy1UdWUgTWFyIDggMTA6MzA6MTkgMjAx NiAtMDgwMAoKK0FLQUFvQUNnQUtBLXg4NiwgcG1lbTogdXNlIG1lbWNweV9tY3NhZmUoKSBmb3Ig bWVtY3B5X2Zyb21fcG1lbSgpCitBS0FBb0FDZ0FLQQorQUtBQW9BQ2dBS0EtVXBkYXRlIHRoZSBk ZWZpbml0aW9uIG9mIG1lbWNweV9mcm9tX3BtZW0oKSB0byByZXR1cm4gMCBvciBhIG5lZ2F0aXZl CitBS0FBb0FDZ0FLQS1lcnJvciBjb2RlLitBS0FBb0EtSW1wbGVtZW50IHg4Ni9hcmNoX21lbWNw eV9mcm9tX3BtZW0oKSB3aXRoIG1lbWNweV9tY3NhZmUoKS4KK0FLQUFvQUNnQUtBCitBS0FBb0FD Z0FLQS1DYzogQm9yaXNsYXYgUGV0a292IDxicEBhbGllbjguZGU+CitBS0FBb0FDZ0FLQS1DYzog VG9ueSBMdWNrIDx0b255Lmx1Y2tAaW50ZWwuY29tPgorQUtBQW9BQ2dBS0EtQ2M6IFRob21hcyBH bGVpeG5lciA8dGdseEBsaW51dHJvbml4LmRlPgorQUtBQW9BQ2dBS0EtQ2M6IEFuZHkgTHV0b21p cnNraSA8bHV0b0BhbWFjYXBpdGFsLm5ldD4KK0FLQUFvQUNnQUtBLUNjOiBQZXRlciBaaWpsc3Ry YSA8cGV0ZXJ6QGluZnJhZGVhZC5vcmc+CitBS0FBb0FDZ0FLQS1DYzogQW5kcmV3IE1vcnRvbiA8 YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KK0FLQUFvQUNnQUtBLUNjOiBMaW51cyBUb3J2YWxk cyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CitBS0FBb0FDZ0FLQS1BY2tlZC1ieTog SW5nbyBNb2xuYXIgPG1pbmdvQGtlcm5lbC5vcmc+CitBS0FBb0FDZ0FLQS1SZXZpZXdlZC1ieTog Um9zcyBad2lzbGVyIDxyb3NzLnp3aXNsZXJAbGludXguaW50ZWwuY29tPgorQUtBQW9BQ2dBS0Et U2lnbmVkLW9mZi1ieTogRGFuIFdpbGxpYW1zIDxkYW4uai53aWxsaWFtc0BpbnRlbC5jb20+Ci0t LQorQUtBLWFyY2gveDg2L2luY2x1ZGUvYXNtL3BtZW0uaCB8K0FLQUFvQS05ICstKy0rLSstKy0r LSstKy0rLQorQUtBLWRyaXZlcnMvbnZkaW1tL3BtZW0uYytBS0FBb0FDZ0FLQUFvQUNnQUtBfCtB S0FBb0EtNCArLSstLS0KK0FLQS1pbmNsdWRlL2xpbnV4L3BtZW0uaCtBS0FBb0FDZ0FLQUFvQUNn QUtBQW9BfCAyMiArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLS0tLS0tLQorQUtBLTMg ZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrLSksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvYXJjaC94ODYvaW5jbHVkZS9hc20vcG1lbS5oIGIvYXJjaC94ODYvaW5jbHVkZS9hc20v cG1lbS5oCmluZGV4IGJmOGIzNWQyMDM1YS4uZmJjNWU5MmUxZWNjIDEwMDY0NAotLS0gYS9hcmNo L3g4Ni9pbmNsdWRlL2FzbS9wbWVtLmgKKy0rLSstIGIvYXJjaC94ODYvaW5jbHVkZS9hc20vcG1l bS5oCkBAIC00Nyw2ICstNDcsMTUgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfbWVtY3B5X3Rv X3BtZW0odm9pZCBfX3BtZW0gKmRzdCwgY29uc3Qgdm9pZCAqc3JjLAorQUtBCQlCVUcoKTsKK0FL QX0KK0FLQQorLXN0YXRpYyBpbmxpbmUgaW50IGFyY2hfbWVtY3B5X2Zyb21fcG1lbSh2b2lkICpk c3QsIGNvbnN0IHZvaWQgX19wbWVtICpzcmMsCistCQlzaXplX3QgbikKKy17CistCWlmIChzdGF0 aWNfY3B1X2hhcyhYODZfRkVBVFVSRV9NQ0VfUkVDT1ZFUlkpKQorLQkJcmV0dXJuIG1lbWNweV9t Y3NhZmUoZHN0LCAodm9pZCBfX2ZvcmNlICopIHNyYywgbik7CistCW1lbWNweShkc3QsICh2b2lk IF9fZm9yY2UgKikgc3JjLCBuKTsKKy0JcmV0dXJuIDA7CistfQorLQorQUtBLS8qKgorQUtBICog YXJjaF93bWJfcG1lbSAtIHN5bmNocm9uaXplIHdyaXRlcyB0byBwZXJzaXN0ZW50IG1lbW9yeQor QUtBICoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbnZkaW1tL3BtZW0uYyBiL2RyaXZlcnMvbnZkaW1t L3BtZW0uYwppbmRleCBjYTU3MjFjMzA2YmIuLmNjMzFjNmYxZjg4ZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9udmRpbW0vcG1lbS5jCistKy0rLSBiL2RyaXZlcnMvbnZkaW1tL3BtZW0uYwpAQCAtOTks NyArLTk5LDcgQEAgc3RhdGljIGludCBwbWVtX2RvX2J2ZWMoc3RydWN0IHBtZW1fZGV2aWNlICpw bWVtLCBzdHJ1Y3QgcGFnZSAqcGFnZSwKK0FLQQkJaWYgKHVubGlrZWx5KGJhZF9wbWVtKSkKK0FL QQkJCXJjID0gLUVJTzsKK0FLQQkJZWxzZSB7Ci0JCQltZW1jcHlfZnJvbV9wbWVtKG1lbSArLSBv ZmYsIHBtZW1fYWRkciwgbGVuKTsKKy0JCQlyYyA9IG1lbWNweV9mcm9tX3BtZW0obWVtICstIG9m ZiwgcG1lbV9hZGRyLCBsZW4pOworQUtBCQkJZmx1c2hfZGNhY2hlX3BhZ2UocGFnZSk7CitBS0EJ CX0KK0FLQQl9IGVsc2UgewpAQCAtMjk1LDcgKy0yOTUsNyBAQCBzdGF0aWMgaW50IHBtZW1fcndf Ynl0ZXMoc3RydWN0IG5kX25hbWVzcGFjZV9jb21tb24gKm5kbnMsCitBS0EKK0FLQQkJaWYgKHVu bGlrZWx5KGlzX2JhZF9wbWVtKCZwbWVtLT5iYiwgb2Zmc2V0IC8gNTEyLCBzel9hbGlnbikpKQor QUtBCQkJcmV0dXJuIC1FSU87Ci0JCW1lbWNweV9mcm9tX3BtZW0oYnVmLCBwbWVtLT52aXJ0X2Fk ZHIgKy0gb2Zmc2V0LCBzaXplKTsKKy0JCXJldHVybiBtZW1jcHlfZnJvbV9wbWVtKGJ1ZiwgcG1l bS0+dmlydF9hZGRyICstIG9mZnNldCwgc2l6ZSk7CitBS0EJfSBlbHNlIHsKK0FLQQkJbWVtY3B5 X3RvX3BtZW0ocG1lbS0+dmlydF9hZGRyICstIG9mZnNldCwgYnVmLCBzaXplKTsKK0FLQQkJd21i X3BtZW0oKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcG1lbS5oIGIvaW5jbHVkZS9saW51 eC9wbWVtLmgKaW5kZXggM2VjNTMwOWUyOWYzLi5hYzZkODcyY2UwNjcgMTAwNjQ0Ci0tLSBhL2lu Y2x1ZGUvbGludXgvcG1lbS5oCistKy0rLSBiL2luY2x1ZGUvbGludXgvcG1lbS5oCkBAIC00Miw2 ICstNDIsMTMgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfbWVtY3B5X3RvX3BtZW0odm9pZCBf X3BtZW0gKmRzdCwgY29uc3Qgdm9pZCAqc3JjLAorQUtBCUJVRygpOworQUtBfQorQUtBCistc3Rh dGljIGlubGluZSBpbnQgYXJjaF9tZW1jcHlfZnJvbV9wbWVtKHZvaWQgKmRzdCwgY29uc3Qgdm9p ZCBfX3BtZW0gKnNyYywKKy0JCXNpemVfdCBuKQorLXsKKy0JQlVHKCk7CistCXJldHVybiAtRUZB VUxUOworLX0KKy0KK0FLQS1zdGF0aWMgaW5saW5lIHNpemVfdCBhcmNoX2NvcHlfZnJvbV9pdGVy X3BtZW0odm9pZCBfX3BtZW0gKmFkZHIsIHNpemVfdCBieXRlcywKK0FLQQkJc3RydWN0IGlvdl9p dGVyICppKQorQUtBewpAQCAtNjYsMTQgKy03MywxNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJj aF9pbnZhbGlkYXRlX3BtZW0odm9pZCBfX3BtZW0gKmFkZHIsIHNpemVfdCBzaXplKQorQUtBI2Vu ZGlmCitBS0EKK0FLQS0vKgotICogQXJjaGl0ZWN0dXJlcyB0aGF0IGRlZmluZSBBUkNIX0hBU19Q TUVNX0FQSSBtdXN0IHByb3ZpZGUKLSAqIGltcGxlbWVudGF0aW9ucyBmb3IgYXJjaF9tZW1jcHlf dG9fcG1lbSgpLCBhcmNoX3dtYl9wbWVtKCksCi0gKiBhcmNoX2NvcHlfZnJvbV9pdGVyX3BtZW0o KSwgYXJjaF9jbGVhcl9wbWVtKCksIGFyY2hfd2JfY2FjaGVfcG1lbSgpCi0gKiBhbmQgYXJjaF9o YXNfd21iX3BtZW0oKS4KKy0gKiBtZW1jcHlfZnJvbV9wbWVtIC0gcmVhZCBmcm9tIHBlcnNpc3Rl bnQgbWVtb3J5IHdpdGggZXJyb3IgaGFuZGxpbmcKKy0gKiBAZHN0OiBkZXN0aW5hdGlvbiBidWZm ZXIKKy0gKiBAc3JjOiBzb3VyY2UgYnVmZmVyCistICogQHNpemU6IHRyYW5zZmVyIGxlbmd0aAor LSAqCistICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWls dXJlLgorQUtBICovCi1zdGF0aWMgaW5saW5lIHZvaWQgbWVtY3B5X2Zyb21fcG1lbSh2b2lkICpk c3QsIHZvaWQgX19wbWVtIGNvbnN0ICpzcmMsIHNpemVfdCBzaXplKQorLXN0YXRpYyBpbmxpbmUg aW50IG1lbWNweV9mcm9tX3BtZW0odm9pZCAqZHN0LCB2b2lkIF9fcG1lbSBjb25zdCAqc3JjLAor LQkJc2l6ZV90IHNpemUpCitBS0F7Ci0JbWVtY3B5KGRzdCwgKHZvaWQgX19mb3JjZSBjb25zdCAq KSBzcmMsIHNpemUpOworLQlyZXR1cm4gYXJjaF9tZW1jcHlfZnJvbV9wbWVtKGRzdCwgc3JjLCBz aXplKTsKK0FLQX0KK0FLQQorQUtBLXN0YXRpYyBpbmxpbmUgYm9vbCBhcmNoX2hhc19wbWVtX2Fw aSh2b2lkKQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpM aW51eC1udmRpbW0gbWFpbGluZyBsaXN0CkxpbnV4LW52ZGltbUBsaXN0cy4wMS5vcmcKaHR0cHM6 Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1udmRpbW0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753732AbcC3V3a (ORCPT ); Wed, 30 Mar 2016 17:29:30 -0400 Received: from mga09.intel.com ([134.134.136.24]:32734 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751156AbcC3V33 convert rfc822-to-8bit (ORCPT ); Wed, 30 Mar 2016 17:29:29 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,418,1455004800"; d="scan'208";a="774953121" From: "Williams, Dan J" To: "torvalds@linux-foundation.org" , "mingo@kernel.org" , "akpm@linux-foundation.org" CC: "linux-kernel@vger.kernel.org" , "linux-nvdimm@lists.01.org" , "Luck, Tony" Subject: [GIT PULL v2] libnvdimm, pmem: hook up memcpy_mcsafe Thread-Topic: [GIT PULL v2] libnvdimm, pmem: hook up memcpy_mcsafe Thread-Index: AQHRiss8rZRwvwTbYkmLYOwVHJ+2PA== Date: Wed, 30 Mar 2016 21:29:26 +0000 Message-ID: <1459373365.14360.5.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.7.201.156] Content-Type: text/plain; charset="utf-7" Content-ID: <940231BEC7151D4AAC773E617639D2C8@intel.com> Content-Transfer-Encoding: 8BIT MIME-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Linus, please pull from: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-next Now that mcsafe+AF8-memcpy() has landed, and the return value was been clarified in commit cbf8b5a2b649 +ACI-x86/mm, x86/mce: Fix return type/value for memcpy+AF8-mcsafe()+ACI-, let's hook up its primary usage in the pmem driver. The compilation problems from the initial posting have been fixed, this has appeared in a -next release with no reported issues, and it picked up an ack from Ingo. +AKA-There is no pressing need to merge this in 4.6- rc2. +AKA-However, if we wait until 4.7 the new memcpy+AF8-mcsafe() capability will ship without a user in 4.6-final. --- The following changes since commit f55532a0c0b8bb6148f4e07853b876ef73bc69ca: +AKA- Linux 4.6-rc1 (2016-03-26 16:03:24 -0700) are available in the git repository at: +AKA- git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm libnvdimm-for-next for you to fetch changes up to fc0c2028135c7f75fce36b90e44efb8003a9173b: +AKA- x86, pmem: use memcpy+AF8-mcsafe() for memcpy+AF8-from+AF8-pmem() (2016-03-28 17:19:31 -0700) ---------------------------------------------------------------- Dan Williams (1): +AKAAoACgAKAAoACg-x86, pmem: use memcpy+AF8-mcsafe() for memcpy+AF8-from+AF8-pmem() commit fc0c2028135c7f75fce36b90e44efb8003a9173b Author: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- Date:+AKAAoACg-Tue Mar 8 10:30:19 2016 -0800 +AKAAoACgAKA-x86, pmem: use memcpy+AF8-mcsafe() for memcpy+AF8-from+AF8-pmem() +AKAAoACgAKA- +AKAAoACgAKA-Update the definition of memcpy+AF8-from+AF8-pmem() to return 0 or a negative +AKAAoACgAKA-error code.+AKAAoA-Implement x86/arch+AF8-memcpy+AF8-from+AF8-pmem() with memcpy+AF8-mcsafe(). +AKAAoACgAKA- +AKAAoACgAKA-Cc: Borislav Petkov +ADw-bp+AEA-alien8.de+AD4- +AKAAoACgAKA-Cc: Tony Luck +ADw-tony.luck+AEA-intel.com+AD4- +AKAAoACgAKA-Cc: Thomas Gleixner +ADw-tglx+AEA-linutronix.de+AD4- +AKAAoACgAKA-Cc: Andy Lutomirski +ADw-luto+AEA-amacapital.net+AD4- +AKAAoACgAKA-Cc: Peter Zijlstra +ADw-peterz+AEA-infradead.org+AD4- +AKAAoACgAKA-Cc: Andrew Morton +ADw-akpm+AEA-linux-foundation.org+AD4- +AKAAoACgAKA-Cc: Linus Torvalds +ADw-torvalds+AEA-linux-foundation.org+AD4- +AKAAoACgAKA-Acked-by: Ingo Molnar +ADw-mingo+AEA-kernel.org+AD4- +AKAAoACgAKA-Reviewed-by: Ross Zwisler +ADw-ross.zwisler+AEA-linux.intel.com+AD4- +AKAAoACgAKA-Signed-off-by: Dan Williams +ADw-dan.j.williams+AEA-intel.com+AD4- --- +AKA-arch/x86/include/asm/pmem.h +AHwAoACg-9 +-+-+-+-+-+-+-+-+- +AKA-drivers/nvdimm/pmem.c+AKAAoACgAKAAoACgAKAAfACgAKA-4 +-+--- +AKA-include/linux/pmem.h+AKAAoACgAKAAoACgAKAAoAB8- 22 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+------- +AKA-3 files changed, 27 insertions(+-), 8 deletions(-) diff --git a/arch/x86/include/asm/pmem.h b/arch/x86/include/asm/pmem.h index bf8b35d2035a..fbc5e92e1ecc 100644 --- a/arch/x86/include/asm/pmem.h +-+-+- b/arch/x86/include/asm/pmem.h +AEAAQA- -47,6 +-47,15 +AEAAQA- static inline void arch+AF8-memcpy+AF8-to+AF8-pmem(void +AF8AXw-pmem +ACo-dst, const void +ACo-src, +AKA- BUG()+ADs- +AKAAfQ- +AKA- +-static inline int arch+AF8-memcpy+AF8-from+AF8-pmem(void +ACo-dst, const void +AF8AXw-pmem +ACo-src, +- size+AF8-t n) +-+AHs- +- if (static+AF8-cpu+AF8-has(X86+AF8-FEATURE+AF8-MCE+AF8-RECOVERY)) +- return memcpy+AF8-mcsafe(dst, (void +AF8AXw-force +ACo-) src, n)+ADs- +- memcpy(dst, (void +AF8AXw-force +ACo-) src, n)+ADs- +- return 0+ADs- +-+AH0- +- +AKA-/+ACoAKg- +AKA- +ACo- arch+AF8-wmb+AF8-pmem - synchronize writes to persistent memory +AKA- +ACo- diff --git a/drivers/nvdimm/pmem.c b/drivers/nvdimm/pmem.c index ca5721c306bb..cc31c6f1f88e 100644 --- a/drivers/nvdimm/pmem.c +-+-+- b/drivers/nvdimm/pmem.c +AEAAQA- -99,7 +-99,7 +AEAAQA- static int pmem+AF8-do+AF8-bvec(struct pmem+AF8-device +ACo-pmem, struct page +ACo-page, +AKA- if (unlikely(bad+AF8-pmem)) +AKA- rc +AD0- -EIO+ADs- +AKA- else +AHs- - memcpy+AF8-from+AF8-pmem(mem +- off, pmem+AF8-addr, len)+ADs- +- rc +AD0- memcpy+AF8-from+AF8-pmem(mem +- off, pmem+AF8-addr, len)+ADs- +AKA- flush+AF8-dcache+AF8-page(page)+ADs- +AKA- +AH0- +AKA- +AH0- else +AHs- +AEAAQA- -295,7 +-295,7 +AEAAQA- static int pmem+AF8-rw+AF8-bytes(struct nd+AF8-namespace+AF8-common +ACo-ndns, +AKA- +AKA- if (unlikely(is+AF8-bad+AF8-pmem(+ACY-pmem-+AD4-bb, offset / 512, sz+AF8-align))) +AKA- return -EIO+ADs- - memcpy+AF8-from+AF8-pmem(buf, pmem-+AD4-virt+AF8-addr +- offset, size)+ADs- +- return memcpy+AF8-from+AF8-pmem(buf, pmem-+AD4-virt+AF8-addr +- offset, size)+ADs- +AKA- +AH0- else +AHs- +AKA- memcpy+AF8-to+AF8-pmem(pmem-+AD4-virt+AF8-addr +- offset, buf, size)+ADs- +AKA- wmb+AF8-pmem()+ADs- diff --git a/include/linux/pmem.h b/include/linux/pmem.h index 3ec5309e29f3..ac6d872ce067 100644 --- a/include/linux/pmem.h +-+-+- b/include/linux/pmem.h +AEAAQA- -42,6 +-42,13 +AEAAQA- static inline void arch+AF8-memcpy+AF8-to+AF8-pmem(void +AF8AXw-pmem +ACo-dst, const void +ACo-src, +AKA- BUG()+ADs- +AKAAfQ- +AKA- +-static inline int arch+AF8-memcpy+AF8-from+AF8-pmem(void +ACo-dst, const void +AF8AXw-pmem +ACo-src, +- size+AF8-t n) +-+AHs- +- BUG()+ADs- +- return -EFAULT+ADs- +-+AH0- +- +AKA-static inline size+AF8-t arch+AF8-copy+AF8-from+AF8-iter+AF8-pmem(void +AF8AXw-pmem +ACo-addr, size+AF8-t bytes, +AKA- struct iov+AF8-iter +ACo-i) +AKAAew- +AEAAQA- -66,14 +-73,17 +AEAAQA- static inline void arch+AF8-invalidate+AF8-pmem(void +AF8AXw-pmem +ACo-addr, size+AF8-t size) +AKAAIw-endif +AKA- +AKA-/+ACo- - +ACo- Architectures that define ARCH+AF8-HAS+AF8-PMEM+AF8-API must provide - +ACo- implementations for arch+AF8-memcpy+AF8-to+AF8-pmem(), arch+AF8-wmb+AF8-pmem(), - +ACo- arch+AF8-copy+AF8-from+AF8-iter+AF8-pmem(), arch+AF8-clear+AF8-pmem(), arch+AF8-wb+AF8-cache+AF8-pmem() - +ACo- and arch+AF8-has+AF8-wmb+AF8-pmem(). +- +ACo- memcpy+AF8-from+AF8-pmem - read from persistent memory with error handling +- +ACo- +AEA-dst: destination buffer +- +ACo- +AEA-src: source buffer +- +ACo- +AEA-size: transfer length +- +ACo- +- +ACo- Returns 0 on success negative error code on failure. +AKA- +ACo-/ -static inline void memcpy+AF8-from+AF8-pmem(void +ACo-dst, void +AF8AXw-pmem const +ACo-src, size+AF8-t size) +-static inline int memcpy+AF8-from+AF8-pmem(void +ACo-dst, void +AF8AXw-pmem const +ACo-src, +- size+AF8-t size) +AKAAew- - memcpy(dst, (void +AF8AXw-force const +ACo-) src, size)+ADs- +- return arch+AF8-memcpy+AF8-from+AF8-pmem(dst, src, size)+ADs- +AKAAfQ- +AKA- +AKA-static inline bool arch+AF8-has+AF8-pmem+AF8-api(void)