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

    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

    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

    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

    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

    Dan Williams
     

23 Apr, 2016

14 commits


18 Apr, 2016

2 commits


17 Apr, 2016

11 commits


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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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 modules

    We 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

    Linus Torvalds
     
  • 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 indexes

    MMC 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

    Linus Torvalds
     
  • 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 issue

    radeon:
    - some MST fixes that I've been running locally and make my monitor a
    bit happier

    exynos:
    - fix some regressions and build fixes

    amdgpu:
    - a couple of small fixes

    i915:
    - two DP MST fixes and a couple of other regression fixes

    Nothing 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

    Linus Torvalds
     
  • 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

    Linus Torvalds
     
  • 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

    Dan Williams
     

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

    Ming Lei