linux/arch/x86/include/asm
Linus Torvalds 7d3bf613e9 libnvdimm for 4.18
* DAX broke a fundamental assumption of truncate of file mapped pages.
   The truncate path assumed that it is safe to disconnect a pinned page
   from a file and let the filesystem reclaim the physical block. With DAX
   the page is equivalent to the filesystem block. Introduce
   dax_layout_busy_page() to enable filesystems to wait for pinned DAX
   pages to be released. Without this wait a filesystem could allocate
   blocks under active device-DMA to a new file.
 
 * DAX arranges for the block layer to be bypassed and uses
   dax_direct_access() + copy_to_iter() to satisfy read(2) calls.
   However, the memcpy_mcsafe() facility is available through the pmem
   block driver. In order to safely handle media errors, via the DAX
   block-layer bypass, introduce copy_to_iter_mcsafe().
 
 * Fix cache management policy relative to the ACPI NFIT Platform
   Capabilities Structure to properly elide cache flushes when they are not
   necessary. The table indicates whether CPU caches are power-fail
   protected. Clarify that a deep flush is always performed on
   REQ_{FUA,PREFLUSH} requests.
 -----BEGIN PGP SIGNATURE-----
 
 iQIcBAABAgAGBQJbGxI7AAoJEB7SkWpmfYgCDjsP/2Lcibu9Kf4tKIzuInsle6iE
 6qP29qlkpHVTpDKbhvIxTYTYL9sMU0DNUrpPCJR/EYdeyztLWDFC5EAT1wF240vf
 maV37s/uP331jSC/2VJnKWzBs2ztQxmKLEIQCxh6aT0qs9cbaOvJgB/WlVu+qtsl
 aGJFLmb6vdQacp31noU5plKrMgMA1pADyF5qx9I9K2HwowHE7T368ZEFS/3S//c3
 LXmpx/Nfq52sGu/qbRbu6B1CTJhIGhmarObyQnvBYoKntK1Ov4e8DS95wD3EhNDe
 FuRkOCUKhjl6cFy7QVWh1ct1bFm84ny+b4/AtbpOmv9l/+0mveJ7e+5mu8HQTifT
 wYiEe2xzXJ+OG/xntv8SvlZKMpjP3BqI0jYsTutsjT4oHrciiXdXM186cyS+BiGp
 KtFmWyncQJgfiTq6+Hj5XpP9BapNS+OYdYgUagw9ZwzdzptuGFYUMSVOBrYrn6c/
 fwqtxjubykJoW0P3pkIoT91arFSea7nxOKnGwft06imQ7TwR4ARsI308feQ9itJq
 2P2e7/20nYMsw2aRaUDDA70Yu+Lagn1m8WL87IybUGeUDLb1BAkjphAlWa6COJ+u
 PhvAD2tvyM9m0c7O5Mytvz7iWKG6SVgatoAyOPkaeplQK8khZ+wEpuK58sO6C1w8
 4GBvt9ri9i/Ww/A+ppWs
 =4bfw
 -----END PGP SIGNATURE-----

Merge tag 'libnvdimm-for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm

Pull libnvdimm updates from Dan Williams:
 "This adds a user for the new 'bytes-remaining' updates to
  memcpy_mcsafe() that you already received through Ingo via the
  x86-dax- for-linus pull.

  Not included here, but still targeting this cycle, is support for
  handling memory media errors (poison) consumed via userspace dax
  mappings.

  Summary:

   - DAX broke a fundamental assumption of truncate of file mapped
     pages. The truncate path assumed that it is safe to disconnect a
     pinned page from a file and let the filesystem reclaim the physical
     block. With DAX the page is equivalent to the filesystem block.
     Introduce dax_layout_busy_page() to enable filesystems to wait for
     pinned DAX pages to be released. Without this wait a filesystem
     could allocate blocks under active device-DMA to a new file.

   - DAX arranges for the block layer to be bypassed and uses
     dax_direct_access() + copy_to_iter() to satisfy read(2) calls.
     However, the memcpy_mcsafe() facility is available through the pmem
     block driver. In order to safely handle media errors, via the DAX
     block-layer bypass, introduce copy_to_iter_mcsafe().

   - Fix cache management policy relative to the ACPI NFIT Platform
     Capabilities Structure to properly elide cache flushes when they
     are not necessary. The table indicates whether CPU caches are
     power-fail protected. Clarify that a deep flush is always performed
     on REQ_{FUA,PREFLUSH} requests"

