Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

sync with upstream. #1

Merged
merged 61 commits into from
Aug 11, 2016
Merged

sync with upstream. #1

merged 61 commits into from
Aug 11, 2016

Commits on Jul 29, 2016

  1. drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request …

    …on SKL
    
    Bspec tells us to keep bashing the PCU for up to 3ms when trying to
    inform it about an upcoming change in the cdclk frequency. Currently
    we only keep at it for 15*10usec (+ whatever delays gets added by
    the sandybridge_pcode_read() itself). Let's change the limit to 3ms.
    
    I decided to keep 10 usec delay per iteration for now, even though
    the spec doesn't really tell us to do that.
    
    Cc: stable@vger.kernel.org
    Fixes: 5d96d8a ("drm/i915/skl: Deinit/init the display at suspend/resume")
    Cc: David Weinehall <david.weinehall@intel.com>
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1468416723-23440-1-git-send-email-ville.syrjala@linux.intel.com
    Tested-by: David Weinehall <david.weinehall@intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    (cherry picked from commit 848496e)
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    vsyrjala authored and danvet committed Jul 29, 2016
    Configuration menu
    Copy the full SHA
    3b2c171 View commit details
    Browse the repository at this point in the history
  2. drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB

    SNB (and IVB too I suppose) starts to misbehave if the GPU gets stuck
    in an infinite batch buffer loop. The GPU apparently hogs something
    critical and CPUs start to lose interrupts and whatnot. We can keep
    the system limping along by unmasking some interrupts in
    GEN6_PMINTRMSK. The EI up interrupt has been previously chosen for
    that task, so let's never mask it.
    
    v2: s/gen6_rps_pm_mask/gen6_sanitize_rps_pm_mask/ (Chris)
    
    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=93122
    Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Link: http://patchwork.freedesktop.org/patch/msgid/1464014568-4529-1-git-send-email-ville.syrjala@linux.intel.com
    Cc: stable@vger.kernel.org
    (cherry picked from commit 12c100b)
    Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    vsyrjala authored and danvet committed Jul 29, 2016
    Configuration menu
    Copy the full SHA
    a7b4667 View commit details
    Browse the repository at this point in the history

