linux/arch/mips/include/asm
Dan Williams ba049e93ae kvm: rename pfn_t to kvm_pfn_t
To date, we have implemented two I/O usage models for persistent memory,
PMEM (a persistent "ram disk") and DAX (mmap persistent memory into
userspace).  This series adds a third, DAX-GUP, that allows DAX mappings
to be the target of direct-i/o.  It allows userspace to coordinate
DMA/RDMA from/to persistent memory.

The implementation leverages the ZONE_DEVICE mm-zone that went into
4.3-rc1 (also discussed at kernel summit) to flag pages that are owned
and dynamically mapped by a device driver.  The pmem driver, after
mapping a persistent memory range into the system memmap via
devm_memremap_pages(), arranges for DAX to distinguish pfn-only versus
page-backed pmem-pfns via flags in the new pfn_t type.

The DAX code, upon seeing a PFN_DEV+PFN_MAP flagged pfn, flags the
resulting pte(s) inserted into the process page tables with a new
_PAGE_DEVMAP flag.  Later, when get_user_pages() is walking ptes it keys
off _PAGE_DEVMAP to pin the device hosting the page range active.
Finally, get_page() and put_page() are modified to take references
against the device driver established page mapping.

Finally, this need for "struct page" for persistent memory requires
memory capacity to store the memmap array.  Given the memmap array for a
large pool of persistent may exhaust available DRAM introduce a
mechanism to allocate the memmap from persistent memory.  The new
"struct vmem_altmap *" parameter to devm_memremap_pages() enables
arch_add_memory() to use reserved pmem capacity rather than the page
allocator.

This patch (of 18):

The core has developed a need for a "pfn_t" type [1].  Move the existing
pfn_t in KVM to kvm_pfn_t [2].

