From: Oliver O'Halloran <oohall@gmail.com> To: linuxppc-dev@lists.ozlabs.org Cc: linux-nvdimm@lists.01.org Subject: [RFC 3/4] powerpc: Add pmem API support Date: Tue, 27 Jun 2017 20:28:50 +1000 [thread overview] Message-ID: <20170627102851.15484-3-oohall@gmail.com> (raw) In-Reply-To: <20170627102851.15484-1-oohall@gmail.com> Adds powerpc64 implementations of: memcpy_flushcache() arch_wb_cache_pmem() arch_invalidate_pmem() Which form the architecture-specific portition of the persistent memory API. These functions provide cache-management primitives for the DAX drivers and libNVDIMM. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> --- This should go on to of the ZONE_DEVICE patches. If you want a full tree there's one here that's based on next-20170626 with Dan's libnvdimm-pending branch merged in: https://github.com/oohal/linux/tree/ppc-nvdimm-4.13 --- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/pmem.h | 42 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 arch/powerpc/include/asm/pmem.h diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 4526c9ba09b6..f551f3a26130 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -127,6 +127,7 @@ config PPC select ARCH_HAS_ELF_RANDOMIZE select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL + select ARCH_HAS_PMEM_API if PPC64 select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE select ARCH_HAS_SG_CHAIN select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST diff --git a/arch/powerpc/include/asm/pmem.h b/arch/powerpc/include/asm/pmem.h new file mode 100644 index 000000000000..7b0282e420fc --- /dev/null +++ b/arch/powerpc/include/asm/pmem.h @@ -0,0 +1,42 @@ +/* + * Copyright(c) 2017 IBM Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ +#ifndef __ASM_PMEM_H__ +#define __ASM_PMEM_H__ + +#include <linux/string.h> +#include <asm/cacheflush.h> + +#ifdef CONFIG_ARCH_HAS_PMEM_API +static inline void arch_wb_cache_pmem(void *addr, size_t size) +{ + unsigned long start = (unsigned long) addr; + flush_inval_dcache_range(start, start + size); +} + +static inline void arch_invalidate_pmem(void *addr, size_t size) +{ + unsigned long start = (unsigned long) addr; + flush_inval_dcache_range(start, start + size); +} + +static inline void *memcpy_flushcache(void *dest, const void *src, size_t size) +{ + unsigned long start = (unsigned long) dest; + + memcpy(dest, src, size); + flush_inval_dcache_range(start, start + size); + + return dest; +} +#endif /* CONFIG_ARCH_HAS_PMEM_API */ +#endif /* __ASM_PMEM_H__ */ -- 2.9.4 _______________________________________________ Linux-nvdimm mailing list Linux-nvdimm@lists.01.org https://lists.01.org/mailman/listinfo/linux-nvdimm
WARNING: multiple messages have this Message-ID (diff)
From: Oliver O'Halloran <oohall@gmail.com> To: linuxppc-dev@lists.ozlabs.org Cc: linux-nvdimm@lists.01.org, Oliver O'Halloran <oohall@gmail.com> Subject: [RFC 3/4] powerpc: Add pmem API support Date: Tue, 27 Jun 2017 20:28:50 +1000 [thread overview] Message-ID: <20170627102851.15484-3-oohall@gmail.com> (raw) In-Reply-To: <20170627102851.15484-1-oohall@gmail.com> Adds powerpc64 implementations of: memcpy_flushcache() arch_wb_cache_pmem() arch_invalidate_pmem() Which form the architecture-specific portition of the persistent memory API. These functions provide cache-management primitives for the DAX drivers and libNVDIMM. Signed-off-by: Oliver O'Halloran <oohall@gmail.com> --- This should go on to of the ZONE_DEVICE patches. If you want a full tree there's one here that's based on next-20170626 with Dan's libnvdimm-pending branch merged in: https://github.com/oohal/linux/tree/ppc-nvdimm-4.13 --- arch/powerpc/Kconfig | 1 + arch/powerpc/include/asm/pmem.h | 42 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) create mode 100644 arch/powerpc/include/asm/pmem.h diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index 4526c9ba09b6..f551f3a26130 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig @@ -127,6 +127,7 @@ config PPC select ARCH_HAS_ELF_RANDOMIZE select ARCH_HAS_FORTIFY_SOURCE select ARCH_HAS_GCOV_PROFILE_ALL + select ARCH_HAS_PMEM_API if PPC64 select ARCH_HAS_SCALED_CPUTIME if VIRT_CPU_ACCOUNTING_NATIVE select ARCH_HAS_SG_CHAIN select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST diff --git a/arch/powerpc/include/asm/pmem.h b/arch/powerpc/include/asm/pmem.h new file mode 100644 index 000000000000..7b0282e420fc --- /dev/null +++ b/arch/powerpc/include/asm/pmem.h @@ -0,0 +1,42 @@ +/* + * Copyright(c) 2017 IBM Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of version 2 of the GNU General Public License as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + */ +#ifndef __ASM_PMEM_H__ +#define __ASM_PMEM_H__ + +#include <linux/string.h> +#include <asm/cacheflush.h> + +#ifdef CONFIG_ARCH_HAS_PMEM_API +static inline void arch_wb_cache_pmem(void *addr, size_t size) +{ + unsigned long start = (unsigned long) addr; + flush_inval_dcache_range(start, start + size); +} + +static inline void arch_invalidate_pmem(void *addr, size_t size) +{ + unsigned long start = (unsigned long) addr; + flush_inval_dcache_range(start, start + size); +} + +static inline void *memcpy_flushcache(void *dest, const void *src, size_t size) +{ + unsigned long start = (unsigned long) dest; + + memcpy(dest, src, size); + flush_inval_dcache_range(start, start + size); + + return dest; +} +#endif /* CONFIG_ARCH_HAS_PMEM_API */ +#endif /* __ASM_PMEM_H__ */ -- 2.9.4
next prev parent reply other threads:[~2017-06-27 10:27 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-06-27 10:28 [RFC 1/4] libnvdimm: add to_{nvdimm,nd_region}_dev() Oliver O'Halloran 2017-06-27 10:28 ` Oliver O'Halloran 2017-06-27 10:28 ` [RFC 2/4] libnvdimm: Add a device-tree interface Oliver O'Halloran 2017-06-27 10:28 ` Oliver O'Halloran 2017-06-27 10:28 ` Oliver O'Halloran 2017-06-27 10:43 ` Mark Rutland 2017-06-27 10:43 ` Mark Rutland 2017-06-27 10:43 ` Mark Rutland 2017-06-27 14:05 ` Oliver 2017-06-27 14:05 ` Oliver 2017-06-27 14:05 ` Oliver 2017-06-27 10:28 ` Oliver O'Halloran [this message] 2017-06-27 10:28 ` [RFC 3/4] powerpc: Add pmem API support Oliver O'Halloran 2017-07-11 0:00 ` Dan Williams 2017-07-11 0:00 ` Dan Williams 2017-06-27 10:28 ` [RFC 4/4] powerpc/powernv: Create platform devs for nvdimm buses Oliver O'Halloran 2017-06-27 10:28 ` Oliver O'Halloran 2017-07-10 23:53 ` [RFC 1/4] libnvdimm: add to_{nvdimm,nd_region}_dev() Dan Williams 2017-07-10 23:53 ` Dan Williams 2017-07-11 4:38 ` Oliver 2017-07-11 4:38 ` Oliver 2017-07-11 7:36 ` Dan Williams 2017-07-11 7:36 ` Dan Williams
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170627102851.15484-3-oohall@gmail.com \ --to=oohall@gmail.com \ --cc=linux-nvdimm@lists.01.org \ --cc=linuxppc-dev@lists.ozlabs.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
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.