05 Dec, 2014

5 commits


04 Dec, 2014

16 commits

  • It appears that some SCHEDULE_USER (asm for schedule_user) callers
    in arch/x86/kernel/entry_64.S are called from RCU kernel context,
    and schedule_user will return in RCU user context. This causes RCU
    warnings and possible failures.

    This is intended to be a minimal fix suitable for 3.18.

    Reported-and-tested-by: Dave Jones
    Cc: Oleg Nesterov
    Cc: Frédéric Weisbecker
    Acked-by: Paul E. McKenney
    Signed-off-by: Andy Lutomirski
    Signed-off-by: Linus Torvalds

    Andy Lutomirski
     
  • Pull i2c bugfixes from Wolfram Sang:
    "A few driver bugfixes for 3.18"

    * 'i2c/for-current' of git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux:
    i2c: omap: fix i207 errata handling
    i2c: designware: prevent early stop on TX FIFO empty
    i2c: omap: fix NACK and Arbitration Lost irq handling

    Linus Torvalds
     
  • Pull PCI fix from Bjorn Helgaas:
    "This fixes a Tegra20 regression that we introduced during the v3.18
    merge window"

    * tag 'pci-v3.18-fixes-4' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
    PCI: tegra: Use physical range for I/O mapping

    Linus Torvalds
     
  • Pull devicetree bugfix from Grant Likely:
    "One more bug fix for v3.18. I debated whether or not to send you this
    merge request because we're at such a late rc. The bug isn't critical
    in that there is only one system known to be affected and the patch is
    easy to backport. The codepath is used by pretty much every DT based
    system, so there is risk a of regression (it /should/ be safe, but
    I've been bitten by stuff that should be safe before). I've had it in
    linux-next for a week and haven't received any complaints.

    I think it probably should just be merged right away rather than
    waiting for the merge window and backporting. It does fix a real bug
    and the code is theoretically safer after the change. I can't think
    of any situation where it would be dangerous to reserve the DT memory
    an extra time.

    Summary from tag:

    Single bugfix for boot failure seen in the wild. The memory reserve
    code tries to be clever about reserving the FDT, but it should just
    go ahead and reserve it unconditionally to avoid the problem of
    partial overlap described in the patch"

    * tag 'devicetree-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux:
    of/fdt: memblock_reserve /memreserve/ regions in the case of partial overlap

    Linus Torvalds
     
  • Pull block core regression fix from Jens Axboe:
    "Single fix for a regression introduced in this development cycle,
    where dm on top of dif/dix is broken. From Darrick Wong"

    * 'for-linus' of git://git.kernel.dk/linux-block:
    block: fix regression where bio_integrity_process uses wrong bio_vec iterator

    Linus Torvalds
     
  • Pull drm fixes from Dave Airlie:
    "Radeon and Nouveau fixes:

    So nouveau had a few regression introduced, Ben and Maarten finally
    tracked down the one that was causing problems on my MacBookPro, also
    nvidia gave some info on the an engine we were using incorrectly, so
    disable our use of it, and one regresion with pci hotplug affecting
    optimus users.

    Radeon has an oops fixs, sync fix, and one workaround to avoid broken
    functionality on 32-bit x86, this needs better root causing and a
    better fix, but the bandaid is a lot safer at this point"

    * 'drm-fixes' of git://people.freedesktop.org/~airlied/linux:
    drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6
    drm/radeon: Ignore RADEON_GEM_GTT_WC on 32-bit x86
    drm/radeon: sync all BOs involved in a CS v2
    nouveau: move the hotplug ignore to correct place.
    drm/nouveau/gf116: remove copy1 engine
    drm/nouveau: prevent stale fence->channel pointers, and protect with rcu
    drm/nouveau/fifo/g84-: ack non-stall interrupt before handling it

    Linus Torvalds
     
  • Pull networking fixes from David Miller:

    1) Fill in ethtool link parameters for all link types in cxgb4, from
    Hariprasad Shenai.

    2) Fix probe regressions in stmmac driver, from Huacai Chen.

    3) Network namespace leaks on errirs in rtnetlink, from Nicolas
    Dichtel.

    4) Remove erroneous BUG check which can actually trigger legitimately,
    in xen-netfront. From Seth Forshee.

    5) Validate length of IFLA_BOND_ARP_IP_TARGET netlink attributes, from
    Thomas Grag.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net:
    cxgb4: Fill in supported link mode for SFP modules
    xen-netfront: Remove BUGs on paged skb data which crosses a page boundary
    sh_eth: Fix sleeping function called from invalid context
    stmmac: platform: Move plat_dat checking earlier
    sh_eth: Fix skb alloc size and alignment adjust rule.
    rtnetlink: release net refcnt on error in do_setlink()
    bond: Check length of IFLA_BOND_ARP_IP_TARGET attributes

    Linus Torvalds
     
  • Pull keyring/nfs fixes from James Morris:
    "From David Howells:

    The first one fixes the handling of maximum buffer size for key
    descriptions, fixing the size at 4095 + NUL char rather than whatever
    PAGE_SIZE happens to be and permits you to read back the full
    description without it getting clipped because some extra information
    got prepended.

    The second and third fix a bug in NFS idmapper handling whereby a key
    representing a mapping between an id and a name expires and causing
    EKEYEXPIRED to be seen internally in NFS (which prevents the mapping
    from happening) rather than re-looking up the mapping"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security:
    KEYS: request_key() should reget expired keys rather than give EKEYEXPIRED
    KEYS: Simplify KEYRING_SEARCH_{NO,DO}_STATE_CHECK flags
    KEYS: Fix the size of the key description passed to/from userspace

    Linus Torvalds
     
  • Merge misc fixes from Andrew Morton:
    "10 fixes"

    * emailed patches from Andrew Morton :
    slab: fix nodeid bounds check for non-contiguous node IDs
    lib/genalloc.c: export devm_gen_pool_create() for modules
    mm: fix anon_vma_clone() error treatment
    mm: fix swapoff hang after page migration and fork
    fat: fix oops on corrupted vfat fs
    ipc/sem.c: fully initialize sem_array before making it visible
    drivers/input/evdev.c: don't kfree() a vmalloc address
    mm/vmpressure.c: fix race in vmpressure_work_fn()
    mm: frontswap: invalidate expired data on a dup-store failure
    mm: do not overwrite reserved pages counter at show_mem()

    Linus Torvalds
     
  • The bounds check for nodeid in ____cache_alloc_node gives false
    positives on machines where the node IDs are not contiguous, leading to
    a panic at boot time. For example, on a POWER8 machine the node IDs are
    typically 0, 1, 16 and 17. This means that num_online_nodes() returns
    4, so when ____cache_alloc_node is called with nodeid = 16 the VM_BUG_ON
    triggers, like this:

    kernel BUG at /home/paulus/kernel/kvm/mm/slab.c:3079!
    Call Trace:
    .____cache_alloc_node+0x5c/0x270 (unreliable)
    .kmem_cache_alloc_node_trace+0xdc/0x360
    .init_list+0x3c/0x128
    .kmem_cache_init+0x1dc/0x258
    .start_kernel+0x2a0/0x568
    start_here_common+0x20/0xa8

    To fix this, we instead compare the nodeid with MAX_NUMNODES, and
    additionally make sure it isn't negative (since nodeid is an int). The
    check is there mainly to protect the array dereference in the get_node()
    call in the next line, and the array being dereferenced is of size
    MAX_NUMNODES. If the nodeid is in range but invalid (for example if the
    node is off-line), the BUG_ON in the next line will catch that.

    Fixes: 14e50c6a9bc2 ("mm: slab: Verify the nodeid passed to ____cache_alloc_node")
    Signed-off-by: Paul Mackerras
    Reviewed-by: Yasuaki Ishimatsu
    Reviewed-by: Pekka Enberg
    Acked-by: David Rientjes
    Cc: Christoph Lameter
    Cc: Joonsoo Kim
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Mackerras
     
  • Modules can use this function for creating pool.

    Signed-off-by: Michal Simek
    Acked-by: Lad, Prabhakar
    Cc: Laura Abbott
    Cc: Olof Johansson
    Cc: Catalin Marinas
    Cc: Will Deacon
    Cc: Vladimir Zapolskiy
    Cc: Philipp Zabel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Michal Simek
     
  • Andrew Morton noticed that the error return from anon_vma_clone() was
    being dropped and replaced with -ENOMEM (which is not itself a bug
    because the only error return value from anon_vma_clone() is -ENOMEM).

    I did an audit of callers of anon_vma_clone() and discovered an actual
    bug where the error return was being lost. In __split_vma(), between
    Linux 3.11 and 3.12 the code was changed so the err variable is used
    before the call to anon_vma_clone() and the default initial value of
    -ENOMEM is overwritten. So a failure of anon_vma_clone() will return
    success since err at this point is now zero.

    Below is a patch which fixes this bug and also propagates the error
    return value from anon_vma_clone() in all cases.

    Fixes: ef0855d334e1 ("mm: mempolicy: turn vma_set_policy() into vma_dup_policy()")
    Signed-off-by: Daniel Forrest
    Reviewed-by: Michal Hocko
    Cc: Konstantin Khlebnikov
    Cc: Andrea Arcangeli
    Cc: Rik van Riel
    Cc: Tim Hartrick
    Cc: Hugh Dickins
    Cc: Michel Lespinasse
    Cc: Vlastimil Babka
    Cc: [3.12+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daniel Forrest
     
  • I've been seeing swapoff hangs in recent testing: it's cycling around
    trying unsuccessfully to find an mm for some remaining pages of swap.

    I have been exercising swap and page migration more heavily recently,
    and now notice a long-standing error in copy_one_pte(): it's trying to
    add dst_mm to swapoff's mmlist when it finds a swap entry, but is doing
    so even when it's a migration entry or an hwpoison entry.

    Which wouldn't matter much, except it adds dst_mm next to src_mm,
    assuming src_mm is already on the mmlist: which may not be so. Then if
    pages are later swapped out from dst_mm, swapoff won't be able to find
    where to replace them.

    There's already a !non_swap_entry() test for stats: move that up before
    the swap_duplicate() and the addition to mmlist.

    Signed-off-by: Hugh Dickins
    Cc: Kelley Nielsen
    Cc: [2.6.18+]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Hugh Dickins
     
  • a) don't bother with ->d_time for positives - we only check it for
    negatives anyway.

    b) make sure to set it at unlink and rmdir time - at *that* point
    soon-to-be negative dentry matches then-current directory contents

    c) don't go into renaming of old alias in vfat_lookup() unless it
    has the same parent (which it will, unless we are seeing corrupted
    image)

    [hirofumi@mail.parknet.co.jp: make change minimum, don't call d_move() for dir]
    Signed-off-by: Al Viro
    Signed-off-by: OGAWA Hirofumi
    Cc: [3.17.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Al Viro
     
  • ipc_addid() makes a new ipc identifier visible to everyone. New objects
    start as locked, so that the caller can complete the initialization
    after the call. Within struct sem_array, at least sma->sem_base and
    sma->sem_nsems are accessed without any locks, therefore this approach
    doesn't work.

    Thus: Move the ipc_addid() to the end of the initialization.

    Signed-off-by: Manfred Spraul
    Reported-by: Rik van Riel
    Acked-by: Rik van Riel
    Acked-by: Davidlohr Bueso
    Acked-by: Rafael Aquini
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Manfred Spraul
     
  • If kzalloc() failed and then evdev_open_device() fails, evdev_open()
    will pass a vmalloc'ed pointer to kfree.

    This might fix https://bugzilla.kernel.org/show_bug.cgi?id=88401, where
    there was a crash in kfree().

    Reported-by: Christian Casteyde
    Belatedly-Acked-by: Dmitry Torokhov
    Cc: Henrik Rydberg
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     

03 Dec, 2014

9 commits

  • Signed-off-by: Hariprasad Shenai
    Signed-off-by: David S. Miller

    Hariprasad Shenai
     
  • These BUGs can be erroneously triggered by frags which refer to
    tail pages within a compound page. The data in these pages may
    overrun the hardware page while still being contained within the
    compound page, but since compound_order() evaluates to 0 for tail
    pages the assertion fails. The code already iterates through
    subsequent pages correctly in this scenario, so the BUGs are
    unnecessary and can be removed.

    Fixes: f36c374782e4 ("xen/netfront: handle compound page fragments on transmit")
    Cc: # 3.7+
    Signed-off-by: Seth Forshee
    Reviewed-by: David Vrabel
    Signed-off-by: David S. Miller

    Seth Forshee
     
  • In some android devices, there will be a "divide by zero" exception.
    vmpr->scanned could be zero before spin_lock(&vmpr->sr_lock).

    Addresses https://bugzilla.kernel.org/show_bug.cgi?id=88051

    [akpm@linux-foundation.org: neaten]
    Reported-by: ji_ang
    Cc: Anton Vorontsov
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • If a frontswap dup-store failed, it should invalidate the expired page
    in the backend, or it could trigger some data corruption issue.
    Such as:
    1. use zswap as the frontswap backend with writeback feature
    2. store a swap page(version_1) to entry A, success
    3. dup-store a newer page(version_2) to the same entry A, fail
    4. use __swap_writepage() write version_2 page to swapfile, success
    5. zswap do shrink, writeback version_1 page to swapfile
    6. version_2 page is overwrited by version_1, data corrupt.

    This patch fixes this issue by invalidating expired data immediately
    when meet a dup-store failure.

    Signed-off-by: Weijie Yang
    Cc: Konrad Rzeszutek Wilk
    Cc: Seth Jennings
    Cc: Dan Streetman
    Cc: Minchan Kim
    Cc: Bob Liu
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Weijie Yang
     
  • Minor fixlet to perform the reserved pages counter aggregation for each
    node, at show_mem()

    Signed-off-by: Rafael Aquini
    Acked-by: Rik van Riel
    Acked-by: Johannes Weiner
    Acked-by: Yasuaki Ishimatsu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Rafael Aquini
     
  • A few more small fixes for 3.18.

    * 'drm-fixes-3.18' of git://people.freedesktop.org/~agd5f/linux:
    drm/radeon: kernel panic in drm_calc_vbltimestamp_from_scanoutpos with 3.18.0-rc6
    drm/radeon: Ignore RADEON_GEM_GTT_WC on 32-bit x86
    drm/radeon: sync all BOs involved in a CS v2

    Dave Airlie
     
  • I was unable too boot 3.18.0-rc6 because of the following kernel
    panic in drm_calc_vbltimestamp_from_scanoutpos():

    [drm] Initialized drm 1.1.0 20060810
    [drm] radeon kernel modesetting enabled.
    [drm] initializing kernel modesetting (RV100 0x1002:0x515E 0x15D9:0x8080).
    [drm] register mmio base: 0xC8400000
    [drm] register mmio size: 65536
    radeon 0000:0b:01.0: VRAM: 128M 0x00000000D0000000 - 0x00000000D7FFFFFF (16M used)
    radeon 0000:0b:01.0: GTT: 512M 0x00000000B0000000 - 0x00000000CFFFFFFF
    [drm] Detected VRAM RAM=128M, BAR=128M
    [drm] RAM width 16bits DDR
    [TTM] Zone kernel: Available graphics memory: 3829346 kiB
    [TTM] Zone dma32: Available graphics memory: 2097152 kiB
    [TTM] Initializing pool allocator
    [TTM] Initializing DMA pool allocator
    [drm] radeon: 16M of VRAM memory ready
    [drm] radeon: 512M of GTT memory ready.
    [drm] GART: num cpu pages 131072, num gpu pages 131072
    [drm] PCI GART of 512M enabled (table at 0x0000000037880000).
    radeon 0000:0b:01.0: WB disabled
    radeon 0000:0b:01.0: fence driver on ring 0 use gpu addr 0x00000000b0000000 and cpu addr 0xffff8800bbbfa000
    [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).
    [drm] Driver supports precise vblank timestamp query.
    [drm] radeon: irq initialized.
    [drm] Loading R100 Microcode
    radeon 0000:0b:01.0: Direct firmware load for radeon/R100_cp.bin failed with error -2
    radeon_cp: Failed to load firmware "radeon/R100_cp.bin"
    [drm:r100_cp_init] *ERROR* Failed to load firmware!
    radeon 0000:0b:01.0: failed initializing CP (-2).
    radeon 0000:0b:01.0: Disabling GPU acceleration
    [drm] radeon: cp finalized
    BUG: unable to handle kernel NULL pointer dereference at 000000000000025c
    IP: [] drm_calc_vbltimestamp_from_scanoutpos+0x4b/0x320
    PGD 0
    Oops: 0000 [#1] SMP
    Modules linked in:
    CPU: 1 PID: 1 Comm: swapper/0 Not tainted 3.18.0-rc6-4-default #2649
    Hardware name: Supermicro X7DB8/X7DB8, BIOS 6.00 07/26/2006
    task: ffff880234da2010 ti: ffff880234da4000 task.ti: ffff880234da4000
    RIP: 0010:[] [] drm_calc_vbltimestamp_from_scanoutpos+0x4b/0x320
    RSP: 0000:ffff880234da7918 EFLAGS: 00010086
    RAX: ffffffff81557890 RBX: 0000000000000000 RCX: ffff880234da7a48
    RDX: ffff880234da79f4 RSI: 0000000000000000 RDI: ffff880232e15000
    RBP: ffff880234da79b8 R08: 0000000000000000 R09: 0000000000000000
    R10: 000000000000000a R11: 0000000000000001 R12: ffff880232dda1c0
    R13: ffff880232e1518c R14: 0000000000000292 R15: ffff880232e15000
    FS: 0000000000000000(0000) GS:ffff88023fc40000(0000) knlGS:0000000000000000
    CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b
    CR2: 000000000000025c CR3: 0000000002014000 CR4: 00000000000007e0
    Stack:
    ffff880234da79d8 0000000000000286 ffff880232dcbc00 0000000000002480
    ffff880234da7958 0000000000000296 ffff880234da7998 ffffffff8151b51d
    ffff880234da7a48 0000000032dcbeb0 ffff880232dcbc00 ffff880232dcbc58
    Call Trace:
    [] ? drm_vma_offset_remove+0x1d/0x110
    [] radeon_get_vblank_timestamp_kms+0x38/0x60
    [] ? ttm_bo_release_list+0xba/0x180
    [] drm_get_last_vbltimestamp+0x41/0x70
    [] vblank_disable_and_save+0x73/0x1d0
    [] ? try_to_del_timer_sync+0x4f/0x70
    [] drm_vblank_cleanup+0x65/0xa0
    [] radeon_irq_kms_fini+0x1a/0x70
    [] r100_init+0x26e/0x410
    [] radeon_device_init+0x7ae/0xb50
    [] radeon_driver_load_kms+0x8f/0x210
    [] drm_dev_register+0xb5/0x110
    [] drm_get_pci_dev+0x8f/0x200
    [] radeon_pci_probe+0xad/0xe0
    [] local_pci_probe+0x45/0xa0
    [] pci_device_probe+0xd1/0x130
    [] driver_probe_device+0x12d/0x3e0
    [] __driver_attach+0x9b/0xa0
    [] ? __device_attach+0x40/0x40
    [] bus_for_each_dev+0x63/0xa0
    [] driver_attach+0x1e/0x20
    [] bus_add_driver+0x180/0x240
    [] driver_register+0x64/0xf0
    [] __pci_register_driver+0x4c/0x50
    [] drm_pci_init+0xf5/0x120
    [] ? ttm_init+0x6a/0x6a
    [] radeon_init+0x97/0xb5
    [] do_one_initcall+0xbc/0x1f0
    [] ? __wake_up+0x48/0x60
    [] kernel_init_freeable+0x18a/0x215
    [] ? initcall_blacklist+0xc0/0xc0
    [] ? rest_init+0x80/0x80
    [] kernel_init+0xe/0xf0
    [] ret_from_fork+0x7c/0xb0
    [] ? rest_init+0x80/0x80
    Code: 45 ac 0f 88 a8 01 00 00 3b b7 d0 01 00 00 49 89 ff 0f 83 99 01 00 00 48 8b 47 20 48 8b 80 88 00 00 00 48 85 c0 0f 84 cd 01 00 00 8b b1 5c 02 00 00 41 8b 89 58 02 00 00 89 75 98 41 8b b1 60
    RIP [] drm_calc_vbltimestamp_from_scanoutpos+0x4b/0x320
    RSP
    CR2: 000000000000025c
    ---[ end trace ad2c0aadf48e2032 ]---
    Kernel panic - not syncing: Attempted to kill init! exitcode=0x00000009

    It has helped me to add a NULL pointer check that was suggested at
    http://lists.freedesktop.org/archives/dri-devel/2014-October/070663.html

    I am not familiar with the code. But the change looks sane
    and we need something fast at this stage of 3.18 development.

    Suggested-by: Helge Deller
    Signed-off-by: Petr Mladek
    Tested-by: Petr Mladek
    Signed-off-by: Alex Deucher
    Cc: stable@vger.kernel.org

    Petr Mladek
     
  • Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=84627
    Signed-off-by: Michel Dänzer
    Signed-off-by: Alex Deucher
    Cc: stable@vger.kernel.org

    Michel Dänzer
     
  • Not just the userspace relocs, otherwise we won't wait
    for a swapped out page tables to be swapped in again.

    v2: rebased on Alex current drm-fixes-3.18

    Signed-off-by: Christian König
    Cc: stable@vger.kernel.org
    Signed-off-by: Alex Deucher

    Christian König
     

02 Dec, 2014

10 commits

  • bio integrity handling is broken on a system with LVM layered atop a
    DIF/DIX SCSI drive because device mapper clones the bio, modifies the
    clone, and sends the clone to the lower layers for processing.
    However, the clone bio has bi_vcnt == 0, which means that when the sd
    driver calls bio_integrity_process to attach DIX data, the
    for_each_segment_all() call (which uses bi_vcnt) returns immediately
    and random garbage is sent to the disk on a disk write. The disk of
    course returns an error.

    Therefore, teach bio_integrity_process() to use bio_for_each_segment()
    to iterate the bio_vecs, since the per-bio iterator tracks which
    bio_vecs are associated with that particular bio. The integrity
    handling code is effectively part of the "driver" (it's not the bio
    owner), so it must use the correct iterator function.

    v2: Fix a compiler warning about abandoned local variables. This
    patch supersedes "block: bio_integrity_process uses wrong bio_vec
    iterator". Patch applies against 3.18-rc6.

    Signed-off-by: Darrick J. Wong
    Acked-by: Martin K. Petersen
    Signed-off-by: Jens Axboe

    Darrick J. Wong
     
  • Otherwise we'll have backtraces in assert_panel_unlocked because the
    BIOS locks the register. In the reporter's case this regression was
    introduced in

    commit c31407a3672aaebb4acddf90944a114fa5c8af7b
    Author: Chris Wilson
    Date: Thu Oct 18 21:07:01 2012 +0100

    drm/i915: Add no-lvds quirk for Supermicro X7SPA-H

    Reported-by: Alexey Orishko
    Cc: Alexey Orishko
    Cc: stable@vger.kernel.org
    Cc: Chris Wilson
    Cc: Francois Tigeot
    Signed-off-by: Daniel Vetter
    Tested-by: Alexey Orishko
    Signed-off-by: Jani Nikula

    Daniel Vetter
     
  • Apparently PCH fifo underruns are tricky, we have plenty reports that
    we see the occasional underrun (especially at boot-up).

    So for a change let's see what happens when we don't re-enable pch
    fifo underrun reporting when the pipe is disabled. This means that the
    kernel can't catch pch fifo underruns when they happen (except when
    all pipes are on on the pch). But we'll still catch underruns when
    disabling the pipe again. So not a terrible reduction in test
    coverage.

    Since the DRM_ERROR is new and hence a regression plan B would be to
    revert it back to a debug output. Which would be a lot worse than this
    hack for underrun test coverage in the wild. See the referenced
    discussions for more.

    References: http://mid.gmane.org/CA+gsUGRfGe3t4NcjdeA=qXysrhLY3r4CEu7z4bjTwxi1uOfy+g@mail.gmail.com
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=85898
    References: https://bugs.freedesktop.org/show_bug.cgi?id=85898
    References: https://bugs.freedesktop.org/show_bug.cgi?id=86233
    References: https://bugs.freedesktop.org/show_bug.cgi?id=86478
    Signed-off-by: Daniel Vetter
    Tested-by: lu hua
    Reviewed-by: Paulo Zanoni
    Cc: stable@vger.kernel.org
    Signed-off-by: Jani Nikula

    Daniel Vetter
     
  • …/dhowells/linux-fs into for-linus

    James Morris
     
  • Introduced in b440bde74f, however it was added to
    the wrong function in nouveau.

    https://bugzilla.kernel.org/show_bug.cgi?id=86011
    Cc: Bjorn Helgaas
    CC: stable@vger.kernel.org # v3.15+
    Signed-off-by: Dave Airlie

    Dave Airlie
     
  • Just a couple of fixes for the fallout from the fence rework.

    * 'linux-3.18' of git://anongit.freedesktop.org/git/nouveau/linux-2.6:
    drm/nouveau/gf116: remove copy1 engine
    drm/nouveau: prevent stale fence->channel pointers, and protect with rcu
    drm/nouveau/fifo/g84-: ack non-stall interrupt before handling it

    Dave Airlie
     
  • Indications are that no GF116's actually have a copy engine there, but
    actually have the decompression engine. This engine can be made to do
    copies, but that should be done separately.

    Unclear why this didn't turn up on all GF116's, but perhaps the
    non-mobile ones came with enough VRAM to not trigger ttm migrations in
    test scenarios.

    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=85465
    Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=59168
    Cc: stable@vger.kernel.org
    Signed-off-by: Ilia Mirkin
    Signed-off-by: Ben Skeggs

    Ilia Mirkin
     
  • Tested-by: Alexandre Courbot
    Signed-off-by: Ben Skeggs

    Maarten Lankhorst
     
  • Closes a very unlikely race that can occur if another NonStallInterrupt
    method passes between checking fences and acking the previous interrupt.

    With this change, the interrupt will re-fire under such conditions.

    Tested-by: Tobias Klausmann
    Signed-off-by: Ben Skeggs

    Ben Skeggs
     
  • Pull ext4 bugfix from Ted Ts'o:
    "Fix an ext4 metadata checksum regression introduced in v3.18-rc3"

    * tag 'ext4_for_linus_urgent' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4:
    jbd2: fix regression where we fail to initialize checksum seed when loading

    Linus Torvalds