* tag 'libnvdimm-for-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm: (21 commits)
  dax: Use dax_write_cache* helpers
  libnvdimm, pmem: Do not flush power-fail protected CPU caches
  libnvdimm, pmem: Unconditionally deep flush on *sync
  libnvdimm, pmem: Complete REQ_FLUSH => REQ_PREFLUSH
  acpi, nfit: Remove ecc_unit_size
  dax: dax_insert_mapping_entry always succeeds
  libnvdimm, e820: Register all pmem resources
  libnvdimm: Debug probe times
  linvdimm, pmem: Preserve read-only setting for pmem devices
  x86, nfit_test: Add unit test for memcpy_mcsafe()
  pmem: Switch to copy_to_iter_mcsafe()
  dax: Report bytes remaining in dax_iomap_actor()
  dax: Introduce a ->copy_to_iter dax operation
  uio, lib: Fix CONFIG_ARCH_HAS_UACCESS_MCSAFE compilation
  xfs, dax: introduce xfs_break_dax_layouts()
  xfs: prepare xfs_break_layouts() for another layout type
  xfs: prepare xfs_break_layouts() to be called with XFS_MMAPLOCK_EXCL
  mm, fs, dax: handle layout changes to pinned dax mappings
  mm: fix __gup_device_huge vs unmap
  mm: introduce MEMORY_DEVICE_FS_DAX and CONFIG_DEV_PAGEMAP_OPS
  ...
