From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by ml01.01.org (Postfix) with ESMTP id 0AA7F1A1F04 for ; Fri, 25 Mar 2016 11:23:42 -0700 (PDT) From: "Williams, Dan J" Subject: [GIT PULL] libnvdimm, pmem: hook up memcpy_mcsafe Date: Fri, 25 Mar 2016 18:22:59 +0000 Message-ID: <1458930183.24753.8.camel@intel.com> Content-Language: en-US Content-ID: <9B9088C4747E944588DFF1E155B8A628@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 IHdhcyBiZWVuCmNsYXJpZmllZCBpbiBjb21taXQrQUtBLWNiZjhiNWEyYjY0OSAieDg2L21tLCB4 ODYvbWNlOiBGaXggcmV0dXJuCnR5cGUvdmFsdWUgZm9yIG1lbWNweV9tY3NhZmUoKSIsIGxldCdz IGhvb2sgdXAgaXRzIHByaW1hcnkgdXNhZ2UgaW4gdGhlCnBtZW0gZHJpdmVyLgoKLS0tCgpUaGUg Zm9sbG93aW5nIGNoYW5nZXMgc2luY2UgY29tbWl0IGQ4OGY0OGUxMjgyMWFiNGIyMjQ0MTI0ZDUw YWMwOTQ1NjhmNDhkYjU6CgorQUtBIE1lcmdlIGJyYW5jaCAneDg2LXVyZ2VudC1mb3ItbGludXMn IG9mIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC90aXAvdGlw ICgyMDE2LTAzLTI0IDA5OjQ3OjMyIC0wNzAwKQoKYXJlIGF2YWlsYWJsZSBpbiB0aGUgZ2l0IHJl cG9zaXRvcnkgYXQ6CgorQUtBIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2Vy bmVsL2dpdC9udmRpbW0vbnZkaW1tIGxpYm52ZGltbS1mb3ItbmV4dAoKZm9yIHlvdSB0byBmZXRj aCBjaGFuZ2VzIHVwIHRvIGEyYjA1NmVhMjkxZDMyMWE4YWRkYjM0YmYzMGE2NTZiOTljZjcwYjE6 CgorQUtBIHg4NiwgcG1lbTogdXNlIG1lbWNweV9tY3NhZmUoKSBmb3IgbWVtY3B5X2Zyb21fcG1l bSgpICgyMDE2LTAzLTI1IDA5OjE2OjU2IC0wNzAwKQoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY29tbWl0IGEyYjA1NmVh MjkxZDMyMWE4YWRkYjM0YmYzMGE2NTZiOTljZjcwYjEKQXV0aG9yOiBEYW4gV2lsbGlhbXMgPGRh bi5qLndpbGxpYW1zQGludGVsLmNvbT4KRGF0ZTorQUtBQW9BQ2ctVHVlIE1hciA4IDEwOjMwOjE5 IDIwMTYgLTA4MDAKCitBS0FBb0FDZ0FLQS14ODYsIHBtZW06IHVzZSBtZW1jcHlfbWNzYWZlKCkg Zm9yIG1lbWNweV9mcm9tX3BtZW0oKQorQUtBQW9BQ2dBS0EKK0FLQUFvQUNnQUtBLVVwZGF0ZSB0 aGUgZGVmaW5pdGlvbiBvZiBtZW1jcHlfZnJvbV9wbWVtKCkgdG8gcmV0dXJuIDAgb3IgYSBuZWdh dGl2ZQorQUtBQW9BQ2dBS0EtZXJyb3IgY29kZS4rQUtBQW9BLUltcGxlbWVudCB4ODYvYXJjaF9t ZW1jcHlfZnJvbV9wbWVtKCkgd2l0aCBtZW1jcHlfbWNzYWZlKCkuCitBS0FBb0FDZ0FLQQorQUtB QW9BQ2dBS0EtQ2M6IEJvcmlzbGF2IFBldGtvdiA8YnBAYWxpZW44LmRlPgorQUtBQW9BQ2dBS0Et Q2M6IEluZ28gTW9sbmFyIDxtaW5nb0BrZXJuZWwub3JnPgorQUtBQW9BQ2dBS0EtQ2M6IFRvbnkg THVjayA8dG9ueS5sdWNrQGludGVsLmNvbT4KK0FLQUFvQUNnQUtBLUNjOiBUaG9tYXMgR2xlaXhu ZXIgPHRnbHhAbGludXRyb25peC5kZT4KK0FLQUFvQUNnQUtBLUNjOiBBbmR5IEx1dG9taXJza2kg PGx1dG9AYW1hY2FwaXRhbC5uZXQ+CitBS0FBb0FDZ0FLQS1DYzogUGV0ZXIgWmlqbHN0cmEgPHBl dGVyekBpbmZyYWRlYWQub3JnPgorQUtBQW9BQ2dBS0EtQ2M6IEFuZHJldyBNb3J0b24gPGFrcG1A bGludXgtZm91bmRhdGlvbi5vcmc+CitBS0FBb0FDZ0FLQS1DYzogTGludXMgVG9ydmFsZHMgPHRv cnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgorQUtBQW9BQ2dBS0EtUmV2aWV3ZWQtYnk6IFJv c3MgWndpc2xlciA8cm9zcy56d2lzbGVyQGxpbnV4LmludGVsLmNvbT4KK0FLQUFvQUNnQUtBLVNp Z25lZC1vZmYtYnk6IERhbiBXaWxsaWFtcyA8ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tPgotLS0K K0FLQS1hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wbWVtLmggfCtBS0FBb0EtOSArLSstKy0rLSstKy0r LSstKy0KK0FLQS1kcml2ZXJzL252ZGltbS9wbWVtLmMrQUtBQW9BQ2dBS0FBb0FDZ0FLQXwrQUtB QW9BLTQgKy0rLS0tCitBS0EtaW5jbHVkZS9saW51eC9wbWVtLmgrQUtBQW9BQ2dBS0FBb0FDZ0FL QUFvQXwgMTUgKy0rLSstKy0rLSstKy0rLSstLS0tLS0tCitBS0EtMyBmaWxlcyBjaGFuZ2VkLCAy MCBpbnNlcnRpb25zKCstKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9hcmNoL3g4Ni9p bmNsdWRlL2FzbS9wbWVtLmggYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wbWVtLmgKaW5kZXggYmY4 YjM1ZDIwMzVhLi5mYmM1ZTkyZTFlY2MgMTAwNjQ0Ci0tLSBhL2FyY2gveDg2L2luY2x1ZGUvYXNt L3BtZW0uaAorLSstKy0gYi9hcmNoL3g4Ni9pbmNsdWRlL2FzbS9wbWVtLmgKQEAgLTQ3LDYgKy00 NywxNSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9tZW1jcHlfdG9fcG1lbSh2b2lkIF9fcG1l bSAqZHN0LCBjb25zdCB2b2lkICpzcmMsCitBS0EJCUJVRygpOworQUtBfQorQUtBCistc3RhdGlj IGlubGluZSBpbnQgYXJjaF9tZW1jcHlfZnJvbV9wbWVtKHZvaWQgKmRzdCwgY29uc3Qgdm9pZCBf X3BtZW0gKnNyYywKKy0JCXNpemVfdCBuKQorLXsKKy0JaWYgKHN0YXRpY19jcHVfaGFzKFg4Nl9G RUFUVVJFX01DRV9SRUNPVkVSWSkpCistCQlyZXR1cm4gbWVtY3B5X21jc2FmZShkc3QsICh2b2lk IF9fZm9yY2UgKikgc3JjLCBuKTsKKy0JbWVtY3B5KGRzdCwgKHZvaWQgX19mb3JjZSAqKSBzcmMs IG4pOworLQlyZXR1cm4gMDsKKy19CistCitBS0EtLyoqCitBS0EgKiBhcmNoX3dtYl9wbWVtIC0g c3luY2hyb25pemUgd3JpdGVzIHRvIHBlcnNpc3RlbnQgbWVtb3J5CitBS0EgKgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9udmRpbW0vcG1lbS5jIGIvZHJpdmVycy9udmRpbW0vcG1lbS5jCmluZGV4IGNh NTcyMWMzMDZiYi4uY2MzMWM2ZjFmODhlIDEwMDY0NAotLS0gYS9kcml2ZXJzL252ZGltbS9wbWVt LmMKKy0rLSstIGIvZHJpdmVycy9udmRpbW0vcG1lbS5jCkBAIC05OSw3ICstOTksNyBAQCBzdGF0 aWMgaW50IHBtZW1fZG9fYnZlYyhzdHJ1Y3QgcG1lbV9kZXZpY2UgKnBtZW0sIHN0cnVjdCBwYWdl ICpwYWdlLAorQUtBCQlpZiAodW5saWtlbHkoYmFkX3BtZW0pKQorQUtBCQkJcmMgPSAtRUlPOwor QUtBCQllbHNlIHsKLQkJCW1lbWNweV9mcm9tX3BtZW0obWVtICstIG9mZiwgcG1lbV9hZGRyLCBs ZW4pOworLQkJCXJjID0gbWVtY3B5X2Zyb21fcG1lbShtZW0gKy0gb2ZmLCBwbWVtX2FkZHIsIGxl bik7CitBS0EJCQlmbHVzaF9kY2FjaGVfcGFnZShwYWdlKTsKK0FLQQkJfQorQUtBCX0gZWxzZSB7 CkBAIC0yOTUsNyArLTI5NSw3IEBAIHN0YXRpYyBpbnQgcG1lbV9yd19ieXRlcyhzdHJ1Y3QgbmRf bmFtZXNwYWNlX2NvbW1vbiAqbmRucywKK0FLQQorQUtBCQlpZiAodW5saWtlbHkoaXNfYmFkX3Bt ZW0oJnBtZW0tPmJiLCBvZmZzZXQgLyA1MTIsIHN6X2FsaWduKSkpCitBS0EJCQlyZXR1cm4gLUVJ TzsKLQkJbWVtY3B5X2Zyb21fcG1lbShidWYsIHBtZW0tPnZpcnRfYWRkciArLSBvZmZzZXQsIHNp emUpOworLQkJcmV0dXJuIG1lbWNweV9mcm9tX3BtZW0oYnVmLCBwbWVtLT52aXJ0X2FkZHIgKy0g b2Zmc2V0LCBzaXplKTsKK0FLQQl9IGVsc2UgeworQUtBCQltZW1jcHlfdG9fcG1lbShwbWVtLT52 aXJ0X2FkZHIgKy0gb2Zmc2V0LCBidWYsIHNpemUpOworQUtBCQl3bWJfcG1lbSgpOwpkaWZmIC0t Z2l0IGEvaW5jbHVkZS9saW51eC9wbWVtLmggYi9pbmNsdWRlL2xpbnV4L3BtZW0uaAppbmRleCAz ZWM1MzA5ZTI5ZjMuLmNkYjAyNDM4NmYzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9wbWVt LmgKKy0rLSstIGIvaW5jbHVkZS9saW51eC9wbWVtLmgKQEAgLTY2LDE0ICstNjYsMTcgQEAgc3Rh dGljIGlubGluZSB2b2lkIGFyY2hfaW52YWxpZGF0ZV9wbWVtKHZvaWQgX19wbWVtICphZGRyLCBz aXplX3Qgc2l6ZSkKK0FLQSNlbmRpZgorQUtBCitBS0EtLyoKLSAqIEFyY2hpdGVjdHVyZXMgdGhh dCBkZWZpbmUgQVJDSF9IQVNfUE1FTV9BUEkgbXVzdCBwcm92aWRlCi0gKiBpbXBsZW1lbnRhdGlv bnMgZm9yIGFyY2hfbWVtY3B5X3RvX3BtZW0oKSwgYXJjaF93bWJfcG1lbSgpLAotICogYXJjaF9j b3B5X2Zyb21faXRlcl9wbWVtKCksIGFyY2hfY2xlYXJfcG1lbSgpLCBhcmNoX3diX2NhY2hlX3Bt ZW0oKQotICogYW5kIGFyY2hfaGFzX3dtYl9wbWVtKCkuCistICogbWVtY3B5X2Zyb21fcG1lbSAt IHJlYWQgZnJvbSBwZXJzaXN0ZW50IG1lbW9yeSB3aXRoIGVycm9yIGhhbmRsaW5nCistICogQGRz dDogZGVzdGluYXRpb24gYnVmZmVyCistICogQHNyYzogc291cmNlIGJ1ZmZlcgorLSAqIEBzaXpl OiB0cmFuc2ZlciBsZW5ndGgKKy0gKgorLSAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG5lZ2F0aXZl IGVycm9yIGNvZGUgb24gZmFpbHVyZS4KK0FLQSAqLwotc3RhdGljIGlubGluZSB2b2lkIG1lbWNw eV9mcm9tX3BtZW0odm9pZCAqZHN0LCB2b2lkIF9fcG1lbSBjb25zdCAqc3JjLCBzaXplX3Qgc2l6 ZSkKKy1zdGF0aWMgaW5saW5lIGludCBtZW1jcHlfZnJvbV9wbWVtKHZvaWQgKmRzdCwgdm9pZCBf X3BtZW0gY29uc3QgKnNyYywKKy0JCXNpemVfdCBzaXplKQorQUtBewotCW1lbWNweShkc3QsICh2 b2lkIF9fZm9yY2UgY29uc3QgKikgc3JjLCBzaXplKTsKKy0JcmV0dXJuIGFyY2hfbWVtY3B5X2Zy b21fcG1lbShkc3QsIHNyYywgc2l6ZSk7CitBS0F9CitBS0EKK0FLQS1zdGF0aWMgaW5saW5lIGJv b2wgYXJjaF9oYXNfcG1lbV9hcGkodm9pZCkKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KTGludXgtbnZkaW1tIG1haWxpbmcgbGlzdApMaW51eC1udmRpbW1A bGlzdHMuMDEub3JnCmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgt bnZkaW1tCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753956AbcCYSXE (ORCPT ); Fri, 25 Mar 2016 14:23:04 -0400 Received: from mga09.intel.com ([134.134.136.24]:59938 "EHLO mga09.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752190AbcCYSXC convert rfc822-to-8bit (ORCPT ); Fri, 25 Mar 2016 14:23:02 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.24,392,1455004800"; d="scan'208";a="771521037" 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] libnvdimm, pmem: hook up memcpy_mcsafe Thread-Topic: [GIT PULL] libnvdimm, pmem: hook up memcpy_mcsafe Thread-Index: AQHRhsNcgCN45Jy/pUK6sk+kWBD08g== Date: Fri, 25 Mar 2016 18:22:59 +0000 Message-ID: <1458930183.24753.8.camel@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.254.188.82] Content-Type: text/plain; charset="utf-7" Content-ID: <9B9088C4747E944588DFF1E155B8A628@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+AKA-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 following changes since commit d88f48e12821ab4b2244124d50ac094568f48db5: +AKA- Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip (2016-03-24 09:47:32 -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 a2b056ea291d321a8addb34bf30a656b99cf70b1: +AKA- x86, pmem: use memcpy+AF8-mcsafe() for memcpy+AF8-from+AF8-pmem() (2016-03-25 09:16:56 -0700) ---------------------------------------------------------------- commit a2b056ea291d321a8addb34bf30a656b99cf70b1 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: Ingo Molnar +ADw-mingo+AEA-kernel.org+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-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- 15 +-+-+-+-+-+-+-+-+------- +AKA-3 files changed, 20 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..cdb024386f3a 100644 --- a/include/linux/pmem.h +-+-+- b/include/linux/pmem.h +AEAAQA- -66,14 +-66,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)