Commits on Aug 1, 2016

  1. Btrfs: add missing check for writeback errors on fsync

    When we start an fsync we start ordered extents for all delalloc ranges.
    However before attempting to log the inode, we only wait for those ordered
    extents if we are not doing a full sync (bit BTRFS_INODE_NEEDS_FULL_SYNC
    is set in the inode's flags). This means that if an ordered extent
    completes with an IO error before we check if we can skip logging the
    inode, we will not catch and report the IO error to user space. This is
    because on an IO error, when the ordered extent completes we do not
    update the inode, so if the inode was not previously updated by the
    current transaction we end up not logging it through calls to fsync and
    therefore not check its mapping flags for the presence of IO errors.
    
    Fix this by checking for errors in the flags of the inode's mapping when
    we notice we can skip logging the inode.
    
    This caused sporadic failures in the test generic/331 (which explicitly
    tests for IO errors during an fsync call).
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Reviewed-by: Liu Bo <bo.li.liu@oracle.com>
    fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    0596a90 View commit details
    Browse the repository at this point in the history
  2. Btrfs: send, fix failure to move directories with the same name around

    When doing an incremental send we can end up not moving directories that
    have the same name. This happens when the same parent directory has
    different child directories with the same name in the parent and send
    snapshots.
    
    For example, consider the following scenario:
    
      Parent snapshot:
    
      .                   (ino 256)
      |---- d/            (ino 257)
      |     |--- p1/      (ino 258)
      |
      |---- p1/           (ino 259)
    
      Send snapshot:
    
      .                    (ino 256)
      |--- d/              (ino 257)
           |--- p1/        (ino 259)
                 |--- p1/  (ino 258)
    
    The directory named "d" (inode 257) has in both snapshots an entry with
    the name "p1" but it refers to different inodes in both snapshots (inode
    258 in the parent snapshot and inode 259 in the send snapshot). When
    attempting to move inode 258, the operation is delayed because its new
    parent, inode 259, was not yet moved/renamed (as the stream is currently
    processing inode 258). Then when processing inode 259, we also end up
    delaying its move/rename operation so that it happens after inode 258 is
    moved/renamed. This decision to delay the move/rename rename operation
    of inode 259 is due to the fact that the new parent inode (257) still
    has inode 258 as its child, which has the same name has inode 259. So
    we end up with inode 258 move/rename operation waiting for inode's 259
    move/rename operation, which in turn it waiting for inode's 258
    move/rename. This results in ending the send stream without issuing
    move/rename operations for inodes 258 and 259 and generating the
    following warnings in syslog/dmesg:
    
    [148402.979747] ------------[ cut here ]------------
    [148402.980588] WARNING: CPU: 14 PID: 4117 at fs/btrfs/send.c:6177 btrfs_ioctl_send+0xe03/0xe51 [btrfs]
    [148402.981928] Modules linked in: btrfs crc32c_generic xor raid6_pq acpi_cpufreq tpm_tis ppdev tpm parport_pc psmouse parport sg pcspkr i2c_piix4 i2c_core evdev processor serio_raw button loop autofs4 ext4 crc16 jbd2 mbcache sr_mod cdrom sd_mod ata_generic virtio_scsi ata_piix libata virtio_pci virtio_ring virtio e1000 scsi_mod floppy [last unloaded: btrfs]
    [148402.986999] CPU: 14 PID: 4117 Comm: btrfs Tainted: G        W       4.6.0-rc7-btrfs-next-31+ #1
    [148402.988136] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014
    [148402.988136]  0000000000000000 ffff88022139fca8 ffffffff8126b42c 0000000000000000
    [148402.988136]  0000000000000000 ffff88022139fce8 ffffffff81052b14 000018212139fac8
    [148402.988136]  ffff88022b0db400 0000000000000000 0000000000000001 0000000000000000
    [148402.988136] Call Trace:
    [148402.988136]  [<ffffffff8126b42c>] dump_stack+0x67/0x90
    [148402.988136]  [<ffffffff81052b14>] __warn+0xc2/0xdd
    [148402.988136]  [<ffffffff81052beb>] warn_slowpath_null+0x1d/0x1f
    [148402.988136]  [<ffffffffa04bc831>] btrfs_ioctl_send+0xe03/0xe51 [btrfs]
    [148402.988136]  [<ffffffffa048b358>] btrfs_ioctl+0x14f/0x1f81 [btrfs]
    [148402.988136]  [<ffffffff8108e456>] ? arch_local_irq_save+0x9/0xc
    [148402.988136]  [<ffffffff8108eb51>] ? __lock_is_held+0x3c/0x57
    [148402.988136]  [<ffffffff8118da05>] vfs_ioctl+0x18/0x34
    [148402.988136]  [<ffffffff8118e00c>] do_vfs_ioctl+0x550/0x5be
    [148402.988136]  [<ffffffff81196f0c>] ? __fget+0x6b/0x77
    [148402.988136]  [<ffffffff81196fa1>] ? __fget_light+0x62/0x71
    [148402.988136]  [<ffffffff8118e0d1>] SyS_ioctl+0x57/0x79
    [148402.988136]  [<ffffffff8149e025>] entry_SYSCALL_64_fastpath+0x18/0xa8
    [148402.988136]  [<ffffffff8108e89d>] ? trace_hardirqs_off_caller+0x3f/0xaa
    [148403.011373] ---[ end trace a4539270c8056f8b ]---
    [148403.012296] ------------[ cut here ]------------
    [148403.013071] WARNING: CPU: 14 PID: 4117 at fs/btrfs/send.c:6194 btrfs_ioctl_send+0xe19/0xe51 [btrfs]
    [148403.014447] Modules linked in: btrfs crc32c_generic xor raid6_pq acpi_cpufreq tpm_tis ppdev tpm parport_pc psmouse parport sg pcspkr i2c_piix4 i2c_core evdev processor serio_raw button loop autofs4 ext4 crc16 jbd2 mbcache sr_mod cdrom sd_mod ata_generic virtio_scsi ata_piix libata virtio_pci virtio_ring virtio e1000 scsi_mod floppy [last unloaded: btrfs]
    [148403.019708] CPU: 14 PID: 4117 Comm: btrfs Tainted: G        W       4.6.0-rc7-btrfs-next-31+ #1
    [148403.020104] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014
    [148403.020104]  0000000000000000 ffff88022139fca8 ffffffff8126b42c 0000000000000000
    [148403.020104]  0000000000000000 ffff88022139fce8 ffffffff81052b14 000018322139fac8
    [148403.020104]  ffff88022b0db400 0000000000000000 0000000000000001 0000000000000000
    [148403.020104] Call Trace:
    [148403.020104]  [<ffffffff8126b42c>] dump_stack+0x67/0x90
    [148403.020104]  [<ffffffff81052b14>] __warn+0xc2/0xdd
    [148403.020104]  [<ffffffff81052beb>] warn_slowpath_null+0x1d/0x1f
    [148403.020104]  [<ffffffffa04bc847>] btrfs_ioctl_send+0xe19/0xe51 [btrfs]
    [148403.020104]  [<ffffffffa048b358>] btrfs_ioctl+0x14f/0x1f81 [btrfs]
    [148403.020104]  [<ffffffff8108e456>] ? arch_local_irq_save+0x9/0xc
    [148403.020104]  [<ffffffff8108eb51>] ? __lock_is_held+0x3c/0x57
    [148403.020104]  [<ffffffff8118da05>] vfs_ioctl+0x18/0x34
    [148403.020104]  [<ffffffff8118e00c>] do_vfs_ioctl+0x550/0x5be
    [148403.020104]  [<ffffffff81196f0c>] ? __fget+0x6b/0x77
    [148403.020104]  [<ffffffff81196fa1>] ? __fget_light+0x62/0x71
    [148403.020104]  [<ffffffff8118e0d1>] SyS_ioctl+0x57/0x79
    [148403.020104]  [<ffffffff8149e025>] entry_SYSCALL_64_fastpath+0x18/0xa8
    [148403.020104]  [<ffffffff8108e89d>] ? trace_hardirqs_off_caller+0x3f/0xaa
    [148403.038981] ---[ end trace a4539270c8056f8c ]---
    
    There's another issue caused by similar (but more complex) changes in the
    directory hierarchy that makes move/rename operations fail, described with
    the following example:
    
      Parent snapshot:
    
      .
      |---- a/                                                   (ino 262)
      |     |---- c/                                             (ino 268)
      |
      |---- d/                                                   (ino 263)
            |---- ance/                                          (ino 267)
                    |---- e/                                     (ino 264)
                    |---- f/                                     (ino 265)
                    |---- ance/                                  (ino 266)
    
      Send snapshot:
    
      .
      |---- a/                                                   (ino 262)
      |---- c/                                                   (ino 268)
      |     |---- ance/                                          (ino 267)
      |
      |---- d/                                                   (ino 263)
      |     |---- ance/                                          (ino 266)
      |
      |---- f/                                                   (ino 265)
            |---- e/                                             (ino 264)
    
    When the inode 265 is processed, the path for inode 267 is computed, which
    at that time corresponds to "d/ance", and it's stored in the names cache.
    Later on when processing inode 266, we end up orphanizing (renaming to a
    name matching the pattern o<ino>-<gen>-<seq>) inode 267 because it has
    the same name as inode 266 and it's currently a child of the new parent
    directory (inode 263) for inode 266. After the orphanization and while we
    are still processing inode 266, a rename operation for inode 266 is
    generated. However the source path for that rename operation is incorrect
    because it ends up using the old, pre-orphanization, name of inode 267.
    The no longer valid name for inode 267 was previously cached when
    processing inode 265 and it remains usable and considered valid until
    the inode currently being processed has a number greater than 267.
    This resulted in the receiving side failing with the following error:
    
      ERROR: rename d/ance/ance -> d/ance failed: No such file or directory
    
    So fix these issues by detecting such circular dependencies for rename
    operations and by clearing the cached name of an inode once the inode
    is orphanized.
    
    A test case for fstests will follow soon.
    
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    [Rewrote change log to be more detailed and organized, and improved
     comments]
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Robbie Ko authored and fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    801bec3 View commit details
    Browse the repository at this point in the history
  3. Btrfs: send, add missing error check for calls to path_loop()

    The function path_loop() can return a negative integer, signaling an
    error, 0 if there's no path loop and 1 if there's a path loop. We were
    treating any non zero values as meaning that a path loop exists. Fix
    this by explicitly checking for errors and gracefully return them to
    user space.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    7969e77 View commit details
    Browse the repository at this point in the history
  4. Btrfs: incremental send, fix invalid paths for rename operations

    Example scenario:
    
      Parent snapshot:
    
      .                                                       (ino 277)
      |---- tmp/                                              (ino 278)
      |---- pre/                                              (ino 280)
      |      |---- wait_dir/                                  (ino 281)
      |
      |---- desc/                                             (ino 282)
      |---- ance/                                             (ino 283)
      |       |---- below_ance/                               (ino 279)
      |
      |---- other_dir/                                        (ino 284)
    
      Send snapshot:
    
      .                                                       (ino 277)
      |---- tmp/                                              (ino 278)
             |---- other_dir/                                 (ino 284)
                       |---- below_ance/                      (ino 279)
                       |            |---- pre/                (ino 280)
                       |
                       |---- wait_dir/                        (ino 281)
                                  |---- desc/                 (ino 282)
                                          |---- ance/         (ino 283)
    
    While computing the send stream the following steps happen:
    
    1) While processing inode 279 we end up delaying its rename operation
       because its new parent in the send snapshot, inode 284, was not
       yet processed and therefore not yet renamed;
    
    2) Later when processing inode 280 we end up renaming it immediately to
       "ance/below_once/pre" and not delay its rename operation because its
       new parent (inode 279 in the send snapshot) has its rename operation
       delayed and inode 280 is not an encestor of inode 279 (its parent in
       the send snapshot) in the parent snapshot;
    
    3) When processing inode 281 we end up delaying its rename operation
       because its new parent in the send snapshot, inode 284, was not yet
       processed and therefore not yet renamed;
    
    4) When processing inode 282 we do not delay its rename operation because
       its parent in the send snapshot, inode 281, already has its own rename
       operation delayed and our current inode (282) is not an ancestor of
       inode 281 in the parent snapshot. Therefore inode 282 is renamed to
       "ance/below_ance/pre/wait_dir";
    
    5) When processing inode 283 we realize that we can rename it because one
       of its ancestors in the send snapshot, inode 281, has its rename
       operation delayed and inode 283 is not an ancestor of inode 281 in the
       parent snapshot. So a rename operation to rename inode 283 to
       "ance/below_ance/pre/wait_dir/desc/ance" is issued. This path is
       invalid due to a missing path building loop that was undetected by
       the incremental send implementation, as inode 283 ends up getting
       included twice in the path (once with its path in the parent snapshot).
       Therefore its rename operation must wait before the ancestor inode 284
       is renamed.
    
    Fix this by not terminating the rename dependency checks when we find an
    ancestor, in the send snapshot, that has its rename operation delayed. So
    that we continue doing the same checks if the current inode is not an
    ancestor, in the parent snapshot, of an ancestor in the send snapshot we
    are processing in the loop.
    
    The problem and reproducer were reported by Robbie Ko, as part of a patch
    titled "Btrfs: incremental send, avoid ancestor rename to descendant".
    However the fix was unnecessarily complicated and can be addressed with
    much less code and effort.
    
    Reported-by: Robbie Ko <robbieko@synology.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    4122ea6 View commit details
    Browse the repository at this point in the history
  5. Btrfs: incremental send, fix premature rmdir operations

    Under certain situations, an incremental send operation can contain
    a rmdir operation that will make the receiving end fail when attempting
    to execute it, because the target directory is not yet empty.
    
    Consider the following example:
    
      Parent snapshot:
    
      .                                                             (ino 256)
      |--- a/                                                       (ino 257)
      |    |--- c/                                                  (ino 260)
      |
      |--- del/                                                     (ino 259)
            |--- tmp/                                               (ino 258)
            |--- x/                                                 (ino 261)
    
      Send snapshot:
    
      .                                                             (ino 256)
      |--- a/                                                       (ino 257)
      |    |--- x/                                                  (ino 261)
      |
      |--- c/                                                       (ino 260)
           |--- tmp/                                                (ino 258)
    
    1) When processing inode 258, we delay its rename operation because inode
       260 is its new parent in the send snapshot and it was not yet renamed
       (since 260 > 258, that is, beyond the current progress);
    
    2) When processing inode 259, we realize we can not yet send an rmdir
       operation (against inode 259) because inode 258 was still not yet
       renamed/moved away from inode 259. Therefore we update data structures
       so that after inode 258 is renamed, we try again to see if we can
       finally send an rmdir operation for inode 259;
    
    3) When we process inode 260, we send a rename operation for it followed
       by a rename operation for inode 258. Once we send the rename operation
       for inode 258 we then check if we can finally issue an rmdir for its
       previous parent, inode 259, by calling the can_rmdir() function with
       a value of sctx->cur_ino + 1 (260 + 1 = 261) for its "progress"
       argument. This makes can_rmdir() return true (value 1) because even
       though there's still a child inode of inode 259 that was not yet
       renamed/moved, which is inode 261, the given value of progress (261)
       is not lower then 261 (that is, not lower than the inode number of
       some child of inode 259). So we end up sending a rmdir operation for
       inode 259 before its child inode 261 is processed and renamed.
    
    So fix this by passing the correct progress value to the call to
    can_rmdir() from within apply_dir_move() (where we issue delayed rename
    operations), which should match stcx->cur_ino (the number of the inode
    currently being processed) and not sctx->cur_ino + 1.
    
    A test case for fstests follows soon.
    
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    [Rewrote change log to be more detailed, clear and well formatted]
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Robbie Ko authored and fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    99ea42d View commit details
    Browse the repository at this point in the history
  6. Btrfs: send, fix warning due to late freeing of orphan_dir_info struc…

    …tures
    
    Under certain situations, when doing an incremental send, we can end up
    not freeing orphan_dir_info structures as soon as they are no longer
    needed. Instead we end up freeing them only after finishing the send
    stream, which causes a warning to be emitted:
    
    [282735.229200] ------------[ cut here ]------------
    [282735.229968] WARNING: CPU: 9 PID: 10588 at fs/btrfs/send.c:6298 btrfs_ioctl_send+0xe2f/0xe51 [btrfs]
    [282735.231282] Modules linked in: btrfs crc32c_generic xor raid6_pq acpi_cpufreq tpm_tis ppdev tpm parport_pc psmouse parport sg pcspkr i2c_piix4 i2c_core evdev processor serio_raw button loop autofs4 ext4 crc16 jbd2 mbcache sr_mod cdrom sd_mod ata_generic virtio_scsi ata_piix libata virtio_pci virtio_ring virtio e1000 scsi_mod floppy [last unloaded: btrfs]
    [282735.237130] CPU: 9 PID: 10588 Comm: btrfs Tainted: G        W       4.6.0-rc7-btrfs-next-31+ #1
    [282735.239309] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS by qemu-project.org 04/01/2014
    [282735.240160]  0000000000000000 ffff880224273ca8 ffffffff8126b42c 0000000000000000
    [282735.240160]  0000000000000000 ffff880224273ce8 ffffffff81052b14 0000189a24273ac8
    [282735.240160]  ffff8802210c9800 0000000000000000 0000000000000001 0000000000000000
    [282735.240160] Call Trace:
    [282735.240160]  [<ffffffff8126b42c>] dump_stack+0x67/0x90
    [282735.240160]  [<ffffffff81052b14>] __warn+0xc2/0xdd
    [282735.240160]  [<ffffffff81052beb>] warn_slowpath_null+0x1d/0x1f
    [282735.240160]  [<ffffffffa03c99d5>] btrfs_ioctl_send+0xe2f/0xe51 [btrfs]
    [282735.240160]  [<ffffffffa0398358>] btrfs_ioctl+0x14f/0x1f81 [btrfs]
    [282735.240160]  [<ffffffff8108e456>] ? arch_local_irq_save+0x9/0xc
    [282735.240160]  [<ffffffff8118da05>] vfs_ioctl+0x18/0x34
    [282735.240160]  [<ffffffff8118e00c>] do_vfs_ioctl+0x550/0x5be
    [282735.240160]  [<ffffffff81196f0c>] ? __fget+0x6b/0x77
    [282735.240160]  [<ffffffff81196fa1>] ? __fget_light+0x62/0x71
    [282735.240160]  [<ffffffff8118e0d1>] SyS_ioctl+0x57/0x79
    [282735.240160]  [<ffffffff8149e025>] entry_SYSCALL_64_fastpath+0x18/0xa8
    [282735.240160]  [<ffffffff81100c6b>] ? time_hardirqs_off+0x9/0x14
    [282735.240160]  [<ffffffff8108e87d>] ? trace_hardirqs_off_caller+0x1f/0xaa
    [282735.256343] ---[ end trace a4539270c8056f93 ]---
    
    Consider the following example:
    
      Parent snapshot:
    
      .                                                             (ino 256)
      |--- a/                                                       (ino 257)
      |    |--- c/                                                  (ino 260)
      |
      |--- del/                                                     (ino 259)
            |--- tmp/                                               (ino 258)
            |--- x/                                                 (ino 261)
            |--- y/                                                 (ino 262)
    
      Send snapshot:
    
      .                                                             (ino 256)
      |--- a/                                                       (ino 257)
      |    |--- x/                                                  (ino 261)
      |    |--- y/                                                  (ino 262)
      |
      |--- c/                                                       (ino 260)
           |--- tmp/                                                (ino 258)
    
    1) When processing inode 258, we end up delaying its rename operation
       because it has an ancestor (in the send snapshot) that has a higher
       inode number (inode 260) which was also renamed in the send snapshot,
       therefore we delay the rename of inode 258 so that it happens after
       inode 260 is renamed;
    
    2) When processing inode 259, we end up delaying its deletion (rmdir
       operation) because it has a child inode (258) that has its rename
       operation delayed. At this point we allocate an orphan_dir_info
       structure and tag inode 258 so that we later attempt to see if we
       can delete (rmdir) inode 259 once inode 258 is renamed;
    
    3) When we process inode 260, after renaming it we finally do the rename
       operation for inode 258. Once we issue the rename operation for inode
       258 we notice that this inode was tagged so that we attempt to see
       if at this point we can delete (rmdir) inode 259. But at this point
       we can not still delete inode 259 because it has 2 children, inodes
       261 and 262, that were not yet processed and therefore not yet
       moved (renamed) away from inode 259. We end up not freeing the
       orphan_dir_info structure allocated in step 2;
    
    4) We process inodes 261 and 262, and once we move/rename inode 262
       we issue the rmdir operation for inode 260;
    
    5) We finish the send stream and notice that red black tree that
       contains orphan_dir_info structures is not empty, so we emit
       a warning and then free any orphan_dir_structures left.
    
    So fix this by freeing an orphan_dir_info structure once we try to
    apply a pending rename operation if we can not delete yet the tagged
    directory.
    
    A test case for fstests follows soon.
    
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    [Modified changelog to be more detailed and easier to understand]
    Robbie Ko authored and fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    443f9d2 View commit details
    Browse the repository at this point in the history
  7. Btrfs: send, fix invalid leaf accesses due to incorrect utimes operat…

    …ions
    
    During an incremental send, if we have delayed rename operations for inodes
    that were children of directories which were removed in the send snapshot,
    we can end up accessing incorrect items in a leaf or accessing beyond the
    last item of the leaf due to issuing utimes operations for the removed
    inodes. Consider the following example:
    
      Parent snapshot:
      .                                                             (ino 256)
      |--- a/                                                       (ino 257)
      |    |--- c/                                                  (ino 262)
      |
      |--- b/                                                       (ino 258)
      |    |--- d/                                                  (ino 263)
      |
      |--- del/                                                     (ino 261)
            |--- x/                                                 (ino 259)
            |--- y/                                                 (ino 260)
    
      Send snapshot:
    
      .                                                             (ino 256)
      |--- a/                                                       (ino 257)
      |
      |--- b/                                                       (ino 258)
      |
      |--- c/                                                       (ino 262)
      |    |--- y/                                                  (ino 260)
      |
      |--- d/                                                       (ino 263)
           |--- x/                                                  (ino 259)
    
    1) When processing inodes 259 and 260, we end up delaying their rename
       operations because their parents, inodes 263 and 262 respectively, were
       not yet processed and therefore not yet renamed;
    
    2) When processing inode 262, its rename operation is issued and right
       after the rename operation for inode 260 is issued. However right after
       issuing the rename operation for inode 260, at send.c:apply_dir_move(),
       we issue utimes operations for all current and past parents of inode
       260. This means we try to send a utimes operation for its old parent,
       inode 261 (deleted in the send snapshot), which does not cause any
       immediate and deterministic failure, because when the target inode is
       not found in the send snapshot, the send.c:send_utimes() function
       ignores it and uses the leaf region pointed to by path->slots[0],
       which can be any unrelated item (belonging to other inode) or it can
       be a region outside the leaf boundaries, if the leaf is full and
       path->slots[0] matches the number of items in the leaf. So we end
       up either successfully sending a utimes operation, which is fine
       and irrelevant because the old parent (inode 261) will end up being
       deleted later, or we end up doing an invalid memory access tha
       crashes the kernel.
    
    So fix this by making apply_dir_move() issue utimes operations only for
    parents that still exist in the send snapshot. In a separate patch we
    will make send_utimes() return an error (-ENOENT) if the given inode
    does not exists in the send snapshot.
    
    Signed-off-by: Robbie Ko <robbieko@synology.com>
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    [Rewrote change log to be more detailed and better organized]
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    Robbie Ko authored and fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    764433a View commit details
    Browse the repository at this point in the history
  8. Btrfs: send, avoid incorrect leaf accesses when sending utimes operat…

    …ions
    
    The caller of send_utimes() is supposed to be sure that the inode number
    it passes to this function does actually exists in the send snapshot.
    However due to logic/algorithm bugs (such as the one fixed by the patch
    titled "Btrfs: send, fix invalid leaf accesses due to incorrect utimes
    operations"), this might not be the case and when that happens it makes
    send_utimes() access use an unrelated leaf item as the target inode item
    or access beyond a leaf's boundaries (when the leaf is full and
    path->slots[0] matches the number of items in the leaf).
    
    So if the call to btrfs_search_slot() done by send_utimes() does not find
    the inode item, just make sure send_utimes() returns -ENOENT and does not
    silently accesses unrelated leaf items or does invalid leaf accesses, also
    allowing us to easialy and deterministically catch such algorithmic/logic
    bugs.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    15b253e View commit details
    Browse the repository at this point in the history
  9. Btrfs: send, don't bug on inconsistent snapshots

    When doing an incremental send, if we find a new/modified/deleted extent,
    reference or xattr without having previously processed the corresponding
    inode item we end up exexuting a BUG_ON(). This is because whenever an
    extent, xattr or reference is added, modified or deleted, we always expect
    to have the corresponding inode item updated. However there are situations
    where this will not happen due to transient -ENOMEM or -ENOSPC errors when
    doing delayed inode updates.
    
    For example, when punching holes we can succeed in deleting and modifying
    (shrinking) extents but later fail to do the delayed inode update. So after
    such failure we close our transaction handle and right after a snapshot of
    the fs/subvol tree can be made and used later for a send operation. The
    same thing can happen during truncate, link, unlink, and xattr related
    operations.
    
    So instead of executing a BUG_ON, make send return an -EIO error and print
    an informative error message do dmesg/syslog.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    9515558 View commit details
    Browse the repository at this point in the history
  10. Btrfs: be more precise on errors when getting an inode from disk

    When we attempt to read an inode from disk, we end up always returning an
    -ESTALE error to the caller regardless of the actual failure reason, which
    can be an out of memory problem (when allocating a path), some error found
    when reading from the fs/subvolume btree (like a genuine IO error) or the
    inode does not exists. So lets start returning the real error code to the
    callers so that they don't treat all -ESTALE errors as meaning that the
    inode does not exists (such as during orphan cleanup). This will also be
    needed for a subsequent patch in the same series dealing with a special
    fsync case.
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    6771089 View commit details
    Browse the repository at this point in the history
  11. Btrfs: improve performance on fsync against new inode after rename/un…

    …link
    
    With commit 56f23fd ("Btrfs: fix file/data loss caused by fsync after
    rename and new inode") we got simple fix for a functional issue when the
    following sequence of actions is done:
    
      at transaction N
      create file A at directory D
      at transaction N + M (where M >= 1)
      move/rename existing file A from directory D to directory E
      create a new file named A at directory D
      fsync the new file
      power fail
    
    The solution was to simply detect such scenario and fallback to a full
    transaction commit when we detect it. However this turned out to had a
    significant impact on throughput (and a bit on latency too) for benchmarks
    using the dbench tool, which simulates real workloads from smbd (Samba)
    servers. For example on a test vm (with a debug kernel):
    
    Unpatched:
    Throughput 19.1572 MB/sec  32 clients  32 procs  max_latency=1005.229 ms
    
    Patched:
    Throughput 23.7015 MB/sec  32 clients  32 procs  max_latency=809.206 ms
    
    The patched results (this patch is applied) are similar to the results of
    a kernel with the commit 56f23fd ("Btrfs: fix file/data loss caused
    by fsync after rename and new inode") reverted.
    
    This change avoids the fallback to a transaction commit and instead makes
    sure all the names of the conflicting inode (the one that had a name in a
    past transaction that matches the name of the new file in the same parent
    directory) are logged so that at log replay time we don't lose neither the
    new file nor the old file, and the old file gets the name it was renamed
    to.
    
    This also ends up avoiding a full transaction commit for a similar case
    that involves an unlink instead of a rename of the old file:
    
      at transaction N
      create file A at directory D
      at transaction N + M (where M >= 1)
      remove file A
      create a new file named A at directory D
      fsync the new file
      power fail
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    fdmanana committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    44f714d View commit details
    Browse the repository at this point in the history
  12. drm/amdgpu/gmc7: add missing mullins case

    Looks like this got missed when we ported the code from radeon.
    
    Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Cc: stable@vger.kernel.org
    alexdeucher committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    7f555c8 View commit details
    Browse the repository at this point in the history
  13. drm/amdgpu/ci: add mullins to default case for smc ucode

    It's already covered by the default case, but add it for
    consistency.
    
    Reviewed-by: Alexandre Demers <alexandre.f.demers@gmail.com>
    Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    alexdeucher committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    903f75c View commit details
    Browse the repository at this point in the history
  14. drm/amd/amdgpu: change pptable output format from ASCII to binary

    Reviewed-by: Edward O'Callaghan <funfunctor@folklore1984.net>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Eric Huang <JinHuiEric.Huang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    erichuang22 authored and alexdeucher committed Aug 1, 2016
    Configuration menu
    Copy the full SHA
    4f7ec15 View commit details
    Browse the repository at this point in the history

Commits on Aug 2, 2016

  1. drm/amdgpu: update golden setting of iceland

    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    huangrui authored and alexdeucher committed Aug 2, 2016
    Configuration menu
    Copy the full SHA
    fe85f07 View commit details
    Browse the repository at this point in the history
  2. drm/amdgpu: update golden setting of carrizo

    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    huangrui authored and alexdeucher committed Aug 2, 2016
    Configuration menu
    Copy the full SHA
    3a494b5 View commit details
    Browse the repository at this point in the history
  3. drm/amdgpu: update golden setting of polaris11

    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Reviewed-by: Ken Wang <Qingqing.Wang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    huangrui authored and alexdeucher committed Aug 2, 2016
    Configuration menu
    Copy the full SHA
    9761bc5 View commit details
    Browse the repository at this point in the history
  4. drm/amdgpu: update golden setting of stoney

    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    huangrui authored and alexdeucher committed Aug 2, 2016
    Configuration menu
    Copy the full SHA
    6d51c81 View commit details
    Browse the repository at this point in the history
  5. drm/amdgpu: update golden setting of polaris10

    Signed-off-by: Huang Rui <ray.huang@amd.com>
    Reviewed-by: Ken Wang <Qingqing.Wang@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    huangrui authored and alexdeucher committed Aug 2, 2016
    Configuration menu
    Copy the full SHA
    a5a5e30 View commit details
    Browse the repository at this point in the history

Commits on Aug 3, 2016

  1. Btrfs: remove unused function btrfs_add_delayed_qgroup_reserve()

    No longer used as of commit 5846a3c ("btrfs: qgroup: Fix a race in
    delayed_ref which leads to abort trans").
    
    Signed-off-by: Filipe Manana <fdmanana@suse.com>
    fdmanana committed Aug 3, 2016
    Configuration menu
    Copy the full SHA
    e657149 View commit details
    Browse the repository at this point in the history

Commits on Aug 4, 2016

  1. drm/i915/fbdev: Check for the framebuffer before use

    If the fbdev probing fails, and in our error path we fail to clear the
    dev_priv->fbdev, then we can try and use a dangling fbdev pointer, and
    in particular a NULL fb. This could also happen in pathological cases
    where we try to operate on the fbdev prior to it being probed.
    
    Reported-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Mika Kuoppala <mika.kuoppala@intel.com>
    Link: http://patchwork.freedesktop.org/patch/msgid/1468431285-28264-2-git-send-email-chris@chris-wilson.co.uk
    Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
    Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
    (cherry picked from commit 6bc2654)
    Signed-off-by: Jani Nikula <jani.nikula@intel.com>
    ickle authored and jnikula committed Aug 4, 2016
    Configuration menu
    Copy the full SHA
    c45eb4f View commit details
    Browse the repository at this point in the history

Commits on Aug 5, 2016

  1. drm/ttm: Wait for a BO to become idle before unbinding it from GTT

    Fixes hangs under memory pressure, e.g. running the piglit test
    tex3d-maxsize concurrently with other tests.
    
    Fixes: 17d33bc ("drm/ttm: drop waiting for idle in ttm_bo_evict.")
    Reviewed-by: Christian König <christian.koenig@amd.com>
    Signed-off-by: Michel Dänzer <michel.daenzer@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Michel Dänzer authored and alexdeucher committed Aug 5, 2016
    Configuration menu
    Copy the full SHA
    34b5835 View commit details
    Browse the repository at this point in the history
  2. Merge branch 'integration-4.8' of git://git.kernel.org/pub/scm/linux/…

    …kernel/git/fdmanana/linux into for-linus-4.8
    masoncl committed Aug 5, 2016
    Configuration menu
    Copy the full SHA
    1083881 View commit details
    Browse the repository at this point in the history

Commits on Aug 8, 2016

  1. drm: rcar-du: Link HDMI encoder with bridge

    The conversion of the rcar-du driver from the I2C slave encoder to the
    DRM bridge API left the HDMI encoder's bridge pointer NULL, preventing
    the bridge from being handled automatically by the DRM core. Fix it.
    
    Fixes: 1d92611 ("drm: rcar-du: Remove i2c slave encoder interface for hdmi encoder")
    Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Laurent Pinchart authored and airlied committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    29986cc View commit details
    Browse the repository at this point in the history
  2. drm: Paper over locking inversion after registration rework

    drm_connector_register_all requires a few too many locks because our
    connector_list locking is busted. Add another FIXME+hack to work
    around this. This should address the below lockdep splat:
    
    ======================================================
    [ INFO: possible circular locking dependency detected ]
    4.7.0-rc5+ #524 Tainted: G           O
    -------------------------------------------------------
    kworker/u8:0/6 is trying to acquire lock:
     (&dev->mode_config.mutex){+.+.+.}, at: [<ffffffff815afde0>] drm_modeset_lock_all+0x40/0x120
    
    but task is already holding lock:
     ((fb_notifier_list).rwsem){++++.+}, at: [<ffffffff810ac195>] __blocking_notifier_call_chain+0x35/0x70
    
    which lock already depends on the new lock.
    
    the existing dependency chain (in reverse order) is:
    
    -> #1 ((fb_notifier_list).rwsem){++++.+}:
           [<ffffffff810df611>] lock_acquire+0xb1/0x200
           [<ffffffff819a55b4>] down_write+0x44/0x80
           [<ffffffff810abf91>] blocking_notifier_chain_register+0x21/0xb0
           [<ffffffff814c7448>] fb_register_client+0x18/0x20
           [<ffffffff814c6c86>] backlight_device_register+0x136/0x260
           [<ffffffffa0127eb2>] intel_backlight_device_register+0xa2/0x160 [i915]
           [<ffffffffa00f46be>] intel_connector_register+0xe/0x10 [i915]
           [<ffffffffa0112bfb>] intel_dp_connector_register+0x1b/0x80 [i915]
           [<ffffffff8159dfea>] drm_connector_register+0x4a/0x80
           [<ffffffff8159fe44>] drm_connector_register_all+0x64/0xf0
           [<ffffffff815a2a64>] drm_modeset_register_all+0x174/0x1c0
           [<ffffffff81599b72>] drm_dev_register+0xc2/0xd0
           [<ffffffffa00621d7>] i915_driver_load+0x1547/0x2200 [i915]
           [<ffffffffa006d80f>] i915_pci_probe+0x4f/0x70 [i915]
           [<ffffffff814a2135>] local_pci_probe+0x45/0xa0
           [<ffffffff814a349b>] pci_device_probe+0xdb/0x130
           [<ffffffff815c07e3>] driver_probe_device+0x223/0x440
           [<ffffffff815c0ad5>] __driver_attach+0xd5/0x100
           [<ffffffff815be386>] bus_for_each_dev+0x66/0xa0
           [<ffffffff815c002e>] driver_attach+0x1e/0x20
           [<ffffffff815bf9be>] bus_add_driver+0x1ee/0x280
           [<ffffffff815c1810>] driver_register+0x60/0xe0
           [<ffffffff814a1a10>] __pci_register_driver+0x60/0x70
           [<ffffffffa01a905b>] i915_init+0x5b/0x62 [i915]
           [<ffffffff8100042d>] do_one_initcall+0x3d/0x150
           [<ffffffff811a935b>] do_init_module+0x5f/0x1d9
           [<ffffffff81124416>] load_module+0x20e6/0x27e0
           [<ffffffff81124d63>] SYSC_finit_module+0xc3/0xf0
           [<ffffffff81124dae>] SyS_finit_module+0xe/0x10
           [<ffffffff819a83a9>] entry_SYSCALL_64_fastpath+0x1c/0xac
    
    -> #0 (&dev->mode_config.mutex){+.+.+.}:
           [<ffffffff810df0ac>] __lock_acquire+0x10fc/0x1260
           [<ffffffff810df611>] lock_acquire+0xb1/0x200
           [<ffffffff819a3097>] mutex_lock_nested+0x67/0x3c0
           [<ffffffff815afde0>] drm_modeset_lock_all+0x40/0x120
           [<ffffffff8158f79b>] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80
           [<ffffffff8158f81d>] drm_fb_helper_set_par+0x2d/0x50
           [<ffffffffa0105f7a>] intel_fbdev_set_par+0x1a/0x60 [i915]
           [<ffffffff814c13c6>] fbcon_init+0x586/0x610
           [<ffffffff8154d16a>] visual_init+0xca/0x130
           [<ffffffff8154e611>] do_bind_con_driver+0x1c1/0x3a0
           [<ffffffff8154eaf6>] do_take_over_console+0x116/0x180
           [<ffffffff814bd3a7>] do_fbcon_takeover+0x57/0xb0
           [<ffffffff814c1e48>] fbcon_event_notify+0x658/0x750
           [<ffffffff810abcae>] notifier_call_chain+0x3e/0xb0
           [<ffffffff810ac1ad>] __blocking_notifier_call_chain+0x4d/0x70
           [<ffffffff810ac1e6>] blocking_notifier_call_chain+0x16/0x20
           [<ffffffff814c748b>] fb_notifier_call_chain+0x1b/0x20
           [<ffffffff814c86b1>] register_framebuffer+0x251/0x330
           [<ffffffff8158fa9f>] drm_fb_helper_initial_config+0x25f/0x3f0
           [<ffffffffa0106b48>] intel_fbdev_initial_config+0x18/0x30 [i915]
           [<ffffffff810adfd8>] async_run_entry_fn+0x48/0x150
           [<ffffffff810a3947>] process_one_work+0x1e7/0x750
           [<ffffffff810a3efb>] worker_thread+0x4b/0x4f0
           [<ffffffff810aad4f>] kthread+0xef/0x110
           [<ffffffff819a85ef>] ret_from_fork+0x1f/0x40
    
    other info that might help us debug this:
    
     Possible unsafe locking scenario:
    
           CPU0                    CPU1
           ----                    ----
      lock((fb_notifier_list).rwsem);
                                   lock(&dev->mode_config.mutex);
                                   lock((fb_notifier_list).rwsem);
      lock(&dev->mode_config.mutex);
    
     *** DEADLOCK ***
    
    6 locks held by kworker/u8:0/6:
     #0:  ("events_unbound"){.+.+.+}, at: [<ffffffff810a38c9>] process_one_work+0x169/0x750
     #1:  ((&entry->work)){+.+.+.}, at: [<ffffffff810a38c9>] process_one_work+0x169/0x750
     #2:  (registration_lock){+.+.+.}, at: [<ffffffff814c8487>] register_framebuffer+0x27/0x330
     #3:  (console_lock){+.+.+.}, at: [<ffffffff814c86ce>] register_framebuffer+0x26e/0x330
     #4:  (&fb_info->lock){+.+.+.}, at: [<ffffffff814c78dd>] lock_fb_info+0x1d/0x40
     #5:  ((fb_notifier_list).rwsem){++++.+}, at: [<ffffffff810ac195>] __blocking_notifier_call_chain+0x35/0x70
    
    stack backtrace:
    CPU: 2 PID: 6 Comm: kworker/u8:0 Tainted: G           O    4.7.0-rc5+ #524
    Hardware name: Intel Corp. Broxton P/NOTEBOOK, BIOS APLKRVPA.X64.0138.B33.1606250842 06/25/2016
    Workqueue: events_unbound async_run_entry_fn
     0000000000000000 ffff8800758577f0 ffffffff814507a5 ffffffff828b9900
     ffffffff828b9900 ffff880075857830 ffffffff810dc6fa ffff880075857880
     ffff88007584d688 0000000000000005 0000000000000006 ffff88007584d6b0
    Call Trace:
     [<ffffffff814507a5>] dump_stack+0x67/0x92
     [<ffffffff810dc6fa>] print_circular_bug+0x1aa/0x200
     [<ffffffff810df0ac>] __lock_acquire+0x10fc/0x1260
     [<ffffffff810df611>] lock_acquire+0xb1/0x200
     [<ffffffff815afde0>] ? drm_modeset_lock_all+0x40/0x120
     [<ffffffff815afde0>] ? drm_modeset_lock_all+0x40/0x120
     [<ffffffff819a3097>] mutex_lock_nested+0x67/0x3c0
     [<ffffffff815afde0>] ? drm_modeset_lock_all+0x40/0x120
     [<ffffffff810fa85f>] ? rcu_read_lock_sched_held+0x7f/0x90
     [<ffffffff81208218>] ? kmem_cache_alloc_trace+0x248/0x2b0
     [<ffffffff815afdc5>] ? drm_modeset_lock_all+0x25/0x120
     [<ffffffff815afde0>] drm_modeset_lock_all+0x40/0x120
     [<ffffffff8158f79b>] drm_fb_helper_restore_fbdev_mode_unlocked+0x2b/0x80
     [<ffffffff8158f81d>] drm_fb_helper_set_par+0x2d/0x50
     [<ffffffffa0105f7a>] intel_fbdev_set_par+0x1a/0x60 [i915]
     [<ffffffff814c13c6>] fbcon_init+0x586/0x610
     [<ffffffff8154d16a>] visual_init+0xca/0x130
     [<ffffffff8154e611>] do_bind_con_driver+0x1c1/0x3a0
     [<ffffffff8154eaf6>] do_take_over_console+0x116/0x180
     [<ffffffff814bd3a7>] do_fbcon_takeover+0x57/0xb0
     [<ffffffff814c1e48>] fbcon_event_notify+0x658/0x750
     [<ffffffff810abcae>] notifier_call_chain+0x3e/0xb0
     [<ffffffff810ac1ad>] __blocking_notifier_call_chain+0x4d/0x70
     [<ffffffff810ac1e6>] blocking_notifier_call_chain+0x16/0x20
     [<ffffffff814c748b>] fb_notifier_call_chain+0x1b/0x20
     [<ffffffff814c86b1>] register_framebuffer+0x251/0x330
     [<ffffffff815b7e8d>] ? vga_switcheroo_client_fb_set+0x5d/0x70
     [<ffffffff8158fa9f>] drm_fb_helper_initial_config+0x25f/0x3f0
     [<ffffffffa0106b48>] intel_fbdev_initial_config+0x18/0x30 [i915]
     [<ffffffff810adfd8>] async_run_entry_fn+0x48/0x150
     [<ffffffff810a3947>] process_one_work+0x1e7/0x750
     [<ffffffff810a38c9>] ? process_one_work+0x169/0x750
     [<ffffffff810a3efb>] worker_thread+0x4b/0x4f0
     [<ffffffff810a3eb0>] ? process_one_work+0x750/0x750
     [<ffffffff810aad4f>] kthread+0xef/0x110
     [<ffffffff819a85ef>] ret_from_fork+0x1f/0x40
     [<ffffffff810aac60>] ? kthread_stop+0x2e0/0x2e0
    
    v2: Rebase onto the right branch (hand-editing patches ftw) and add more
    reporters.
    
    Reported-by: Imre Deak <imre.deak@intel.com>
    Cc: Imre Deak <imre.deak@intel.com>
    Cc: Chris Wilson <chris@chris-wilson.co.uk>
    Acked-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reported-by: Jiri Kosina <jikos@kernel.org>
    Cc: Jiri Kosina <jikos@kernel.org>
    Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    danvet authored and airlied committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    5c6c201 View commit details
    Browse the repository at this point in the history
  3. Merge tag 'drm-intel-next-fixes-2016-08-05' of git://anongit.freedesk…

    …top.org/drm-intel into drm-next
    
    3 intel fixes.
    
    * tag 'drm-intel-next-fixes-2016-08-05' of git://anongit.freedesktop.org/drm-intel:
      drm/i915/fbdev: Check for the framebuffer before use
      drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB
      drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request on SKL
    airlied committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    e8285ce View commit details
    Browse the repository at this point in the history
  4. Merge branch 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/li…

    …nux into drm-next
    
    A few fixes for amdgpu and ttm for 4.8
    - fix a ttm regression caused by the new pipelining code
    - fixes for mullins on amdgpu
    - updated golden settings for amdgpu
    
    * 'drm-next-4.8' of git://people.freedesktop.org/~agd5f/linux:
      drm/ttm: Wait for a BO to become idle before unbinding it from GTT
      drm/amdgpu: update golden setting of polaris10
      drm/amdgpu: update golden setting of stoney
      drm/amdgpu: update golden setting of polaris11
      drm/amdgpu: update golden setting of carrizo
      drm/amdgpu: update golden setting of iceland
      drm/amd/amdgpu: change pptable output format from ASCII to binary
      drm/amdgpu/ci: add mullins to default case for smc ucode
      drm/amdgpu/gmc7: add missing mullins case
    airlied committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    4872850 View commit details
    Browse the repository at this point in the history
  5. dell-wmi: Ignore WMI event 0xe00e

    WMI event 0xe00e is received when battery was removed or inserted.
    
    Signed-off-by: Pali Rohár <pali.rohar@gmail.com>
    Signed-off-by: Darren Hart <dvhart@linux.intel.com>
    pali authored and dvhart committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    65a97a6 View commit details
    Browse the repository at this point in the history
  6. drm/edid: Add 6 bpc quirk for display AEO model 0.

    Bugzilla https://bugzilla.kernel.org/show_bug.cgi?id=105331
    reports that the "AEO model 0" display is driven with 8 bpc
    without dithering by default, which looks bad because that
    panel is apparently a 6 bpc DP panel with faulty EDID.
    
    A fix for this was made by commit 013dd9e
    ("drm/i915/dp: fall back to 18 bpp when sink capability is unknown").
    
    That commit triggers new regressions in precision for DP->DVI and
    DP->VGA displays. A patch is out to revert that commit, but it will
    revert video output for the AEO model 0 panel to 8 bpc without
    dithering.
    
    The EDID 1.3 of that panel, as decoded from the xrandr output
    attached to that bugzilla bug report, is somewhat faulty, and beyond
    other problems also sets the "DFP 1.x compliant TMDS" bit, which
    according to DFP spec means to drive the panel with 8 bpc and
    no dithering in absence of other colorimetry information.
    
    Try to make the original bug reporter happy despite the
    faulty EDID by adding a quirk to mark that panel as 6 bpc,
    so 6 bpc output with dithering creates a nice picture.
    
    Tested by injecting the edid from the fdo bug into a DP connector
    via drm_kms_helper.edid_firmware and verifying the 6 bpc + dithering
    is selected.
    
    This patch should be backported to stable.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Cc: stable@vger.kernel.org
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    kleinerm authored and airlied committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    e10aec6 View commit details
    Browse the repository at this point in the history
  7. drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capab…

    …ility is unknown"
    
    This reverts commit 013dd9e
    ("drm/i915/dp: fall back to 18 bpp when sink capability is unknown")
    
    This commit introduced a regression into stable kernels,
    as it reduces output color depth to 6 bpc for any video
    sink connected to a Displayport connector if that sink
    doesn't report a specific color depth via EDID, or if
    our EDID parser doesn't actually recognize the proper
    bpc from EDID.
    
    Affected are active DisplayPort->VGA converters and
    active DisplayPort->DVI converters. Both should be
    able to handle 8 bpc, but are degraded to 6 bpc with
    this patch.
    
    The reverted commit was meant to fix
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=105331
    
    A followup patch implements a fix for that specific bug,
    which is caused by a faulty EDID of the affected DP panel
    by adding a new EDID quirk for that panel.
    
    DP 18 bpp fallback handling and other improvements to
    DP sink bpc detection will be handled for future
    kernels in a separate series of patches.
    
    Please backport to stable.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Acked-by: Jani Nikula <jani.nikula@intel.com>
    Cc: stable@vger.kernel.org
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    kleinerm authored and airlied committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    196f954 View commit details
    Browse the repository at this point in the history
  8. drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant …

    …TMDS".
    
    According to E-EDID spec 1.3, table 3.9, a digital video sink with the
    "DFP 1.x compliant TMDS" bit set is "signal compatible with VESA DFP 1.x
    TMDS CRGB, 1 pixel / clock, up to 8 bits / color MSB aligned".
    
    For such displays, the DFP spec 1.0, section 3.10 "EDID support" says:
    
    "If the DFP monitor only supports EDID 1.X (1.1, 1.2, etc.)
     without extensions, the host will make the following assumptions:
    
     1. 24-bit MSB-aligned RGB TFT
     2. DE polarity is active high
     3. H and V syncs are active high
     4. Established CRT timings will be used
     5. Dithering will not be enabled on the host"
    
    So if we don't know the bit depth of the display from additional
    colorimetry info we should assume 8 bpc / 24 bpp by default.
    
    This patch adds info->bpc = 8 assignement for that case.
    
    Signed-off-by: Mario Kleiner <mario.kleiner.de@gmail.com>
    Cc: Jani Nikula <jani.nikula@intel.com>
    Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    kleinerm authored and airlied committed Aug 8, 2016
    Configuration menu
    Copy the full SHA
    210a021 View commit details
    Browse the repository at this point in the history

Commits on Aug 9, 2016

  1. kbuild: no gcc-plugins during cc-option tests

    The gcc-plugins arguments should not be included when performing
    cc-option tests.
    
    Steps to reproduce:
    1) make mrproper
    2) make defconfig
    3) enable GCC_PLUGINS, GCC_PLUGIN_CYC_COMPLEXITY
    4) enable FUNCTION_TRACER (it will select other options as well)
    5) make && make modules
    
    Build errors:
    MODPOST 18 modules
    ERROR: "__fentry__" [net/netfilter/xt_nat.ko] undefined!
    ERROR: "__fentry__" [net/netfilter/xt_mark.ko] undefined!
    ERROR: "__fentry__" [net/netfilter/xt_addrtype.ko] undefined!
    ERROR: "__fentry__" [net/netfilter/xt_LOG.ko] undefined!
    ERROR: "__fentry__" [net/netfilter/nf_nat_sip.ko] undefined!
    ERROR: "__fentry__" [net/netfilter/nf_nat_irc.ko] undefined!
    ERROR: "__fentry__" [net/netfilter/nf_nat_ftp.ko] undefined!
    ERROR: "__fentry__" [net/netfilter/nf_nat.ko] undefined!
    
    Reported-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Emese Revfy <re.emese@gmail.com>
    [kees: renamed variable, clarified commit message]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    ephox-gcc-plugins authored and kees committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    d26e941 View commit details
    Browse the repository at this point in the history
  2. gcc-plugins: abort builds cleanly when not supported

    When the compiler doesn't support gcc plugins (either due to missing
    headers or too old a version), report the problem and abort the build
    instead of emitting a warning and letting the build founder with arcane
    compiler errors.
    
    Signed-off-by: Kees Cook <keescook@chromium.org>
    kees committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    ed58c0e View commit details
    Browse the repository at this point in the history
  3. gcc-plugins: Add support for passing plugin arguments

    The latent_entropy plugin needs to pass arguments, so this adds the
    support.
    
    Signed-off-by: Emese Revfy <re.emese@gmail.com>
    Signed-off-by: Kees Cook <keescook@chromium.org>
    ephox-gcc-plugins authored and kees committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    65d59ec View commit details
    Browse the repository at this point in the history
  4. gcc-plugins: Automate make rule generation

    There's no reason to repeat the same names in the Makefile when the .so
    files have already been listed. The .o list can be generated from them.
    
    Reported-by: PaX Team <pageexec@freemail.hu>
    Signed-off-by: Emese Revfy <re.emese@gmail.com>
    [kees: clarified commit message]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    ephox-gcc-plugins authored and kees committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    7040c83 View commit details
    Browse the repository at this point in the history
  5. gcc-plugins: Add support for plugin subdirectories

    This adds support for building more complex gcc plugins that live in a
    subdirectory instead of just in a single source file.
    
    Reported-by: PaX Team <pageexec@freemail.hu>
    Signed-off-by: Emese Revfy <re.emese@gmail.com>
    [kees: clarified commit message]
    Signed-off-by: Kees Cook <keescook@chromium.org>
    ephox-gcc-plugins authored and kees committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    caefd8c View commit details
    Browse the repository at this point in the history
  6. drm/cirrus: Fix NULL pointer dereference when registering the fbdev

    cirrus_modeset_init() is initializing/registering the emulated fbdev
    and, since commit c61b93f ("drm/atomic: Fix remaining places where
    !funcs->best_encoder is valid"), DRM internals can access/test some of
    the fields in mode_config->funcs as part of the fbdev registration
    process.
    Make sure dev->mode_config.funcs is properly set to avoid dereferencing
    a NULL pointer.
    
    Reported-by: Mike Marshall <hubcap@omnibond.com>
    Reported-by: Eric W. Biederman <ebiederm@xmission.com>
    Signed-off-by: Boris Brezillon <boris.brezillon@free-electrons.com>
    Fixes: c61b93f ("drm/atomic: Fix remaining places where !funcs->best_encoder is valid")
    Signed-off-by: Dave Airlie <airlied@redhat.com>
    Boris Brezillon authored and airlied committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    36e9d08 View commit details
    Browse the repository at this point in the history
  7. metag: Drop show_mem() from mem_init()

    The recent commit 599d0c9 ("mm, vmscan: move LRU lists to node"),
    changed memory management code so that show_mem() is no longer safe to
    call prior to setup_per_cpu_pageset(), as pgdat->per_cpu_nodestats will
    still be NULL. This causes an oops on metag due to the call to
    show_mem() from mem_init():
    
      node_page_state_snapshot(...) + 0x48
      pgdat_reclaimable(struct pglist_data * pgdat = 0x402517a0)
      show_free_areas(unsigned int filter = 0) + 0x2cc
      show_mem(unsigned int filter = 0) + 0x18
      mem_init()
      mm_init()
      start_kernel() + 0x204
    
    This wasn't a problem before with zone_reclaimable() as zone_pcp_init()
    was already setting zone->pageset to &boot_pageset, via setup_arch() and
    paging_init(), which happens before mm_init():
    
      zone_pcp_init(...)
      free_area_init_core(...) + 0x138
      free_area_init_node(int nid = 0, ...) + 0x1a0
      free_area_init_nodes(...) + 0x440
      paging_init(unsigned long mem_end = 0x4fe00000) + 0x378
      setup_arch(char ** cmdline_p = 0x4024e038) + 0x2b8
      start_kernel() + 0x54
    
    No other arches appear to call show_mem() during boot, and it doesn't
    really add much value to the log, so lets just drop it from mem_init().
    
    Signed-off-by: James Hogan <james.hogan@imgtec.com>
    Acked-by: Mel Gorman <mgorman@techsingularity.net>
    Cc: linux-metag@vger.kernel.org
    James Hogan committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    97b1d23 View commit details
    Browse the repository at this point in the history
  8. tracing: Fix tick_stop tracepoint symbols for user export

    The symbols used in the tick_stop tracepoint were not being converted
    properly into integers in the trace_stop format file. Instead we had this:
    
    print fmt: "success=%d dependency=%s", REC->success,
        __print_symbolic(REC->dependency, { 0, "NONE" },
         { (1 << TICK_DEP_BIT_POSIX_TIMER), "POSIX_TIMER" },
         { (1 << TICK_DEP_BIT_PERF_EVENTS), "PERF_EVENTS" },
         { (1 << TICK_DEP_BIT_SCHED), "SCHED" },
         { (1 << TICK_DEP_BIT_CLOCK_UNSTABLE), "CLOCK_UNSTABLE" })
    
    User space tools have no idea how to parse "TICK_DEP_BIT_SCHED" or the other
    symbols used to do the bit shifting. The reason is that the conversion was
    done with using the TICK_DEP_MASK_* symbols which are just macros that
    convert to the BIT shift itself (with the exception of NONE, which was
    converted properly, because it doesn't use bits, and is defined as zero).
    
    The TICK_DEP_BIT_* needs to be denoted by TRACE_DEFINE_ENUM() in order to
    have this properly converted for user space tools to parse this event.
    
    Cc: stable@vger.kernel.org
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Fixes: e6e6cc2 ("nohz: Use enum code for tick stop failure tracing message")
    Reported-by: Luiz Capitulino <lcapitulino@redhat.com>
    Tested-by: Luiz Capitulino <lcapitulino@redhat.com>
    Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
    rostedt committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    c87edb3 View commit details
    Browse the repository at this point in the history
  9. mm: memcontrol: only mark charged pages with PageKmemcg

    To distinguish non-slab pages charged to kmemcg we mark them PageKmemcg,
    which sets page->_mapcount to -512.  Currently, we set/clear PageKmemcg
    in __alloc_pages_nodemask()/free_pages_prepare() for any page allocated
    with __GFP_ACCOUNT, including those that aren't actually charged to any
    cgroup, i.e. allocated from the root cgroup context.  To avoid overhead
    in case cgroups are not used, we only do that if memcg_kmem_enabled() is
    true.  The latter is set iff there are kmem-enabled memory cgroups
    (online or offline).  The root cgroup is not considered kmem-enabled.
    
    As a result, if a page is allocated with __GFP_ACCOUNT for the root
    cgroup when there are kmem-enabled memory cgroups and is freed after all
    kmem-enabled memory cgroups were removed, e.g.
    
      # no memory cgroups has been created yet, create one
      mkdir /sys/fs/cgroup/memory/test
      # run something allocating pages with __GFP_ACCOUNT, e.g.
      # a program using pipe
      dmesg | tail
      # remove the memory cgroup
      rmdir /sys/fs/cgroup/memory/test
    
    we'll get bad page state bug complaining about page->_mapcount != -1:
    
      BUG: Bad page state in process swapper/0  pfn:1fd945c
      page:ffffea007f651700 count:0 mapcount:-511 mapping:          (null) index:0x0
      flags: 0x1000000000000000()
    
    To avoid that, let's mark with PageKmemcg only those pages that are
    actually charged to and hence pin a non-root memory cgroup.
    
    Fixes: 4949148 ("mm: charge/uncharge kmemcg from generic page allocator paths")
    Reported-and-tested-by: Eric Dumazet <eric.dumazet@gmail.com>
    Signed-off-by: Vladimir Davydov <vdavydov@virtuozzo.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Vladimir Davydov authored and torvalds committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    c4159a7 View commit details
    Browse the repository at this point in the history
  10. ipr: Fix sync scsi scan

    Commit b195d5e ("ipr: Wait to do async scan until scsi host is
    initialized") fixed async scan for ipr, but broke sync scan for ipr.
    
    This fixes sync scan back up.
    
    Signed-off-by: Brian King <brking@linux.vnet.ibm.com>
    Reported-and-tested-by: Michael Ellerman <mpe@ellerman.id.au>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    bjking1 authored and torvalds committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    a3d1ddd View commit details
    Browse the repository at this point in the history
  11. Merge tag 'drm-fixes-for-4.8-rc2' of git://people.freedesktop.org/~ai…

    …rlied/linux
    
    Pull drm fixes from Dave Airlie:
     "This contains a bunch of amdgpu fixes, and some i915 regression fixes.
    
      It also contains some fixes for an older regression with some EDID
      changes and some 6bpc panels.
    
      Then there are the lockdep, cirrus and rcar-du regression fixes from
      this window"
    
    * tag 'drm-fixes-for-4.8-rc2' of git://people.freedesktop.org/~airlied/linux:
      drm/cirrus: Fix NULL pointer dereference when registering the fbdev
      drm/edid: Set 8 bpc color depth for displays with "DFP 1.x compliant TMDS".
      drm/i915/dp: Revert "drm/i915/dp: fall back to 18 bpp when sink capability is unknown"
      drm/edid: Add 6 bpc quirk for display AEO model 0.
      drm: Paper over locking inversion after registration rework
      drm: rcar-du: Link HDMI encoder with bridge
      drm/ttm: Wait for a BO to become idle before unbinding it from GTT
      drm/i915/fbdev: Check for the framebuffer before use
      drm/amdgpu: update golden setting of polaris10
      drm/amdgpu: update golden setting of stoney
      drm/amdgpu: update golden setting of polaris11
      drm/amdgpu: update golden setting of carrizo
      drm/amdgpu: update golden setting of iceland
      drm/amd/amdgpu: change pptable output format from ASCII to binary
      drm/amdgpu/ci: add mullins to default case for smc ucode
      drm/amdgpu/gmc7: add missing mullins case
      drm/i915: Never fully mask the the EI up rps interrupt on SNB/IVB
      drm/i915: Wait up to 3ms for the pcu to ack the cdclk change request on SKL
    torvalds committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    cb0d93a View commit details
    Browse the repository at this point in the history
  12. Merge tag 'platform-drivers-x86-v4.8-3' of git://git.infradead.org/us…

    …ers/dvhart/linux-platform-drivers-x86
    
    Pull x86 platform driver update from Darren Hart:
     "dell-wmi: ignore battery remove/insert event"
    
    * tag 'platform-drivers-x86-v4.8-3' of git://git.infradead.org/users/dvhart/linux-platform-drivers-x86:
      dell-wmi: Ignore WMI event 0xe00e
    torvalds committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    e1d009e View commit details
    Browse the repository at this point in the history
  13. Merge tag 'gcc-plugin-infrastructure-v4.8-rc2' of git://git.kernel.or…

    …g/pub/scm/linux/kernel/git/kees/linux
    
    Pull gcc plugin improvements from Kees Cook:
     "Several fixes/improvements for the gcc plugin infrastructure:
    
       - fix a problem with gcc plugins interfering with cc-option tests.
    
       - abort more gracefully when gcc plugin headers or compiler support
         is missing.
    
       - improve the gcc plugin rule generation to be more dynamic, pass
         arguments, and build from subdirectories"
    
    * tag 'gcc-plugin-infrastructure-v4.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/kees/linux:
      gcc-plugins: Add support for plugin subdirectories
      gcc-plugins: Automate make rule generation
      gcc-plugins: Add support for passing plugin arguments
      gcc-plugins: abort builds cleanly when not supported
      kbuild: no gcc-plugins during cc-option tests
    torvalds committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    b79f34d View commit details
    Browse the repository at this point in the history
  14. Merge tag 'trace-v4.8-2' of git://git.kernel.org/pub/scm/linux/kernel…

    …/git/rostedt/linux-trace
    
    Pull tracing fix from Steven Rostedt:
     "Fix tick_stop tracepoint symbols for user export.
    
      Luiz Capitulino noticed that the tick_stop tracepoint wasn't being
      parsed properly by the tracing user space tools.
    
      This was due to the TRACE_DEFINE_ENUM() being set to a define, when it
      should have been set to the enum itself.  The define was of the MASK
      that used the BIT to shift.  The BIT was the enum and by adding that,
      everything gets converted nicely.  The MASK is still kept just in case
      it gets converted to an enum in the future"
    
    * tag 'trace-v4.8-2' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
      tracing: Fix tick_stop tracepoint symbols for user export
    torvalds committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    84bd8d3 View commit details
    Browse the repository at this point in the history
  15. Revert "printk: create pr_<level> functions"

    This reverts commit 874f9c7.
    
    Geert Uytterhoeven reports:
     "This change seems to have an (unintendent?) side-effect.
    
      Before, pr_*() calls without a trailing newline characters would be
      printed with a newline character appended, both on the console and in
      the output of the dmesg command.
    
      After this commit, no new line character is appended, and the output
      of the next pr_*() call of the same type may be appended, like in:
    
        - Truncating RAM at 0x0000000040000000-0x00000000c0000000 to -0x0000000070000000
        - Ignoring RAM at 0x0000000200000000-0x0000000240000000 (!CONFIG_HIGHMEM)
        + Truncating RAM at 0x0000000040000000-0x00000000c0000000 to -0x0000000070000000Ignoring RAM at 0x0000000200000000-0x0000000240000000 (!CONFIG_HIGHMEM)"
    
    Joe Perches says:
     "No, that is not intentional.
    
      The newline handling code inside vprintk_emit is a bit involved and
      for now I suggest a revert until this has all the same behavior as
      earlier"
    
    Reported-by: Geert Uytterhoeven <geert@linux-m68k.org>
    Requested-by: Joe Perches <joe@perches.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    torvalds committed Aug 9, 2016
    Configuration menu
    Copy the full SHA
    a0cba21 View commit details
    Browse the repository at this point in the history

Commits on Aug 10, 2016

  1. get_maintainer: Don't check if STDIN exists in a VCS repository

    If get_maintainer is not given any filename arguments on the command line,
    the standard input is read for a patch.
    
    But checking if a VCS has a file named &STDIN is not a good idea and fails.
    
    Verify the nominal input file is not &STDIN before checking the VCS.
    
    Fixes: 4cad35a ("get_maintainer.pl: reduce need for command-line option -f")
    Reported-by: Christopher Covington <cov@codeaurora.org>
    Signed-off-by: Joe Perches <joe@perches.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    JoePerches authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    aec742e View commit details
    Browse the repository at this point in the history
  2. Merge tag 'metag-for-v4.8-rc2' of git://git.kernel.org/pub/scm/linux/…

    …kernel/git/jhogan/metag
    
    Pull metag architecture fix from James Hogan:
     "A single fix for a boot crash since a commit in the merge window.
    
      Metag was unusual in calling show_mem() early, before setup_per_cpu_pageset(),
      which is no longer safe.  It doesn't add much value to the log, so the
      fix just drops the call"
    
    * tag 'metag-for-v4.8-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/jhogan/metag:
      metag: Drop show_mem() from mem_init()
    torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    315581a View commit details
    Browse the repository at this point in the history
  3. Merge branch 'for-linus-4.8' of git://git.kernel.org/pub/scm/linux/ke…

    …rnel/git/mason/linux-btrfs
    
    Pull btrfs fixes from Chris Mason:
     "Some fixes for btrfs send/recv and fsync from Filipe and Robbie Ko.
    
      Bonus points to Filipe for already having xfstests in place for many
      of these"
    
    * 'for-linus-4.8' of git://git.kernel.org/pub/scm/linux/kernel/git/mason/linux-btrfs:
      Btrfs: remove unused function btrfs_add_delayed_qgroup_reserve()
      Btrfs: improve performance on fsync against new inode after rename/unlink
      Btrfs: be more precise on errors when getting an inode from disk
      Btrfs: send, don't bug on inconsistent snapshots
      Btrfs: send, avoid incorrect leaf accesses when sending utimes operations
      Btrfs: send, fix invalid leaf accesses due to incorrect utimes operations
      Btrfs: send, fix warning due to late freeing of orphan_dir_info structures
      Btrfs: incremental send, fix premature rmdir operations
      Btrfs: incremental send, fix invalid paths for rename operations
      Btrfs: send, add missing error check for calls to path_loop()
      Btrfs: send, fix failure to move directories with the same name around
      Btrfs: add missing check for writeback errors on fsync
    torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    9512c47 View commit details
    Browse the repository at this point in the history
  4. arm: oabi compat: add missing access checks

    Add access checks to sys_oabi_epoll_wait() and sys_oabi_semtimedop().
    This fixes CVE-2016-3857, a local privilege escalation under
    CONFIG_OABI_COMPAT.
    
    Cc: stable@vger.kernel.org
    Reported-by: Chiachih Wu <wuchiachih@gmail.com>
    Reviewed-by: Kees Cook <keescook@chromium.org>
    Reviewed-by: Nicolas Pitre <nico@linaro.org>
    Signed-off-by: Dave Weinstein <olorin@google.com>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Dave Weinstein authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    7de2499 View commit details
    Browse the repository at this point in the history
  5. rapidio: dereferencing an error pointer

    Original patch: https://lkml.org/lkml/2016/8/4/32
    
    If riocm_ch_alloc() fails then we end up dereferencing the error
    pointer.
    
    The problem is that we're not unwinding in the reverse order from how we
    allocate things so it gets confusing.  I've changed this around so now
    "ch" is NULL when we are done with it after we call riocm_put_channel().
    That way we can check if it's NULL and avoid calling riocm_put_channel()
    on it twice.
    
    I renamed err_nodev to err_put_new_ch so that it better reflects what
    the goto does.
    
    Then because we had flipping things around, it means we don't neeed to
    initialize the pointers to NULL and we can remove an if statement and
    pull things in an indent level.
    
    Link: http://lkml.kernel.org/r/20160805152406.20713-1-alexandre.bounine@idt.com
    Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
    Signed-off-by: Alexandre Bounine <alexandre.bounine@idt.com>
    Cc: Matt Porter <mporter@kernel.crashing.org>
    Cc: Andre van Herk <andre.van.herk@prodrive-technologies.com>
    Cc: Barry Wood <barry.wood@idt.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    Dan Carpenter authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    7398413 View commit details
    Browse the repository at this point in the history
  6. revert "ARM: keystone: dts: add psci command definition"

    Revert commit 51d5d12 ("ARM: keystone: dts: add psci command
    definition"), which was inadvertently added twice.
    
    Cc: Russell King - ARM Linux <linux@armlinux.org.uk>
    Cc: Vitaly Andrianov <vitalya@ti.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    akpm00 authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    a545de5 View commit details
    Browse the repository at this point in the history
  7. thp: move shmem_huge_enabled() outside of SYSFS ifdef

    The newly introduced shmem_huge_enabled() function has two definitions,
    but neither of them is visible if CONFIG_SYSFS is disabled, leading to a
    build error:
    
      mm/khugepaged.o: In function `khugepaged':
      khugepaged.c:(.text.khugepaged+0x3ca): undefined reference to `shmem_huge_enabled'
    
    This changes the #ifdef guards around the definition to match those that
    are used in the header file.
    
    Fixes: e496cf3 ("thp: introduce CONFIG_TRANSPARENT_HUGE_PAGECACHE")
    Link: http://lkml.kernel.org/r/20160809123638.1357593-1-arnd@arndb.de
    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    arndb authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    3b33719 View commit details
    Browse the repository at this point in the history
  8. mm/page_alloc.c: fix wrong initialization when sysctl_min_unmapped_ra…

    …tio changes
    
    Before resetting min_unmapped_pages, we need to initialize
    min_unmapped_pages rather than min_slab_pages.
    
    Fixes: a5f5f91 (mm: convert zone_reclaim to node_reclaim)
    Link: http://lkml.kernel.org/r/1470724248-26780-1-git-send-email-iamjoonsoo.kim@lge.com
    Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Acked-by: Mel Gorman <mgorman@techsingularity.net>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    JoonsooKim authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    81cbcbc View commit details
    Browse the repository at this point in the history
  9. mm/page_alloc.c: recalculate some of node threshold when on/offline m…

    …emory
    
    Some of node threshold depends on number of managed pages in the node.
    When memory is going on/offline, it can be changed and we need to adjust
    them.
    
    Add recalculation to appropriate places and clean-up related functions
    for better maintenance.
    
    Link: http://lkml.kernel.org/r/1470724248-26780-2-git-send-email-iamjoonsoo.kim@lge.com
    Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Acked-by: Mel Gorman <mgorman@techsingularity.net>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Minchan Kim <minchan@kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    JoonsooKim authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    6423aa8 View commit details
    Browse the repository at this point in the history
  10. mm, rmap: fix false positive VM_BUG() in page_add_file_rmap()

    PageTransCompound() doesn't distinguish THP from from any other type of
    compound pages.  This can lead to false-positive VM_BUG_ON() in
    page_add_file_rmap() if called on compound page from a driver[1].
    
    I think we can exclude such cases by checking if the page belong to a
    mapping.
    
    The VM_BUG_ON_PAGE() is downgraded to VM_WARN_ON_ONCE().  This path
    should not cause any harm to non-THP page, but good to know if we step
    on anything else.
    
    [1] http://lkml.kernel.org/r/c711e067-0bff-a6cb-3c37-04dfe77d2db1@redhat.com
    
    Link: http://lkml.kernel.org/r/20160810161345.GA67522@black.fi.intel.com
    Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Reported-by: Laura Abbott <labbott@redhat.com>
    Tested-by: Laura Abbott <labbott@redhat.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    kiryl authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    c8efc39 View commit details
    Browse the repository at this point in the history
  11. rmap: fix compound check logic in page_remove_file_rmap

    In page_remove_file_rmap(.) we have the following check:
    
      VM_BUG_ON_PAGE(compound && !PageTransHuge(page), page);
    
    This is meant to check for either HugeTLB pages or THP when a compound
    page is passed in.
    
    Unfortunately, if one disables CONFIG_TRANSPARENT_HUGEPAGE, then
    PageTransHuge(.) will always return false, provoking BUGs when one runs
    the libhugetlbfs test suite.
    
    This patch replaces PageTransHuge(), with PageHead() which will work for
    both HugeTLB and THP.
    
    Fixes: dd78fed ("rmap: support file thp")
    Link: http://lkml.kernel.org/r/1470838217-5889-1-git-send-email-steve.capper@arm.com
    Signed-off-by: Steve Capper <steve.capper@arm.com>
    Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Huang Shijie <shijie.huang@arm.com>
    Cc: Will Deacon <will.deacon@arm.com>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    stevecapperarm authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    57dea93 View commit details
    Browse the repository at this point in the history
  12. mm/slub.c: run free_partial() outside of the kmem_cache_node->list_lock

    With debugobjects enabled and using SLAB_DESTROY_BY_RCU, when a
    kmem_cache_node is destroyed the call_rcu() may trigger a slab
    allocation to fill the debug object pool (__debug_object_init:fill_pool).
    
    Everywhere but during kmem_cache_destroy(), discard_slab() is performed
    outside of the kmem_cache_node->list_lock and avoids a lockdep warning
    about potential recursion:
    
      =============================================
      [ INFO: possible recursive locking detected ]
      4.8.0-rc1-gfxbench+ #1 Tainted: G     U
      ---------------------------------------------
      rmmod/8895 is trying to acquire lock:
       (&(&n->list_lock)->rlock){-.-...}, at: [<ffffffff811c80d7>] get_partial_node.isra.63+0x47/0x430
    
      but task is already holding lock:
       (&(&n->list_lock)->rlock){-.-...}, at: [<ffffffff811cbda4>] __kmem_cache_shutdown+0x54/0x320
    
      other info that might help us debug this:
      Possible unsafe locking scenario:
            CPU0
            ----
       lock(&(&n->list_lock)->rlock);
       lock(&(&n->list_lock)->rlock);
    
       *** DEADLOCK ***
       May be due to missing lock nesting notation
       5 locks held by rmmod/8895:
       #0:  (&dev->mutex){......}, at: driver_detach+0x42/0xc0
       #1:  (&dev->mutex){......}, at: driver_detach+0x50/0xc0
       #2:  (cpu_hotplug.dep_map){++++++}, at: get_online_cpus+0x2d/0x80
       #3:  (slab_mutex){+.+.+.}, at: kmem_cache_destroy+0x3c/0x220
       #4:  (&(&n->list_lock)->rlock){-.-...}, at: __kmem_cache_shutdown+0x54/0x320
    
      stack backtrace:
      CPU: 6 PID: 8895 Comm: rmmod Tainted: G     U          4.8.0-rc1-gfxbench+ #1
      Hardware name: Gigabyte Technology Co., Ltd. H87M-D3H/H87M-D3H, BIOS F11 08/18/2015
      Call Trace:
        __lock_acquire+0x1646/0x1ad0
        lock_acquire+0xb2/0x200
        _raw_spin_lock+0x36/0x50
        get_partial_node.isra.63+0x47/0x430
        ___slab_alloc.constprop.67+0x1a7/0x3b0
        __slab_alloc.isra.64.constprop.66+0x43/0x80
        kmem_cache_alloc+0x236/0x2d0
        __debug_object_init+0x2de/0x400
        debug_object_activate+0x109/0x1e0
        __call_rcu.constprop.63+0x32/0x2f0
        call_rcu+0x12/0x20
        discard_slab+0x3d/0x40
        __kmem_cache_shutdown+0xdb/0x320
        shutdown_cache+0x19/0x60
        kmem_cache_destroy+0x1ae/0x220
        i915_gem_load_cleanup+0x14/0x40 [i915]
        i915_driver_unload+0x151/0x180 [i915]
        i915_pci_remove+0x14/0x20 [i915]
        pci_device_remove+0x34/0xb0
        __device_release_driver+0x95/0x140
        driver_detach+0xb6/0xc0
        bus_remove_driver+0x53/0xd0
        driver_unregister+0x27/0x50
        pci_unregister_driver+0x25/0x70
        i915_exit+0x1a/0x1e2 [i915]
        SyS_delete_module+0x193/0x1f0
        entry_SYSCALL_64_fastpath+0x1c/0xac
    
    Fixes: 52b4b95 ("mm: slab: free kmem_cache_node after destroy sysfs file")
    Link: http://lkml.kernel.org/r/1470759070-18743-1-git-send-email-chris@chris-wilson.co.uk
    Reported-by: Dave Gordon <david.s.gordon@intel.com>
    Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
    Reviewed-by: Vladimir Davydov <vdavydov@virtuozzo.com>
    Acked-by: Christoph Lameter <cl@linux.com>
    Cc: Pekka Enberg <penberg@kernel.org>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Dmitry Safonov <dsafonov@virtuozzo.com>
    Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
    Cc: Dave Gordon <david.s.gordon@intel.com>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
    Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
    ickle authored and torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    6039892 View commit details
    Browse the repository at this point in the history
  13. Merge branch 'akpm' (patches from Andrew)

    Merge misc fixes from Andrew Morton:
     "8 fixes"
    
    * emailed patches from Andrew Morton <akpm@linux-foundation.org>:
      mm/slub.c: run free_partial() outside of the kmem_cache_node->list_lock
      rmap: fix compound check logic in page_remove_file_rmap
      mm, rmap: fix false positive VM_BUG() in page_add_file_rmap()
      mm/page_alloc.c: recalculate some of node threshold when on/offline memory
      mm/page_alloc.c: fix wrong initialization when sysctl_min_unmapped_ratio changes
      thp: move shmem_huge_enabled() outside of SYSFS ifdef
      revert "ARM: keystone: dts: add psci command definition"
      rapidio: dereferencing an error pointer
    torvalds committed Aug 10, 2016
    Configuration menu
    Copy the full SHA
    85e97be View commit details
    Browse the repository at this point in the history