21 May, 2016
1 commit
-
Device DAX is the device-centric analogue of Filesystem DAX
(CONFIG_FS_DAX). It allows memory ranges to be allocated and mapped
without need of an intervening file system. Device DAX is strict,
precise and predictable. Specifically this interface:1/ Guarantees fault granularity with respect to a given page size (pte,
pmd, or pud) set at configuration time.2/ Enforces deterministic behavior by being strict about what fault
scenarios are supported.For example, by forcing MADV_DONTFORK semantics and omitting MAP_PRIVATE
support device-dax guarantees that a mapping always behaves/performs the
same once established. It is the "what you see is what you get" access
mechanism to differentiated memory vs filesystem DAX which has
filesystem specific implementation semantics.Persistent memory is the first target, but the mechanism is also
targeted for exclusive allocations of performance differentiated memory
ranges.This commit is limited to the base device driver infrastructure to
associate a dax device with pmem range.Cc: Jeff Moyer
Cc: Christoph Hellwig
Cc: Andrew Morton
Cc: Dave Hansen
Cc: Ross Zwisler
Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams
19 May, 2016
1 commit
-
The dax_pmem driver was implementing an empty ->remove() method to
satisfy the nvdimm bus driver that unconditionally calls ->remove().
Teach the core bus driver to check if ->remove() is NULL to remove that
requirement.Reported-by: Johannes Thumshirn
Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams
10 May, 2016
3 commits
-
We want to use the alignment as the allocation and mapping unit.
Previously this information was only useful for establishing the data
offset, but now it is important to remember the granularity for the
later use.Signed-off-by: Dan Williams
-
We may want to subdivide a device-dax range into multiple devices so
that each can have separate permissions or naming. Reserve 128K of
label space by default so we have the capability of making allocation
decisions persistent. This reservation is not something we can add
later since it would result in the default size of a device-dax range
changing between kernel versions.Signed-off-by: Dan Williams
-
Device DAX is the device-centric analogue of Filesystem DAX
(CONFIG_FS_DAX). It allows persistent memory ranges to be allocated and
mapped without need of an intervening file system. This initial
infrastructure arranges for a libnvdimm pfn-device to be represented as
a different device-type so that it can be attached to a driver other
than the pmem driver.Signed-off-by: Dan Williams
23 Apr, 2016
14 commits
-
The 'host' variable can be killed as it is always the same as the passed
in device.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
The devm conversion obviates the need to continue to remember the queue
and disk locally in the driver.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Now that pmem internals have been disentangled from pfn setup, that code
can move to the core. This is in preparation for adding another user of
the pfn-device capabilities.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
In preparation for providing an alternative (to block device) access
mechanism to persistent memory, convert pmem_rw_bytes() to
nsio_rw_bytes(). This allows ->rw_bytes() functionality without
requiring a 'struct pmem_device' to be instantiated.In other words, when ->rw_bytes() is in use i/o is driven through
'struct nd_namespace_io', otherwise it is driven through 'struct
pmem_device' and the block layer. This consolidates the disjoint calls
to devm_exit_badblocks() and devm_memunmap() into a common
devm_nsio_disable() and cleans up the init path to use a unified
pmem_attach_disk() implementation.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
The leading '0x' in front of %pa is redundant, also we can just use %pR
to simplify the print statement. The request parameters can be directly
taken from the resource as well.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Register a callback to clean up the request_queue and put the gendisk at
driver disable time.Cc: Ross Zwisler
Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Consolidate the information for issuing i/o to a blk-namespace, and
eliminate some pointer chasing.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
I/O errors events have the potential to be a high frequency and a log
message for each event can swamp the system. This message is also
redundant with upper layer error reporting.Cc: Ross Zwisler
Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Save a pointer chase by storing the driver private data in the
request_queue rather than the gendisk.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Save a pointer chase by storing the driver private data in the
request_queue rather than the gendisk.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Register a callback to clean up the request_queue and put the gendisk at
driver disable time.Cc: Ross Zwisler
Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Pass the device performing the probe so we can use a devm allocation for
the btt superblock.Cc: Vishal Verma
Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
Pass the device performing the probe so we can use a devm allocation for
the pfn superblock.Cc: Ross Zwisler
Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams -
We can derive the common namespace from other information. We also do
not need to cache it because all the usages are in slow paths.Reviewed-by: Johannes Thumshirn
Signed-off-by: Dan Williams
18 Apr, 2016
2 commits
-
Pull device mapper fix from Mike Snitzer:
"Fix for earlier 4.6-rc4 stable@ commit that introduced improper use of
write lock in cmd_read_lock() -- due to cut-n-paste gone awry (and
sparse didn't catch it)"* tag 'dm-4.6-fix-2' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
dm cache metadata: fix cmd_read_lock() acquiring write lock
17 Apr, 2016
11 commits
-
Commit 9567366fefdd ("dm cache metadata: fix READ_LOCK macros and
cleanup WRITE_LOCK macros") uses down_write() instead of down_read() in
cmd_read_lock(), yet up_read() is used to release the lock in
READ_UNLOCK(). Fix it.Fixes: 9567366fefdd ("dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros")
Cc: stable@vger.kernel.org
Signed-off-by: Ahmed Samy
Signed-off-by: Mike Snitzer -
Pull char/misc fixes from Greg KH:
"Here are some small char/misc driver fixes for 4.6-rc4. Full details
are in the shortlog, nothing major here.These have all been in linux-next for a while with no reported issues"
* tag 'char-misc-4.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc:
lkdtm: do not leak free page on kmalloc failure
lkdtm: fix memory leak of base
lkdtm: fix memory leak of val
extcon: palmas: Drop stray IRQF_EARLY_RESUME flag -
Pull misc fixes from Greg KH:
"Here are three small fixes for 4.6-rc4.Two fix up some lz4 issues with big endian systems, and the remaining
one resolves a minor debugfs issue that was reported.All have been in linux-next with no reported issues"
* tag 'driver-core-4.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core:
lib: lz4: cleanup unaligned access efficiency detection
lib: lz4: fixed zram with lz4 on big endian machines
debugfs: Make automount point inodes permanently empty -
Pull USB driver fixes from Greg KH:
"Here are some small USB fixes for 4.6-rc4.Mostly xhci fixes for reported issues, a UAS bug that has hit a number
of people, including stable tree users, and a few other minor things.All have been in linux-next for a while with no reported issues"
* tag 'usb-4.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb:
usb: hcd: out of bounds access in for_each_companion
USB: uas: Add a new NO_REPORT_LUNS quirk
USB: uas: Limit qdepth at the scsi-host level
doc: usb: Fix typo in gadget_multi documentation
usb: host: xhci-plat: Make enum xhci_plat_type start at a non zero value
xhci: fix 10 second timeout on removal of PCI hotpluggable xhci controllers
usb: xhci: fix wild pointers in xhci_mem_cleanup
usb: host: xhci-plat: fix cannot work if R-Car Gen2/3 run on above 4GB phys
usb: host: xhci: add a new quirk XHCI_NO_64BIT_SUPPORT
xhci: resume USB 3 roothub first
usb: xhci: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host
cdc-acm: fix crash if flushed with nothing buffered -
Pull dmaengine fixes from Vinod Koul:
"This time we have some odd fixes in hsu, edma, omap and xilinx.Usual fixes and nothing special"
* tag 'dmaengine-fix-4.6-rc4' of git://git.infradead.org/users/vkoul/slave-dma:
dmaengine: dw: fix master selection
dmaengine: edma: special case slot limit workaround
dmaengine: edma: Remove dynamic TPTC power management feature
dmaengine: vdma: don't crash when bad channel is requested
dmaengine: omap-dma: Do not suppress interrupts for memcpy
dmaengine: omap-dma: Fix polled channel completion detection and handling
dmaengine: hsu: correct use of channel status register
dmaengine: hsu: correct residue calculation of active descriptor
dmaengine: hsu: set HSU_CH_MTSR to memory width -
Pull locking fixlet from Ingo Molnar:
"Fixes a build warning on certain Kconfig combinations"* 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
locking/lockdep: Fix print_collision() unused warning -
Pull EFI fix from Ingo Molnar:
"An arm64 boot crash fix"* 'efi-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
efi/arm64: Don't apply MEMBLOCK_NOMAP to UEFI memory map mapping
16 Apr, 2016
7 commits
-
Pull block fixes from Jens Axboe:
"A few fixes for the current series. This contains:- Two fixes for NVMe:
One fixes a reset race that can be triggered by repeated
insert/removal of the module.The other fixes an issue on some platforms, where we get probe
timeouts since legacy interrupts isn't working. This used not to
be a problem since we had the worker thread poll for completions,
but since that was killed off, it means those poor souls can't
successfully probe their NVMe device. Use a proper IRQ check and
probe (msi-x -> msi ->legacy), like most other drivers to work
around this. Both from Keith.- A loop corruption issue with offset in iters, from Ming Lei.
- A fix for not having the partition stat per cpu ref count
initialized before sending out the KOBJ_ADD, which could cause user
space to access the counter prior to initialization. Also from
Ming Lei.- A fix for using the wrong congestion state, from Kaixu Xia"
* 'for-linus' of git://git.kernel.dk/linux-block:
block: loop: fix filesystem corruption in case of aio/dio
NVMe: Always use MSI/MSI-x interrupts
NVMe: Fix reset/remove race
writeback: fix the wrong congested state variable definition
block: partition: initialize percpuref before sending out KOBJ_ADD -
Pull libnvdimm fixes from Ross Zwisler:
"Two fixes:- Fix memcpy_from_pmem() to fallback to memcpy() for architectures
where CONFIG_ARCH_HAS_PMEM_API=n.- Add a comment explaining why we write data twice when clearing
poison in pmem_do_bvec().This has passed a boot test on an X86_32 config, which was the
architecture where issue #1 above was first noticed"Dan Williams adds:
"We're giving this multi-maintainer setup a shot, so expect libnvdimm
pull requests from either Ross or I going forward"* 'libnvdimm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/nvdimm/nvdimm:
libnvdimm, pmem: clarify the write+clear_poison+write flow
pmem: fix BUG() error in pmem.h:48 on X86_32 -
Pull MTD fix from Brian Norris:
"One MTD fix for v4.6-rc4:In the v4.4 cycle, we relaxed the requirement for assigning
mtd->owner, but we didn't remove this error case. It's hit only
by drivers that are both:(a) using nand_scan() directly
and
(b) built as modulesWe haven't seen explicit complaints about this (most use cases don't
fit one or both of the above), but we should definitely not be
BUG()'ing here"* tag 'for-linus-20160415' of git://git.infradead.org/linux-mtd:
mtd: nand: Drop mtd.owner requirement in nand_scan -
Pull MMC fixes from Ulf Hansson:
"Here are a couple of mmc fixes intended for v4.6 rc4.Regarding the fix for the regression about mmcblk device indexes. The
approach taken to solve the problem seems to be good enough. There
were some discussions around the solution, but it seems like people
were happy about it in the end.MMC core:
- Restore similar old behaviour when assigning mmcblk device indexesMMC host:
- tegra: Disable UHS-I modes for Tegra124 to fix regression"* tag 'mmc-v4.6-rc3' of git://git.linaro.org/people/ulf.hansson/mmc:
mmc: tegra: Disable UHS-I modes for Tegra124
mmc: block: Use the mmc host device index as the mmcblk device index -
Pull drm fixes from Dave Airlie:
"This contains fixes for exynos, amdgpu, radeon, i915 and qxl.It also contains some fixes to the core drm edid parser.
qxl:
- fix for a cursor hotspot issueradeon:
- some MST fixes that I've been running locally and make my monitor a
bit happierexynos:
- fix some regressions and build fixesamdgpu:
- a couple of small fixesi915:
- two DP MST fixes and a couple of other regression fixesNothing too out of the ordinary or surprising at this point"
* 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
drm/exynos: Use VIDEO_SAMSUNG_S5P_G2D=n as G2D Kconfig dependency
drm/exynos: fix a warning message
drm/exynos: mic: fix an error code
drm/exynos: fimd: fix broken dp_clock control
drm/exynos: build fbdev code conditionally
drm/exynos: fix adjusted_mode pointer in exynos_plane_mode_set
drm/exynos: fix error handling in exynos_drm_subdrv_open
drm/amd/amdgpu: fix irq domain remove for tonga ih
drm/i915: fix deadlock on lid open
drm/radeon: use helper for mst connector dpms.
drm/radeon/mst: port some MST setup code from DAL.
drm/amdgpu: add invisible pin size statistic
drm/edid: Fix DMT 1024x768@43Hz (interlaced) timings
drm/i915: Exit cherryview_irq_handler() after one pass
drm/i915: Call intel_dp_mst_resume() before resuming displays
drm/i915: Fix race condition in intel_dp_destroy_mst_connector()
drm/edid: Fix parsing of EDID 1.4 Established Timings III descriptor
drm/edid: Fix EDID Established Timings I and II
drm/qxl: fix cursor position with non-zero hotspot -
Pull parisc ftrace fixes from Helge Deller:
"This is (most likely) the last pull request for v4.6 for the parisc
architecture.It fixes the FTRACE feature for parisc, which is horribly broken since
quite some time and doesn't even compile. This patch just fixes the
bare minimum (it actually removes more lines than it adds), so that
the function tracer works again on 32- and 64bit kernels.I've queued up additional patches on top of this patch which e.g. add
the syscall tracer, but those have to wait for the merge window for
v4.7."* 'parisc-4.6-4' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux:
parisc: Fix ftrace function tracer -
The ACPI specification does not specify the state of data after a clear
poison operation. Potential future libnvdimm bus implementations for
other architectures also might not specify or disagree on the state of
data after clear poison. Clarify why we write twice.Reported-by: Jeff Moyer
Reported-by: Vishal Verma
Signed-off-by: Dan Williams
Signed-off-by: Ross Zwisler
Reviewed-by: Johannes Thumshirn
Reviewed-by: Jeff Moyer
Reviewed-by: Vishal Verma
15 Apr, 2016
1 commit
-
Starting from commit e36f620428(block: split bios to max possible length),
block core starts to split bio in the middle of bvec.Unfortunately loop dio/aio doesn't consider this situation, and
always treat 'iter.iov_offset' as zero. Then filesystem corruption
is observed.This patch figures out the offset of the base bvevc via
'bio->bi_iter.bi_bvec_done' and fixes the issue by passing the offset
to iov iterator.Fixes: e36f6204288088f (block: split bios to max possible length)
Cc: Keith Busch
Cc: Al Viro
Cc: stable@vger.kernel.org (4.5)
Signed-off-by: Ming Lei
Signed-off-by: Jens Axboe