19 Apr, 2016

2 commits

  • This patch converts the initrd table override mechanism to the table
    upgrade mechanism by restricting its usage to the tables released with
    compatibility and more recent revision.

    This use case has been encouraged by the ACPI specification:

    1. OEMID:
    An OEM-supplied string that identifies the OEM.

    2. OEM Table ID:
    An OEM-supplied string that the OEM uses to identify the particular data
    table. This field is particularly useful when defining a definition
    block to distinguish definition block functions. OEM assigns each
    dissimilar table a new OEM Table Id.

    3. OEM Revision:
    An OEM-supplied revision number. Larger numbers are assumed to be newer
    revisions.

    For OEMs, good practices will ensure consistency when assigning OEMID and
    OEM Table ID fields in any table. The intent of these fields is to allow
    for a binary control system that support services can use. Because many
    support function can be automated, it is useful when a tool can
    programatically determine which table release is a compatible and more
    recent revision of a prior table on the same OEMID and OEM Table ID.

    The facility can now be used by the vendors to upgrade wrong tables for bug
    fixing purpose, thus lockdep disabling taint is not suitable for it and it
    should be a default 'y' option to implement the spec encouraged use case.

    Note that, by implementing table upgrade inside of ACPICA itself, it is
    possible to remove acpi_table_initrd_override() and tables can be upgraded
    by acpi_install_table() automatically. Though current ACPICA impelentation
    hasn't implemented this, this patched changes the table flag setting timing
    to allow this to be implemented in ACPICA without changing the code here.

    Documentation of initrd override mechanism is upgraded accordingly.

    Original-by: Octavian Purdila
    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     
  • This patch moves acpi_os_table_override() and
    acpi_os_physical_table_override() to tables.c.

    Along with the mechanisms, acpi_initrd_initialize_tables() is also moved to
    tables.c to form a static function. The following functions are renamed
    according to this change:
    1. acpi_initrd_override() -> renamed to early_acpi_table_init(), which
    invokes acpi_table_initrd_init()
    2. acpi_os_physical_table_override() -> which invokes
    acpi_table_initrd_override()
    3. acpi_initialize_initrd_tables() -> renamed to acpi_table_initrd_scan()

    Signed-off-by: Lv Zheng
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

18 Apr, 2016

1 commit


17 Apr, 2016

9 commits


16 Apr, 2016

6 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
     
  • 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