2018-06-08 17:21:52 -07:00
..
crypto
e820
fpu
numachip
trace
uv
xen
a.out-core.h
acenv.h
acpi.h
agp.h
alternative-asm.h
alternative.h
amd_nb.h
apb_timer.h
apic_flat_64.h
apic.h
apicdef.h
apm.h
arch_hweight.h
archrandom.h
asm-offsets.h
asm-prototypes.h
asm.h Revert "x86/asm: Allow again using asm.h when building for the 'bpf' clang target" 2018-04-12 10:33:27 -03:00
atomic64_32.h
atomic64_64.h
atomic.h
barrier.h
bios_ebda.h
bitops.h
boot.h
bootparam_utils.h
bug.h
bugs.h
cache.h
cacheflush.h
cacheinfo.h x86/CPU/AMD: Calculate last level cache ID from number of sharing threads 2018-05-06 12:49:15 +02:00
calgary.h
ce4100.h
checksum_32.h
checksum_64.h
checksum.h
clocksource.h
cmdline.h
cmpxchg_32.h
cmpxchg_64.h
cmpxchg.h
compat.h y2038: x86: Extend sysvipc data structures 2018-04-20 16:19:52 +02:00
cpu_device_id.h
cpu_entry_area.h
cpu.h
cpufeature.h x86/cpufeature: Guard asm_volatile_goto usage for BPF compilation 2018-05-13 21:49:14 +02:00
cpufeatures.h x86/speculation: Add virtualized speculative store bypass disable support 2018-05-17 17:09:18 +02:00
cpumask.h
crash.h
current.h
debugreg.h
delay.h
desc_defs.h
desc.h
device.h
disabled-features.h
div64.h
dma-direct.h
dma-mapping.h x86/pci-dma: switch the VIA 32-bit DMA quirk to use the struct device flag 2018-05-28 12:48:25 +02:00
dma.h
dmi.h
dwarf2.h
edac.h
efi.h
elf.h
emergency-restart.h
entry_arch.h
error-injection.h
espfix.h
exec.h
export.h
extable.h
fb.h
fixmap.h
floppy.h
frame.h
ftrace.h Merge branch 'linus' into timers/2038 2018-05-19 13:55:40 +02:00
futex.h
gart.h
genapic.h
geode.h
hardirq.h softirq/x86: Switch to generic local_softirq_pending() implementation 2018-05-14 11:25:28 +02:00
highmem.h
hpet.h
hugetlb.h
hw_breakpoint.h
hw_irq.h
hyperv-tlfs.h X86/Hyper-V: Enhanced IPI enlightenment 2018-05-19 13:23:17 +02:00
hypervisor.h
i8259.h
ia32_unistd.h
ia32.h
imr.h
inat_types.h
inat.h
init.h
insn-eval.h
insn.h kprobes/x86: Prohibit probing on exception masking instructions 2018-05-13 19:52:55 +02:00
inst.h
intel_ds.h
intel_mid_vrtc.h x86: Convert x86_platform_ops to timespec64 2018-05-19 14:03:14 +02:00
intel_pconfig.h
intel_pmc_ipc.h
intel_pt.h
intel_punit_ipc.h
intel_rdt_sched.h
intel_scu_ipc.h
intel_telemetry.h
intel-family.h
intel-mid.h
invpcid.h
io_apic.h
io.h x86/io: Define readq()/writeq() to use 64-bit type 2018-05-18 09:11:26 +02:00
iomap.h
iommu_table.h
iommu.h
iosf_mbi.h
ipi.h
irq_regs.h
irq_remapping.h
irq_vectors.h x86/vector: Remove the unused macro FPU_IRQ 2018-04-26 11:57:57 +02:00
irq_work.h
irq.h
irqdomain.h
irqflags.h
ist.h
jailhouse_para.h x86/jailhouse: Fix incorrect SPDX identifier 2018-04-23 10:17:28 +02:00
jump_label.h
kasan.h
kaslr.h
kbdleds.h
Kbuild
kdebug.h
kexec-bzimage64.h kexec_file,x86,powerpc: factor out kexec_file_ops functions 2018-04-13 17:10:27 -07:00
kexec.h
kgdb.h
kmap_types.h
kprobes.h
kvm_emulate.h
kvm_guest.h
kvm_host.h KVM: SVM: Implement VIRT_SPEC_CTRL support for SSBD 2018-05-17 17:09:21 +02:00
kvm_page_track.h
kvm_para.h
kvmclock.h
linkage.h
livepatch.h
local64.h
local.h
mach_timer.h
mach_traps.h
math_emu.h
mc146818rtc.h x86: Convert x86_platform_ops to timespec64 2018-05-19 14:03:14 +02:00
mce.h
mcsafe_test.h x86, nfit_test: Add unit test for memcpy_mcsafe() 2018-05-22 23:18:31 -07:00
mem_encrypt.h
microcode_amd.h
microcode_intel.h
microcode.h
misc.h
mmconfig.h
mmu_context.h powerpc updates for 4.18 2018-06-07 10:23:33 -07:00
mmu.h
mmx.h
mmzone_32.h
mmzone_64.h
mmzone.h
module.h
mpspec_def.h
mpspec.h
mpx.h
mshyperv.h x86/Hyper-V/hv_apic: Build the Hyper-V APIC conditionally 2018-05-19 21:34:11 +02:00
msi.h
msidef.h
msr-index.h x86: msr-index.h: Correct SNB_C1/C3_AUTO_UNDEMOTE defines 2018-06-01 23:12:45 -04:00
msr-trace.h
msr.h
mtrr.h
mwait.h
nmi.h
nops.h
nospec-branch.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2018-05-26 19:46:15 -04:00
numa_32.h
numa.h
olpc_ofw.h
olpc.h
orc_lookup.h
orc_types.h
page_32_types.h
page_32.h
page_64_types.h x86/mm: Stop pretending pgtable_l5_enabled is a variable 2018-05-19 11:56:57 +02:00
page_64.h
page_types.h
page.h
paravirt_types.h
paravirt.h x86/mm: Stop pretending pgtable_l5_enabled is a variable 2018-05-19 11:56:57 +02:00
parport.h
pat.h
pci_64.h
pci_x86.h
pci-direct.h
pci-functions.h
pci.h PCI: remove PCI_DMA_BUS_IS_PHYS 2018-05-07 07:15:41 +02:00
percpu.h
perf_event_p4.h
perf_event.h
pgalloc.h x86/mm: Stop pretending pgtable_l5_enabled is a variable 2018-05-19 11:56:57 +02:00
pgtable_32_types.h x86/mm: Stop pretending pgtable_l5_enabled is a variable 2018-05-19 11:56:57 +02:00
pgtable_32.h
pgtable_64_types.h x86/mm: Stop pretending pgtable_l5_enabled is a variable 2018-05-19 11:56:57 +02:00
pgtable_64.h x86/mm: Stop pretending pgtable_l5_enabled is a variable 2018-05-19 11:56:57 +02:00
pgtable_types.h mm: introduce ARCH_HAS_PTE_SPECIAL 2018-06-07 17:34:35 -07:00
pgtable-2level_types.h
pgtable-2level.h
pgtable-3level_types.h
pgtable-3level.h
pgtable.h x86/mm: Mark p4d_offset() __always_inline 2018-05-19 11:56:57 +02:00
pkeys.h powerpc updates for 4.18 2018-06-07 10:23:33 -07:00
platform_sst_audio.h
pm-trace.h
posix_types.h
preempt.h
probe_roms.h
processor-cyrix.h
processor-flags.h
processor.h Merge branches 'x86/urgent' and 'core/urgent' into x86/boot, to pick up fixes and avoid conflicts 2018-05-19 08:18:56 +02:00
prom.h
proto.h
pti.h
ptrace.h
purgatory.h
pvclock-abi.h
pvclock.h x86: Convert x86_platform_ops to timespec64 2018-05-19 14:03:14 +02:00
qrwlock.h
qspinlock_paravirt.h locking/qspinlock: Merge 'struct __qspinlock' into 'struct qspinlock' 2018-04-27 09:48:45 +02:00
qspinlock.h locking/qspinlock: Use smp_store_release() in queued_spin_unlock() 2018-04-27 09:48:51 +02:00
realmode.h
reboot_fixups.h
reboot.h
refcount.h
required-features.h
rio.h
rmwcc.h
rwsem.h
seccomp.h
sections.h
segment.h
serial.h
set_memory.h
setup_arch.h
setup.h
shmparam.h
sigcontext.h
sigframe.h
sighandling.h
signal.h
simd.h
smap.h
smp.h x86/CPU/AMD: Have smp_num_siblings and cpu_llc_id always be present 2018-05-06 12:49:14 +02:00
sparsemem.h x86/mm: Stop pretending pgtable_l5_enabled is a variable 2018-05-19 11:56:57 +02:00
spec-ctrl.h x86/speculation, KVM: Implement support for VIRT_SPEC_CTRL/LS_CFG 2018-05-17 17:09:21 +02:00
special_insns.h
spinlock_types.h
spinlock.h
sta2x11.h
stackprotector.h
stacktrace.h x86/dumpstack: Add a show_ip() function 2018-04-26 16:15:27 +02:00
string_32.h
string_64.h x86/asm/memcpy_mcsafe: Return bytes remaining 2018-05-15 08:32:42 +02:00
string.h
suspend_32.h
suspend_64.h
suspend.h
svm.h
swiotlb.h
switch_to.h
sync_bitops.h
sync_core.h
syscall_wrapper.h
syscall.h
syscalls.h
sysfb.h
tce.h
text-patching.h
thread_info.h x86/bugs: Rename _RDS to _SSBD 2018-05-09 21:41:38 +02:00
time.h
timer.h
timex.h
tlb.h
tlbbatch.h
tlbflush.h
topology.h
trace_clock.h
traps.h
tsc.h
uaccess_32.h
uaccess_64.h x86/asm/memcpy_mcsafe: Define copy_to_iter_mcsafe() 2018-05-15 08:32:42 +02:00
uaccess.h
umip.h
unaligned.h
unistd.h
unwind_hints.h
unwind.h
uprobes.h
user32.h
user_32.h
user_64.h
user.h
vdso.h
vga.h
vgtod.h
virtext.h
vm86.h
vmx.h
vsyscall.h
vvar.h
word-at-a-time.h
x86_init.h x86: Convert x86_platform_ops to timespec64 2018-05-19 14:03:14 +02:00
xor_32.h
xor_64.h
xor_avx.h
xor.h