[1]: https://lists.01.org/pipermail/linux-nvdimm/2015-September/002199.html
[2]: https://lists.01.org/pipermail/linux-nvdimm/2015-September/002218.html

Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Acked-by: Christoffer Dall <christoffer.dall@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2016-01-15 17:56:32 -08:00
..
dec DEC: Document the R4k MB ASIC mini interrupt controller 2014-06-04 22:50:41 +02:00
emma
fw MIPS: Malta: Remove fw_memblock_t abstraction 2015-11-11 08:35:45 +01:00
ip32
lasat
mach-ar7 MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-ath25 MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-ath79 MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-au1x00 MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-bcm47xx MIPS: BCM47xx: Fetch board info directly in callback function 2015-11-11 08:36:57 +01:00
mach-bcm63xx spi/bcm63xx: move register definitions into the driver 2015-10-23 01:19:58 +09:00
mach-bmips MIPS: BMIPS: Define BMIPS_FIXADDR_TOP in asm/bmips-spaces.h 2015-06-21 21:53:30 +02:00
mach-cavium-octeon MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-cobalt MIPS: Correct `nofpu' non-functionality 2015-04-08 01:09:49 +02:00
mach-db1x00 MIPS: Alchemy: fold mach-db1xxx/db1x00 headers into board code 2014-03-26 23:09:21 +01:00
mach-dec MIPS: DEC: Update CPU overrides 2015-06-21 21:52:44 +02:00
mach-emma2rh MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-generic MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-ip22 MIPS: Correct `nofpu' non-functionality 2015-04-08 01:09:49 +02:00
mach-ip27 MIPS: IP27: Update/restructure CPU overrides 2015-06-21 21:54:13 +02:00
mach-ip28 MIPS: IP28: Fix/clean spaces.h 2014-08-26 02:18:58 +02:00
mach-ip32 Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2015-04-17 15:50:54 -04:00
mach-jazz MIPS: DMA: Implement platform hook to perform post-DMA cache flushes. 2015-04-01 17:22:01 +02:00
mach-jz4740 MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-lantiq MIPS: Lantiq: Add support for xRX220 SoC 2015-11-11 08:37:31 +01:00
mach-lasat MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-loongson32 MIPS: Loongson: Naming style cleanup and rework 2015-06-21 21:53:59 +02:00
mach-loongson64 MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-malta MIPS: Malta: Setup RAM regions via DT 2015-11-11 08:35:47 +01:00
mach-netlogic MIPS: Netlogic: Move cores per node out of multi-node.h 2015-04-01 17:21:50 +02:00
mach-paravirt MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-pistachio MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-pmcs-msp71xx MIPS: asm: Rename GCC_OFF12_ASM to GCC_OFF_SMALL_ASM 2015-02-17 15:37:21 +00:00
mach-pnx833x MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-ralink MIPS: ralink: Unify SoC id handling 2015-11-11 08:37:56 +01:00
mach-rc32434 MIPS: Remove all the uses of custom gpio.h 2015-09-03 12:08:02 +02:00
mach-rm MIPS: Correct `nofpu' non-functionality 2015-04-08 01:09:49 +02:00
mach-sead3 irqchip: mips-gic: Probe for number of external interrupts 2014-11-24 07:44:56 +01:00
mach-sibyte MIPS: SB1: Remove support for Pass 1 parts. 2015-07-14 21:47:34 +02:00
mach-tx39xx MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-tx49xx MIPS: Replace use of phys_t with phys_addr_t. 2014-11-24 22:47:31 +01:00
mach-vr41xx MIPS: Create a common <asm/mach-generic/war.h> 2015-03-31 11:59:40 +02:00
mach-xilfpga MIPS: xilfpga: Add mipsfpga platform code 2015-11-11 08:38:44 +01:00
mips-boards MIPS: SEAD3: New header file sead3-addr.h with hardware addresses. 2015-04-01 17:22:07 +02:00
netlogic genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
octeon MIPS: Octeon: Fix management port MII address on Kontron S1901 2015-09-03 12:08:11 +02:00
pci MIPS: PCI: Add a hook for IORESOURCE_BUS in pci_controller/bridge_controller 2015-04-01 17:22:16 +02:00
sgi MIPS: Update arch/mips/include/asm/sgi/sgi.h 2015-04-01 17:21:56 +02:00
sibyte
sn
txx9
vr41xx
xtalk MIPS: Xtalk: Update xwidget.h with known Xtalk device numbers 2015-06-21 21:54:21 +02:00
abi.h MIPS: Initial implementation of a VDSO 2015-11-11 08:36:36 +01:00
addrspace.h MIPS: Add NUMA support for Loongson-3 2014-07-30 21:46:19 +02:00
amon.h MIPS: APRP: Code formatting clean-ups. 2014-01-22 20:19:02 +01:00
arch_hweight.h
asm-eva.h MIPS: asm: asm-eva: Introduce kernel load/store variants 2015-04-10 15:41:43 +02:00
asm-offsets.h
asm.h MIPS: Fix gigaton of warning building with microMIPS. 2014-03-31 18:17:12 +02:00
asmmacro-32.h Merge branch '4.1-fp' into mips-for-linux-next 2015-04-13 16:01:37 +02:00
asmmacro-64.h MIPS: Support for 64-bit FP with O32 binaries 2014-01-13 23:40:56 +01:00
asmmacro.h MIPS: Introduce accessors for MSA vector registers 2015-09-03 12:07:40 +02:00
atomic.h Merge branch 'upstream' of git://git.linux-mips.org/pub/scm/ralf/upstream-linus 2015-11-15 09:10:53 -08:00
barrier.h locking, arch: use WRITE_ONCE()/READ_ONCE() in smp_store_release()/smp_load_acquire() 2015-08-03 10:59:30 +02:00
bcache.h MIPS: Introduce API for enabling & disabling L2 prefetch 2015-10-26 09:49:41 +01:00
bitops.h MIPS: Replace smp_mb with release barrier function in unlocks. 2015-06-21 21:54:30 +02:00
bmips-spaces.h MIPS: BMIPS: Define BMIPS_FIXADDR_TOP in asm/bmips-spaces.h 2015-06-21 21:53:30 +02:00
bmips.h MIPS: BMIPS: Move post DMA flush implementation to common header 2015-04-08 23:52:32 +02:00
bootinfo.h MIPS: Replace use of phys_t with phys_addr_t. 2014-11-24 22:47:31 +01:00
branch.h MIPS: kernel: mips-r2-to-r6-emul: Add R2 emulator for MIPS R6 2015-02-17 15:37:37 +00:00
break.h
bug.h
bugs.h
cache.h
cacheflush.h MIPS: Fix race condition in lazy cache flushing. 2015-03-25 13:48:00 +01:00
cacheops.h MIPS: fix case mismatch in local_r4k_flush_icache_range() 2014-01-15 14:19:42 +07:00
cdmm.h MIPS: CDMM: Add builtin_mips_cdmm_driver() macro 2015-11-05 11:15:41 +01:00
cevt-r4k.h MIPS: cevt-r4k: Migrate to new 'set-state' interface 2015-09-03 12:07:52 +02:00
checksum.h MIPS: LLVMLinux: Fix an 'inline asm input/output type mismatch' error. 2015-04-01 17:21:47 +02:00
clkdev.h clk: Add common __clk_get(), __clk_put() implementations 2013-12-04 17:19:44 +01:00
clock.h MIPS: Remove declaration of obsolete arch_init_clk_ops() 2014-11-24 07:45:37 +01:00
clocksource.h MIPS: VDSO: Add implementations of gettimeofday() and clock_gettime() 2015-11-11 08:36:41 +01:00
cmp.h MIPS: SMP: Remove plat_smp_ops cpus_done method. 2014-05-27 11:06:42 +02:00
cmpxchg.h arch: Remove __ARCH_HAVE_CMPXCHG 2015-05-13 10:55:42 +02:00
compat-signal.h
compat.h MIPS: Clean up compat_siginfo_t 2015-11-12 11:35:47 +01:00
compiler.h MIPS: Use the new "ZC" constraint for MIPS R6 2015-02-17 15:37:21 +00:00
cop2.h MIPS: Prevent compiler warning from cop2_{save,restore} 2014-10-23 19:58:13 +02:00
cpu-features.h MIPS: Allow RIXI for 32-bit kernels on MIPS64 2015-11-11 08:35:39 +01:00
cpu-info.h MIPS: Respect the ISA level in FCSR handling 2015-04-08 01:10:37 +02:00
cpu-type.h MIPS: Add cases for CPU_I6400 2015-08-26 15:23:03 +02:00
cpu.h MIPS: cpu-features: Add cpu_has_ftlb 2015-09-22 21:11:05 +02:00
debug.h MIPS: Declare mips_debugfs_dir in a header 2015-10-26 09:49:42 +01:00
delay.h
device.h
div64.h
dma-coherence.h MIPS: improve checks for noncoherent DMA 2014-01-22 20:43:10 +01:00
dma-mapping.h dma-mapping: consolidate dma_set_mask 2015-09-10 13:29:01 -07:00
dma.h
ds1287.h
dsp.h
edac.h EDAC: Cleanup atomic_scrub mess 2015-05-28 15:31:53 +02:00
elf.h MIPS: Initial implementation of a VDSO 2015-11-11 08:36:36 +01:00
errno.h
eva.h MIPS: EVA: Add new EVA header 2014-08-26 02:18:56 +02:00
exec.h
fb.h
fixmap.h MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
floppy.h
fpregdef.h MIPS: Fix build with binutils 2.24.51+ 2014-11-07 15:07:36 +01:00
fpu_emulator.h MIPS: Respect the ISA level in FCSR handling 2015-04-08 01:10:37 +02:00
fpu.h MIPS: Tidy up FPU context switching 2015-09-03 12:08:05 +02:00
ftrace.h MIPS: ftrace: Fix a microMIPS build problem 2014-10-24 02:38:33 +02:00
futex.h MIPS: asm: futex: Set the appropriate ISA level for MIPS R6 2015-02-17 15:37:23 +00:00
gio_device.h MIPS: ip22-gio: Remove legacy suspend/resume support 2015-02-20 13:30:55 +01:00
gt64120.h
hardirq.h
hazards.h MIPS: hazards: Add hazard macros for tlb read 2015-06-21 21:52:28 +02:00
highmem.h kmap_atomic_to_page() has no users, remove it 2015-11-09 15:11:24 -08:00
hpet.h MIPS: Loongson-3: Add RS780/SBX00 HPET support 2014-11-24 07:45:02 +01:00
hugetlb.h mm/hugetlb: remove arch_prepare/release_hugepage from arch headers 2015-06-25 17:00:35 -07:00
hw_irq.h
i8259.h MIPS: i8259: DT support 2015-06-21 21:54:29 +02:00
ide.h
idle.h cpuidle: Invert CPUIDLE_FLAG_TIME_VALID logic 2014-11-12 21:17:27 +01:00
inst.h MIPS: MIPS16e: Support handling of delay slots. 2013-05-09 17:55:20 +02:00
io.h MIPS: Define ioremap_uc 2015-10-06 13:19:25 +02:00
irq_cpu.h MIPS: Rename mips_cpu_intc_init() -> mips_cpu_irq_of_init() 2014-11-24 07:44:52 +01:00
irq_gt641xx.h
irq_regs.h
irq.h MIPS: Remove "weak" from get_c0_fdc_int() declaration 2015-09-03 12:07:38 +02:00
irqflags.h MIPS/IRQCHIP: Move irq_chip from arch/mips to drivers/irqchip. 2015-06-21 21:52:50 +02:00
isadep.h
jazz.h
jazzdma.h
jump_label.h locking/static_keys: Add a new static_key interface 2015-08-03 11:34:15 +02:00
Kbuild Merge branch 'strscpy' of git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile 2015-10-04 16:31:13 +01:00
kdebug.h MIPS: Add uprobes support. 2015-09-03 12:08:05 +02:00
kexec.h
kgdb.h MIPS: Get rid of 'kgdb_early_setup' cruft. 2015-06-21 21:54:10 +02:00
kmap_types.h
kprobes.h
kvm_host.h kvm: rename pfn_t to kvm_pfn_t 2016-01-15 17:56:32 -08:00
kvm_para.h MIPS: Add functions for hypervisor call 2014-05-30 21:01:11 +02:00
linkage.h MIPS: Remove "__weak" definition from arch-specific linkage.h 2015-09-03 12:07:39 +02:00
local.h MIPS: asm: local: Set the appropriate ISA level for MIPS R6 2015-02-17 15:37:24 +00:00
m48t37.h
maar.h MIPS: Initialise MAARs on secondary CPUs 2015-09-27 14:15:26 +02:00
mc146818-time.h
mc146818rtc.h
mips_machine.h
mips_mt.h MIPS: MT: Remove SMTC support 2014-05-24 00:07:01 +02:00
mips-cm.h MIPS: CM: Introduce core-other locking functions 2015-11-11 08:35:14 +01:00
mips-cpc.h MIPS: CM: make use of mips_cm_{lock,unlock}_other 2015-11-11 08:35:17 +01:00
mips-r2-to-r6-emul.h MIPS: Set `si_code' for SIGFPE signals sent from emulation too 2015-04-08 01:10:19 +02:00
mipsmtregs.h MIPS: MT: define write_c0_tchalt macro 2014-05-28 16:20:22 +01:00
mipsprom.h
mipsregs.h MIPS: Tidy EntryLo bit definitions, add PFN 2015-11-11 08:35:33 +01:00
mmu_context.h MIPS: HTW: Prevent accidental HTW start due to nested htw_{start, stop} 2015-02-16 10:55:26 +01:00
mmu.h MIPS,prctl: add PR_[GS]ET_FP_MODE prctl options for MIPS 2015-02-12 12:30:29 +01:00
mmzone.h
module.h MIPS: asm: module: define MODULE_PROC_FAMILY for MIPS R6 2015-02-17 15:37:17 +00:00
msa.h MIPS: Introduce accessors for MSA vector registers 2015-09-03 12:07:40 +02:00
msc01_ic.h
nile4.h mips: Update the email address of Geert Uytterhoeven 2014-06-02 16:34:41 +02:00
paccess.h MIPS: Apply `.insn' to fixup labels throughout 2014-11-24 07:45:36 +01:00
page.h MIPS: Fix flood of warnings about comparsion being always true. 2015-11-16 12:07:10 +01:00
pci.h Merge branch 'for-4.2/sg' of git://git.kernel.dk/linux-block 2015-06-25 15:22:36 -07:00
perf_event.h
pgalloc.h mips: handle pgtable_page_ctor() fail 2013-11-15 09:32:18 +09:00
pgtable-32.h MIPS: BCM77xx: Remove legacy __cpuinit{,data} sections that crept in 2015-06-21 21:53:42 +02:00
pgtable-64.h MIPS: Expand __swp_offset() to carry 40 significant bits for 64-bit kernel. 2015-04-01 17:21:59 +02:00
pgtable-bits.h mips, thp: remove infrastructure for handling splitting PMDs 2016-01-15 17:56:32 -08:00
pgtable.h mips, thp: remove infrastructure for handling splitting PMDs 2016-01-15 17:56:32 -08:00
pm-cps.h MIPS: pm-cps: add PM state entry code for CPS systems 2014-05-28 16:20:31 +01:00
pm.h Merge branch 'wip-mips-pm' of https://github.com/paulburton/linux into mips-for-linux-next 2014-05-29 15:08:23 +02:00
pmon.h
prefetch.h
processor.h MIPS: Initial implementation of a VDSO 2015-11-11 08:36:36 +01:00
prom.h MIPS: prepare for user enabling of CONFIG_OF 2015-06-21 21:54:14 +02:00
ptrace.h MIPS: Add uprobes support. 2015-09-03 12:08:05 +02:00
r4k-timer.h
r4kcache.h MIPS: r4kcache: Use correct base register for MIPS R6 cache flushes 2015-04-10 15:41:46 +02:00
reboot.h
reg.h MIPS: asm/reg.h: Move to uapi 2014-08-02 00:06:38 +02:00
regdef.h
rtlx.h MIPS: APRP: Code formatting clean-ups. 2014-01-22 20:19:02 +01:00
seccomp.h mips: switch to using asm-generic for seccomp.h 2015-04-17 09:04:10 -04:00
setup.h MIPS: Add 8250/16550 serial early printk driver 2013-10-29 21:24:36 +01:00
sgialib.h MIPS: ARC: Add declarations for a few missing ARC firmware functions. 2015-01-13 16:04:28 +01:00
sgiarcs.h
shmparam.h
sigcontext.h Revert "MIPS: Save/restore MSA context around signals" 2014-06-26 10:48:18 +01:00
signal.h MIPS: Use common FP sigcontext code for O32 compat 2015-09-03 12:07:56 +02:00
sim.h
smp-cps.h MIPS: pm-cps: Prevent use of mips_cps_* without CPS SMP 2014-07-30 20:47:39 +02:00
smp-ops.h MIPS: SMP: Remove plat_smp_ops cpus_done method. 2014-05-27 11:06:42 +02:00
smp.h MIPS: SMP: Don't increment irq_count multiple times for call function IPIs 2015-08-03 09:25:12 +02:00
sni.h
socket.h
sparsemem.h MIPS: Add NUMA support for Loongson-3 2014-07-30 21:46:19 +02:00
spinlock_types.h
spinlock.h MIPS: Select CONFIG_ARCH_USE_CMPXCHG_LOCKREF for MIPS64 2015-09-03 12:08:01 +02:00
spram.h MIPS: asm: spram: Add new symbol for MIPS scratch pad storage 2015-02-17 15:37:20 +00:00
stackframe.h MIPS: Flush RPS on kernel entry with EVA 2015-08-03 10:29:11 +02:00
stackprotector.h MIPS: initial stack protector support 2013-07-01 15:10:48 +02:00
stacktrace.h
string.h
switch_to.h MIPS: Tidy up FPU context switching 2015-09-03 12:08:05 +02:00
syscall.h MIPS: Fix syscall_get_nr for the syscall exit tracing. 2015-02-04 16:40:09 +01:00
termios.h
thread_info.h MIPS: Add uprobes support. 2015-09-03 12:08:05 +02:00
time.h MIPS: Remove "weak" from get_c0_compare_int() declaration 2015-09-03 12:07:38 +02:00
timex.h MIPS: Implement random_get_entropy with CP0 Random 2014-05-30 18:21:30 +02:00
tlb.h MIPS: tlb: Set the EHINV bit for TLBINVF cores when invalidating the TLB 2014-01-22 20:18:59 +01:00
tlbdebug.h MIPS: Refactor dumping of TLB registers for r3k/r4k 2015-09-03 12:07:45 +02:00
tlbflush.h
tlbmisc.h
topology.h sched/topology: Rename topology_thread_cpumask() to topology_sibling_cpumask() 2015-05-27 15:22:15 +02:00
traps.h
txx9irq.h MIPS/IRQCHIP: Move irq_chip from arch/mips to drivers/irqchip. 2015-06-21 21:52:50 +02:00
txx9pio.h
txx9tmr.h
types.h MIPS: Remove now unused definition of phys_t. 2014-11-24 22:47:31 +01:00
uaccess.h MIPS: Fix bitrot in __get_user_unaligned() 2015-12-27 20:07:44 +01:00
uasm.h MIPS: Add MFHC0 and MTHC0 instructions to uasm. 2014-11-24 22:47:31 +01:00
unaligned.h
unistd.h sys_sgetmask/sys_ssetmask: add CONFIG_SGETMASK_SYSCALL 2014-06-04 16:54:14 -07:00
uprobes.h MIPS: Add uprobes support. 2015-09-03 12:08:05 +02:00
vdso.h MIPS: VDSO: Add implementations of gettimeofday() and clock_gettime() 2015-11-11 08:36:41 +01:00
vga.h MIPS: Fix VGA_MAP_MEM macro. 2013-09-18 17:13:58 +02:00
vpe.h MIPS: MT: Remove "weak" from vpe_run() declaration 2015-08-26 15:23:40 +02:00
war.h
watch.h
wbflush.h