9 commits

  • 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
     
  • Pull x86 fixes from Ingo Molnar:
    "Misc fixes: a binutils fix, an lguest fix, an mcelog fix and a missing
    documentation fix"

    * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
    x86/mce: Avoid using object after free in genpool
    lguest, x86/entry/32: Fix handling of guest syscalls using interrupt gates
    x86/build: Build compressed x86 kernels as PIE
    x86/mm/pkeys: Add missing Documentation

    Linus Torvalds
     
  • Pull device mapper fixes from Mike Snitzer:

    - fix a 4.6-rc1 bio-based DM 'struct dm_target_io' leak in an error
    path

    - stable@ fix for DM cache metadata's READ_LOCK macros that were
    incorrectly returning error if the block manager was in read-only
    mode; also cleanup multi-statement macros to use do {} while(0)

    * tag 'dm-4.6-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/device-mapper/linux-dm:
    dm cache metadata: fix READ_LOCK macros and cleanup WRITE_LOCK macros
    dm: fix dm_target_io leak if clone_bio() returns an error

    Linus Torvalds
     
  • …erry.reding/linux-pwm

    Pull pwm fix from Thierry Reding:
    "A single one-line fix to turn the regmap cache from an RB-tree to a
    flat cache to avoid lockdep and abort issues"

    * tag 'pwm/for-4.6-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/thierry.reding/linux-pwm:
    pwm: fsl-ftm: Use flat regmap cache

    Linus Torvalds
     
  • Pull mailbox fixes from Jussi Brar:
    "Misc fixes:

    mailbox-test driver:
    - prevent memory leak and another cosmetic change

    mailbox:
    - change the returned error code

    Xgene driver:
    - return -ENOMEM instead of PTR_ERR for failed devm_kzalloc"

    * 'mailbox-devel' of git://git.linaro.org/landing-teams/working/fujitsu/integration:
    mailbox: Stop using ENOSYS for anything other than unimplemented syscalls
    mailbox: mailbox-test: Prevent memory leak
    mailbox: mailbox-test: Use more consistent format for calling copy_from_user()
    mailbox: xgene-slimpro: Fix wrong test for devm_kzalloc

    Linus Torvalds
     
  • Pull crypto fixes from Herbert Xu:
    "This fixes an NFS regression caused by the skcipher/hash conversion in
    sunrpc. It also fixes a build problem in certain configurations with
    bcm63xx"

    * 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6:
    hwrng: bcm63xx - fix device tree compilation
    sunrpc: Fix skcipher/shash conversion

    Linus Torvalds
     
  • The READ_LOCK macro was incorrectly returning -EINVAL if
    dm_bm_is_read_only() was true -- it will always be true once the cache
    metadata transitions to read-only by dm_cache_metadata_set_read_only().

    Wrap READ_LOCK and WRITE_LOCK multi-statement macros in do {} while(0).
    Also, all accesses of the 'cmd' argument passed to these related macros
    are now encapsulated in parenthesis.

    A follow-up patch can be developed to eliminate the use of macros in
    favor of pure C code. Avoiding that now given that this needs to apply
    to stable@.

    Reported-by: Ben Hutchings
    Signed-off-by: Mike Snitzer
    Fixes: d14fcf3dd79 ("dm cache: make sure every metadata function checks fail_io")
    Cc: stable@vger.kernel.org

    Mike Snitzer
     
  • Multiple users have reported device initialization failure due the driver
    not receiving legacy PCI interrupts. This is not unique to any particular
    controller, but has been observed on multiple platforms.

    There have been no issues reported or observed when with message signaled
    interrupts, so this patch attempts to use MSI-x during initialization,
    falling back to MSI. If that fails, legacy would become the default.

    The setup_io_queues error handling had to change as a result: the admin
    queue's msix_entry used to be initialized to the legacy IRQ. The case
    where nr_io_queues is 0 would fail request_irq when setting up the admin
    queue's interrupt since re-enabling MSI-x fails with 0 vectors, leaving
    the admin queue's msix_entry invalid. Instead, return success immediately.

    Reported-by: Tim Muhlemmer
    Reported-by: Jon Derrick
    Signed-off-by: Keith Busch
    Signed-off-by: Jens Axboe

    Keith Busch
     
  • The PCI config access checked the file capabilities correctly, but used
    the itnernal security capability check rather than the helper function
    that is actually meant for that.

    The security_capable() has unusual return values and is not meant to be
    used elsewhere (the only other use is in the capability checking
    functions that we actually intend people to use, and this odd PCI usage
    really stood out when looking around the capability code.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

14 Apr, 2016

13 commits

  • Use flat regmap cache to avoid lockdep warning at probe:

    [ 0.697285] WARNING: CPU: 0 PID: 1 at kernel/locking/lockdep.c:2755 lockdep_trace_alloc+0x15c/0x160()
    [ 0.697449] DEBUG_LOCKS_WARN_ON(irqs_disabled_flags(flags))

    The RB-tree regmap cache needs to allocate new space on first writes.
    However, allocations in an atomic context (e.g. when a spinlock is held)
    are not allowed. The function regmap_write calls map->lock, which
    acquires a spinlock in the fast_io case. Since the pwm-fsl-ftm driver
    uses MMIO, the regmap bus of type regmap_mmio is being used which has
    fast_io set to true.

    The MMIO space of the pwm-fsl-ftm driver is reasonable condense, hence
    using the much faster flat regmap cache is anyway the better choice.

    Signed-off-by: Stefan Agner
    Cc: Mark Brown
    Signed-off-by: Thierry Reding

    Stefan Agner
     
  • Tegra124 has been randomly hanging during system suspend when entering
    the Tegra LP1 low power state. The hang is caused by the Tegra SDHCI
    driver and linked to the UHS-I tuning sequence. Disabling the UHS-I
    modes for Tegra124 prevents any hangs from occurring when entering
    system suspend.

    Unfortunately, the tuning sequence described in the public Tegra
    documentation is incomplete and on inspection of the current tuning
    sequence that has been implemented is also incomplete and may cause
    problems. In the short-term it is safer to disable UHS-I modes for now
    and fix later because it would be too large of a change to simply patch
    now. Therefore, disable UHS-I modes for Tegra124.

    Signed-off-by: Jon Hunter
    Acked-by: Thierry Reding
    Signed-off-by: Ulf Hansson

    Jon Hunter
     
  • Commit 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
    simultaneously") causes regressions for some platforms.

    These platforms relies on fixed mmcblk device indexes, instead of
    deploying the defacto standard with UUID/PARTUUID. In other words their
    rootfs needs to be available at hardcoded paths, like /dev/mmcblk0p2.

    Such guarantees have never been made by the kernel, but clearly the above
    commit changes the behaviour. More precisely, because of that the order
    changes of how cards becomes detected, so do their corresponding mmcblk
    device indexes.

    As the above commit significantly improves boot time for some platforms
    (magnitude of seconds), let's avoid reverting this change but instead
    restore the behaviour of how mmcblk device indexes becomes picked.

    By using the same index for the mmcblk device as for the corresponding mmc
    host device, the probe order of mmc host devices decides the index we get
    for the mmcblk device.

    For those platforms that suffers from a regression, one could expect that
    this updated behaviour should be sufficient to meet their expectations of
    "fixed" mmcblk device indexes.

    Another side effect from this change, is that the same index is used for
    the mmc host device, the mmcblk device and the mmc block queue. That
    should clarify their relationship.

    Reported-by: Peter Hurley
    Reported-by: Laszlo Fiat
    Cc: Linus Torvalds
    Fixes: 520bd7a8b415 ("mmc: core: Optimize boot time by detecting cards
    simultaneously")
    Cc:
    Signed-off-by: Ulf Hansson

    Ulf Hansson
     
  • …/daeinki/drm-exynos into drm-fixes

    fix some exynos regressions.

    * 'exynos-drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos:
    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

    Dave Airlie
     
  • some misc radeon fixes.

    * 'drm-fixes-4.6' of git://people.freedesktop.org/~agd5f/linux:
    drm/amd/amdgpu: fix irq domain remove for tonga ih
    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

    Dave Airlie
     
  • On BXT platform Host Controller and Device Controller figure as
    same PCI device but with different device function. HCD should
    not pass data to Device Controller but only to Host Controllers.
    Checking if companion device is Host Controller, otherwise skip.

    Cc:
    Signed-off-by: Robert Dobrowolski
    Acked-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Robert Dobrowolski
     
  • Add a new NO_REPORT_LUNS quirk and set it for Seagate drives with
    an usb-id of: 0bc2:331a, as these will fail to respond to a
    REPORT_LUNS command.

    Cc: stable@vger.kernel.org
    Reported-and-tested-by: David Webb
    Signed-off-by: Hans de Goede
    Acked-by: Alan Stern
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     
  • Commit 64d513ac31bd ("scsi: use host wide tags by default") causes
    the SCSI core to queue more commands then we can handle on devices with
    multiple LUNs, limit the queue depth at the scsi-host level instead of
    per slave to fix this.

    BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1315013
    Cc: stable@vger.kernel.org # 4.4.x and 4.5.x
    Signed-off-by: Hans de Goede
    Signed-off-by: Greg Kroah-Hartman

    Hans de Goede
     
  • Otherwise generic-xhci and xhci-platform which have no data get wrongly
    detected as XHCI_PLAT_TYPE_MARVELL_ARMADA by xhci_plat_type_is().

    This fixes a regression in v4.5 for STiH407 family SoC's which use the
    synopsis dwc3 IP, whereby the disable_clk error path gets taken due to
    wrongly being detected as XHCI_PLAT_TYPE_MARVELL_ARMADA and the hcd never
    gets added.

    I suspect this will also fix other dwc3 DT platforms such as Exynos,
    although I've only tested on STih410 SoC.

    Fixes: 4efb2f694114 ("usb: host: xhci-plat: add struct xhci_plat_priv")
    Cc: stable@vger.kernel.org
    Cc: gregory.clement@free-electrons.com
    Cc: yoshihiro.shimoda.uh@renesas.com
    Signed-off-by: Peter Griffin
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Peter Griffin
     
  • PCI hotpluggable xhci controllers such as some Alpine Ridge solutions will
    remove the xhci controller from the PCI bus when the last USB device is
    disconnected.

    Add a flag to indicate that the host is being removed to avoid queueing
    configure_endpoint commands for the dropped endpoints.
    For PCI hotplugged controllers this will prevent 5 second command timeouts
    For static xhci controllers the configure_endpoint command is not needed
    in the removal case as everything will be returned, freed, and the
    controller is reset.

    For now the flag is only set for PCI connected host controllers.

    Cc:
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Mathias Nyman
     
  • This patch fixes some wild pointers produced by xhci_mem_cleanup.
    These wild pointers will cause system crash if xhci_mem_cleanup()
    is called twice.

    Reported-and-tested-by: Pengcheng Li
    Signed-off-by: Lu Baolu
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Lu Baolu
     
  • This patch fixes an issue that cannot work if R-Car Gen2/3 run on
    above 4GB physical memory environment to use a quirk XHCI_NO_64BIT_SUPPORT.

    Cc:
    Signed-off-by: Yoshihiro Shimoda
    Reviewed-by: Felipe Balbi
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Yoshihiro Shimoda
     
  • On some xHCI controllers (e.g. R-Car SoCs), the AC64 bit (bit 0) of
    HCCPARAMS1 is set to 1. However, the xHCs don't support 64-bit
    address memory pointers actually. So, in this case, this driver should
    call dma_set_coherent_mask(dev, DMA_BIT_MASK(32)) in xhci_gen_setup().
    Otherwise, the xHCI controller will be died after a usb device is
    connected if it runs on above 4GB physical memory environment.

    So, this patch adds a new quirk XHCI_NO_64BIT_SUPPORT to resolve
    such an issue.

    Cc:
    Signed-off-by: Yoshihiro Shimoda
    Reviewed-by: Felipe Balbi
    Signed-off-by: Mathias Nyman
    Signed-off-by: Greg Kroah-Hartman

    Yoshihiro Shimoda