1. 08 Aug, 2016 25 commits
    • Jyri Sarha's avatar
      drm/tilcdc: panel: Add atomic modeset helpers to connector funcs · 0f65d89b
      Jyri Sarha authored
      Add atomic modeset helpers to panel connector funcs. Property handling
      related helpers, atomic reset helper, and new dpms helper is needed in
      connector for atomic modeseting to work. The default helper functions
      are enough.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      0f65d89b
    • Jyri Sarha's avatar
      drm/tilcdc: panel: Set crtc panel info at init phase · ee6de21b
      Jyri Sarha authored
      Set crtc panel info at init phase. Setting it at prepare callback does
      it multiple times for no good reason and it is also too late when atomic
      modeset is used.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      ee6de21b
    • Jyri Sarha's avatar
      drm/tilcdc: Remove tilcdc_verify_fb() · c72cc663
      Jyri Sarha authored
      Remove tilcdc_verify_fb(). The tilcdc_verify_fb() function is not
      needed because the same checks are implemented in
      tilcdc_plane_atomic_check().
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      c72cc663
    • Jyri Sarha's avatar
      drm/tilcdc: Remove obsolete crtc helper functions · 6b4736db
      Jyri Sarha authored
      Remove obsolete crtc helper functions. These are not needed when
      atomic modeset is used.
      
      Note that the drm_crtc_helper_funcs mode_fixup() is still needed. The
      crtc's check() callback can not do its job here.
      
      The plane's check() callback needs to set drm_crtc_state's
      ->mode_changed to true if the pixel format for the framebuffer
      changes. Because of this drm_mode_config_funcs atomic_check() callback
      needs to call drm_atomic_helper_check_modeset() once more after it has
      called drm_atomic_helper_check_planes(). If the fixing of the
      adjusted_mode would be done in drm_crtc_helper_funcs atomic_check()
      callback, it would get over written by the extra
      drm_atomic_helper_check_modeset() call.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      6b4736db
    • Jyri Sarha's avatar
      drm/tilcdc: Set DRIVER_ATOMIC and use atomic crtc helpers · 305198de
      Jyri Sarha authored
      Set DRIVER_ATOMIC and use atomic helpers and rename commit and prepare
      crtc helpers to enable and disable. This makes the final jump to mode
      setting, but there is lot of obsolete code to clean up.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      305198de
    • Jyri Sarha's avatar
      drm/tilcdc: Add drm_mode_config_reset() call to tilcdc_load() · 522a76f8
      Jyri Sarha authored
      Add drm_mode_config_reset() call to tilcdc_load(). This is need to
      initialize atomic state variables at load time.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      522a76f8
    • Jyri Sarha's avatar
      drm/tilcdc: Add atomic mode config funcs · edc43303
      Jyri Sarha authored
      Add atomic mode config funcs. The atomic_commit implementation is a
      copy-paste from drm_atomic_helper_commit(), leaving out the async
      test. The similar copy-paste implementation appears to be used in many
      other drivers too. The standard drm_atomic_helper_check() is used for
      checking.
      
      The drm_atomic_helper_check() can not be used in drm_mode_config_funcs
      atomic_check() callback because the plane's check implementation may
      update crtc state's ->mode_changed flag. Because of this the
      drm_atomic_helper_check_modeset() has to be called once more after
      drm_atomic_helper_check_planes() (see drm_atomic_helper_check_modeset()
      documentation).
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      edc43303
    • Jyri Sarha's avatar
      drm/tilcdc: Add tilcdc_crtc_atomic_check() · db380c58
      Jyri Sarha authored
      Add tilcdc_crtc_atomic_check(). Checks the display mode validity and
      the presence of the mandatory primary plane.
      
      The drm_crtc_helper_funcs mode_fixup() callback is left untouched and
      the check function does no try to do its job on purpose, despite what
      the mode_fixup() callback's documentations suggests.
      
      The plane's check() callback needs to set drm_crtc_state's
      ->mode_changed to true if the pixel format for the framebuffer
      changes. Because of this drm_mode_config_funcs atomic_check() callback
      needs to call drm_atomic_helper_check_modeset() once more after it has
      called drm_atomic_helper_check_planes(). If the fixing of the
      adjusted_mode would be done in drm_crtc_helper_funcs atomic_check()
      callback, it would get over written by the extra
      drm_atomic_helper_check_modeset() call.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      db380c58
    • Jyri Sarha's avatar
      drm/tilcdc: Add tilcdc_crtc_mode_set_nofb() · f6382f18
      Jyri Sarha authored
      Add tilcdc_crtc_mode_set_nofb(). The mode_set_nofb() semantics do not
      fit well to LCDC, because of the mandatory framebuffer. However, when
      the primary plane is required in the check phase, it and the
      framebuffer can be found from the atomic state struct.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      f6382f18
    • Jyri Sarha's avatar
      drm/tilcdc: Initialize dummy primary plane from crtc init · 47f571c6
      Jyri Sarha authored
      Initialize dummy primary plane from crtc init.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      47f571c6
    • Jyri Sarha's avatar
      drm/tilcdc: Add dummy primary plane implementation · b961c48b
      Jyri Sarha authored
      Add dummy primary plane implementation. LCDC does not really have
      planes, only simple framebuffer that is mandatory. This primary plane
      implementation has the necessary checks for implementing simple
      framebuffer trough DRM plane abstraction. For setting the actual
      framebuffer the implementation relies on a CRTC side function.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      b961c48b
    • Jyri Sarha's avatar
      drm/tilcdc: Make tilcdc_crtc_page_flip() work if crtc is not yet on · 0a1fe1b7
      Jyri Sarha authored
      Make tilcdc_crtc_page_flip() work if crtc is not yet on. The plane
      commit sometimes comes before crtc is turned on. The new framebuffer
      should be set to scanout also in that case, so that it is there when
      crtc is turned on at the end of the commit phase.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      0a1fe1b7
    • Jyri Sarha's avatar
      drm/tilcdc: Make tilcdc_crtc_page_flip() public · 8c65abb9
      Jyri Sarha authored
      Make tilcdc_crtc_page_flip() public for dummy plane implementation to use.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      8c65abb9
    • Jyri Sarha's avatar
      drm/tilcdc: Fix tilcdc component master unloading · 20a98acb
      Jyri Sarha authored
      Fix tilcdc component master unloading. If a subcomponent module
      (tda998x in this case) is unloaded before its master (tilcdc in this
      case), it calls drm_put_dev() and it should not be called again by
      the master when its module is unloaded. However component_master_del()
      must still be called and the check if the drm_put_dev() has been
      called must be in component_master_ops unbind() callback, not in
      platform_driver remove() callback.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      20a98acb
    • Jyri Sarha's avatar
      drm/tilcdc: Avoid error print by of_graph_get_next_endpoint() · 10a55a18
      Jyri Sarha authored
      Avoid error print by of_graph_get_next_endpoint() if there is no ports
      present.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      10a55a18
    • Jyri Sarha's avatar
      drm/tilcdc: Refer to panel.txt and tfp410.txt bindings in tilcdc.txt · 24b31ba0
      Jyri Sarha authored
      The legacy panel.txt and tfp410.txt bindings are still the only supported
      way to connect lcd panel and tfp410 DVI encoder to tilcdc.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      24b31ba0
    • Jyri Sarha's avatar
      drm/tilcdc: Call drm_crtc_vblank_on() and *_off() in start() and stop() · d85f850e
      Jyri Sarha authored
      Add drm_crtc_vblank_on() and *_off() calls to start() and stop()
      functions, to make sure any vblank waits etc. gets properly cleaned
      up.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      d85f850e
    • Jyri Sarha's avatar
      drm/tilcdc: Increase time out for waiting frame done interrupt · 437c7d94
      Jyri Sarha authored
      Increase time out for waiting frame done interrupt. 50ms is long
      enough for the usual display modes (50 Hz or higher refresh rate), but
      it may be a bit tight for some unusual mode.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      437c7d94
    • Jyri Sarha's avatar
      drm/tilcdc: Move waiting of LCDC_FRAME_DONE IRQ into stop() · 2d5be882
      Jyri Sarha authored
      Move wait queue waiting of LCDC_FRAME_DONE IRQ from tilcdc_crtc_dpms()
      into stop() function. This is just a cleanup and enables independent
      use of stop() function.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      2d5be882
    • Jyri Sarha's avatar
      drm/tilcdc: Write to LCDC_END_OF_INT_IND_REG at the end of IRQ function · 14944113
      Jyri Sarha authored
      Reorder the IRQ function so that the write to LCDC_END_OF_INT_IND_REG
      is done last. The write to LCDC_END_OF_INT_IND_REG indicates to LCDC
      that the interrupt service routine has completed (see section
      13.3.6.1.6 in AM335x TRM). This is needed if LCDC's ipgvmodirq module
      is configured for pulse interrupts.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      14944113
    • Jyri Sarha's avatar
      drm/tilcdc: Move LCDC_SYNC_LOST handling inside if (ver == 2) statement · 1abcdac8
      Jyri Sarha authored
      Move LCDC_SYNC_LOST handling inside if (ver == 2) statement.
      LCDC_SYNC_LOST interrupt status bit is only defined for version 2
      silicon.
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      1abcdac8
    • Jyri Sarha's avatar
      drm/tilcdc: Restore old dpms state in pm_resume() · 8fe5616b
      Jyri Sarha authored
      Restore old dpms state in pm_resume(). The dpms is turned off in
      pm_suspend() and it should be restored to its original state in
      pm_resume(). Without this patch the display is left blanked after a
      suspend/resume cycle.
      
      Fixes commit 614b3cfe ("drm/tilcdc: disable the lcd controller/dma
      engine when suspend invoked")
      Signed-off-by: default avatarJyri Sarha <jsarha@ti.com>
      8fe5616b
    • Daniel Vetter's avatar
      drm: Paper over locking inversion after registration rework · 5c6c201c
      Daniel Vetter authored
      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: default avatarImre Deak <imre.deak@intel.com>
      Cc: Imre Deak <imre.deak@intel.com>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Acked-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
      Reported-by: default avatarJiri Kosina <jikos@kernel.org>
      Cc: Jiri Kosina <jikos@kernel.org>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      5c6c201c
    • Laurent Pinchart's avatar
      drm: rcar-du: Link HDMI encoder with bridge · 29986cc8
      Laurent Pinchart authored
      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: 1d926114 ("drm: rcar-du: Remove i2c slave encoder interface for hdmi encoder")
      Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      29986cc8
    • Linus Torvalds's avatar
      Linux 4.8-rc1 · 29b4817d
      Linus Torvalds authored
      29b4817d
  2. 07 Aug, 2016 10 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/linux-block · 857953d7
      Linus Torvalds authored
      Pull more block fixes from Jens Axboe:
       "As mentioned in the pull the other day, a few more fixes for this
        round, all related to the bio op changes in this series.
      
        Two fixes, and then a cleanup, renaming bio->bi_rw to bio->bi_opf.  I
        wanted to do that change right after or right before -rc1, so that
        risk of conflict was reduced.  I just rebased the series on top of
        current master, and no new ->bi_rw usage has snuck in"
      
      * 'for-linus' of git://git.kernel.dk/linux-block:
        block: rename bio bi_rw to bi_opf
        target: iblock_execute_sync_cache() should use bio_set_op_attrs()
        mm: make __swap_writepage() use bio_set_op_attrs()
        block/mm: make bdev_ops->rw_page() take a bool for read/write
      857953d7
    • Linus Torvalds's avatar
      Merge tag 'drm-for-v4.8-zpos' of git://people.freedesktop.org/~airlied/linux · 635a4ba1
      Linus Torvalds authored
      Pull drm zpos property support from Dave Airlie:
       "This tree was waiting on some media stuff I hadn't had time to get a
        stable branchpoint off, so I just waited until it was all in your tree
        first.
      
        It's been around a bit on the list and shouldn't affect anything
        outside adding the generic API and moving some ARM drivers to using
        it"
      
      * tag 'drm-for-v4.8-zpos' of git://people.freedesktop.org/~airlied/linux:
        drm: rcar: use generic code for managing zpos plane property
        drm/exynos: use generic code for managing zpos plane property
        drm: sti: use generic zpos for plane
        drm: add generic zpos property
      635a4ba1
    • Jens Axboe's avatar
      block: rename bio bi_rw to bi_opf · 1eff9d32
      Jens Axboe authored
      Since commit 63a4cc24, bio->bi_rw contains flags in the lower
      portion and the op code in the higher portions. This means that
      old code that relies on manually setting bi_rw is most likely
      going to be broken. Instead of letting that brokeness linger,
      rename the member, to force old and out-of-tree code to break
      at compile time instead of at runtime.
      
      No intended functional changes in this commit.
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      1eff9d32
    • Jens Axboe's avatar
      target: iblock_execute_sync_cache() should use bio_set_op_attrs() · 31c64f78
      Jens Axboe authored
      The original commit missed this function, it needs to mark it a
      write flush.
      
      Cc: Mike Christie <mchristi@redhat.com>
      Fixes: e742fc32 ("target: use bio op accessors")
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      31c64f78
    • Jens Axboe's avatar
      mm: make __swap_writepage() use bio_set_op_attrs() · ba13e83e
      Jens Axboe authored
      Cleaner than manipulating bio->bi_rw flags directly.
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      ba13e83e
    • Jens Axboe's avatar
      block/mm: make bdev_ops->rw_page() take a bool for read/write · c11f0c0b
      Jens Axboe authored
      Commit abf54548 changed it from an 'rw' flags type to the
      newer ops based interface, but now we're effectively leaking
      some bdev internals to the rest of the kernel. Since we only
      care about whether it's a read or a write at that level, just
      pass in a bool 'is_write' parameter instead.
      
      Then we can also move op_is_write() and friends back under
      CONFIG_BLOCK protection.
      Reviewed-by: default avatarMike Christie <mchristi@redhat.com>
      Signed-off-by: default avatarJens Axboe <axboe@fb.com>
      c11f0c0b
    • Linus Torvalds's avatar
      Merge tag 'doc-4.8-fixes' of git://git.lwn.net/linux · 52ddb7e9
      Linus Torvalds authored
      Pull documentation fixes from Jonathan Corbet:
       "Three fixes for the docs build, including removing an annoying warning
        on 'make help' if sphinx isn't present"
      
      * tag 'doc-4.8-fixes' of git://git.lwn.net/linux:
        DocBook: use DOCBOOKS="" to ignore DocBooks instead of IGNORE_DOCBOOKS=1
        Documenation: update cgroup's document path
        Documentation/sphinx: do not warn about missing tools in 'make help'
      52ddb7e9
    • Linus Torvalds's avatar
      Merge tag 'binfmt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/binfmt_misc · e9d488c3
      Linus Torvalds authored
      Pull binfmt_misc update from James Bottomley:
       "This update is to allow architecture emulation containers to function
        such that the emulation binary can be housed outside the container
        itself.  The container and fs parts both have acks from relevant
        experts.
      
        To use the new feature you have to add an F option to your binfmt_misc
        configuration"
      
      From the docs:
       "The usual behaviour of binfmt_misc is to spawn the binary lazily when
        the misc format file is invoked.  However, this doesn't work very well
        in the face of mount namespaces and changeroots, so the F mode opens
        the binary as soon as the emulation is installed and uses the opened
        image to spawn the emulator, meaning it is always available once
        installed, regardless of how the environment changes"
      
      * tag 'binfmt-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/binfmt_misc:
        binfmt_misc: add F option description to documentation
        binfmt_misc: add persistent opened binary handler for containers
        fs: add filp_clone_open API
      e9d488c3
    • Eryu Guan's avatar
      fs: return EPERM on immutable inode · 337684a1
      Eryu Guan authored
      In most cases, EPERM is returned on immutable inode, and there're only a
      few places returning EACCES. I noticed this when running LTP on
      overlayfs, setxattr03 failed due to unexpected EACCES on immutable
      inode.
      
      So converting all EACCES to EPERM on immutable inode.
      Acked-by: default avatarDave Chinner <dchinner@redhat.com>
      Signed-off-by: default avatarEryu Guan <guaneryu@gmail.com>
      Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      337684a1
    • Linus Torvalds's avatar
      Merge branch 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · fe64f328
      Linus Torvalds authored
      Pull more vfs updates from Al Viro:
       "Assorted cleanups and fixes.
      
        In the "trivial API change" department - ->d_compare() losing 'parent'
        argument"
      
      * 'for-linus-2' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        cachefiles: Fix race between inactivating and culling a cache object
        9p: use clone_fid()
        9p: fix braino introduced in "9p: new helper - v9fs_parent_fid()"
        vfs: make dentry_needs_remove_privs() internal
        vfs: remove file_needs_remove_privs()
        vfs: fix deadlock in file_remove_privs() on overlayfs
        get rid of 'parent' argument of ->d_compare()
        cifs, msdos, vfat, hfs+: don't bother with parent in ->d_compare()
        affs ->d_compare(): don't bother with ->d_inode
        fold _d_rehash() and __d_rehash() together
        fold dentry_rcuwalk_invalidate() into its only remaining caller
      fe64f328
  3. 06 Aug, 2016 5 commits
    • Linus Torvalds's avatar
      Merge tag 'xfs-rmap-for-linus-4.8-rc1' of... · 0cbbc422
      Linus Torvalds authored
      Merge tag 'xfs-rmap-for-linus-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs
      
      Pull more xfs updates from Dave Chinner:
       "This is the second part of the XFS updates for this merge cycle, and
        contains the new reverse block mapping feature for XFS.
      
        Reverse mapping allows us to track the owner of a specific block on
        disk precisely.  It is implemented as a set of btrees (one per
        allocation group) that track the owners of allocated extents.
        Effectively it is a "used space tree" that is updated when we allocate
        or free extents.  i.e. it is coherent with the free space btrees we
        already maintain and never overlaps with them.
      
        This reverse mapping infrastructure is the building block of several
        upcoming features - reflink, copy-on-write data, dedupe, online
        metadata and data scrubbing, highly accurate bad sector/data loss
        reporting to users, and significantly improved reconstruction of
        damaged and corrupted filesystems.  There's a lot of new stuff coming
        along in the next couple of cycles,a nd it all builds in the rmap
        infrastructure.
      
        As such, it's a huge chunk of new code with new on-disk format
        features and internal infrastructure.  It warns at mount time as an
        experimental feature and that it may eat data (as we do with all new
        on-disk features until they stabilise).  We have not released
        userspace suport for it yet - userspace support currently requires
        download from Darrick's xfsprogs repo and build from source, so the
        access to this feature is really developer/tester only at this point.
        Initial userspace support will be released at the same time kernel
        with this code in it is released.
      
        The new rmap enabled code regresses 3 xfstests - all are ENOSPC
        related corner cases, one of which Darrick posted a fix for a few
        hours ago.  The other two are fixed by infrastructure that is part of
        the upcoming reflink patchset.  This new ENOSPC infrastructure
        requires a on-disk format tweak required to keep mount times in
        check - we need to keep an on-disk count of allocated rmapbt blocks so
        we don't have to scan the entire btrees at mount time to count them.
      
        This is currently being tested and will be part of the fixes sent in
        the next week or two so users will not be exposed to this change"
      
      * tag 'xfs-rmap-for-linus-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/dgc/linux-xfs: (52 commits)
        xfs: move (and rename) the deferred bmap-free tracepoints
        xfs: collapse single use static functions
        xfs: remove unnecessary parentheses from log redo item recovery functions
        xfs: remove the extents array from the rmap update done log item
        xfs: in btree_lshift, only allocate temporary cursor when needed
        xfs: remove unnecesary lshift/rshift key initialization
        xfs: remove the get*keys and update_keys btree ops pointers
        xfs: enable the rmap btree functionality
        xfs: don't update rmapbt when fixing agfl
        xfs: disable XFS_IOC_SWAPEXT when rmap btree is enabled
        xfs: add rmap btree block detection to log recovery
        xfs: add rmap btree geometry feature flag
        xfs: propagate bmap updates to rmapbt
        xfs: enable the xfs_defer mechanism to process rmaps to update
        xfs: log rmap intent items
        xfs: create rmap update intent log items
        xfs: add rmap btree insert and delete helpers
        xfs: convert unwritten status of reverse mappings
        xfs: remove an extent from the rmap btree
        xfs: add an extent to the rmap btree
        ...
      0cbbc422
    • Linus Torvalds's avatar
      Merge branch 'work.const-qstr' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs · 835c92d4
      Linus Torvalds authored
      Pull qstr constification updates from Al Viro:
       "Fairly self-contained bunch - surprising lot of places passes struct
        qstr * as an argument when const struct qstr * would suffice; it
        complicates analysis for no good reason.
      
        I'd prefer to feed that separately from the assorted fixes (those are
        in #for-linus and with somewhat trickier topology)"
      
      * 'work.const-qstr' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs:
        qstr: constify instances in adfs
        qstr: constify instances in lustre
        qstr: constify instances in f2fs
        qstr: constify instances in ext2
        qstr: constify instances in vfat
        qstr: constify instances in procfs
        qstr: constify instances in fuse
        qstr constify instances in fs/dcache.c
        qstr: constify instances in nfs
        qstr: constify instances in ocfs2
        qstr: constify instances in autofs4
        qstr: constify instances in hfs
        qstr: constify instances in hfsplus
        qstr: constify instances in logfs
        qstr: constify dentry_init_security
      835c92d4
    • Linus Torvalds's avatar
      Merge tag 'media/v4.8-6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media · ce804bf5
      Linus Torvalds authored
      Pull mailcap fixlets from Mauro Carvalho Chehab:
       "A small fixup for my and Shuah's entries in .mailcap.
      
        Basically, those entries were with a syntax that makes
        get_maintainer.pl to do the wrong thing"
      
      * tag 'media/v4.8-6' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media:
        .mailmap: Correct entries for Mauro Carvalho Chehab and Shuah Khan
      ce804bf5
    • Linus Torvalds's avatar
      Merge tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost · 0803e040
      Linus Torvalds authored
      Pull virtio/vhost updates from Michael Tsirkin:
      
       - new vsock device support in host and guest
      
       - platform IOMMU support in host and guest, including compatibility
         quirks for legacy systems.
      
       - misc fixes and cleanups.
      
      * tag 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost:
        VSOCK: Use kvfree()
        vhost: split out vringh Kconfig
        vhost: detect 32 bit integer wrap around
        vhost: new device IOTLB API
        vhost: drop vringh dependency
        vhost: convert pre sorted vhost memory array to interval tree
        vhost: introduce vhost memory accessors
        VSOCK: Add Makefile and Kconfig
        VSOCK: Introduce vhost_vsock.ko
        VSOCK: Introduce virtio_transport.ko
        VSOCK: Introduce virtio_vsock_common.ko
        VSOCK: defer sock removal to transports
        VSOCK: transport-specific vsock_transport functions
        vhost: drop vringh dependency
        vop: pull in vhost Kconfig
        virtio: new feature to detect IOMMU device quirk
        balloon: check the number of available pages in leak balloon
        vhost: lockless enqueuing
        vhost: simplify work flushing
      0803e040
    • Linus Torvalds's avatar
      Merge tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm · 80fac0f5
      Linus Torvalds authored
      Pull more KVM updates from Paolo Bonzini:
       - ARM bugfix and MSI injection support
       - x86 nested virt tweak and OOPS fix
       - Simplify pvclock code (vdso bits acked by Andy Lutomirski).
      
      * tag 'for-linus' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
        nvmx: mark ept single context invalidation as supported
        nvmx: remove comment about missing nested vpid support
        KVM: lapic: fix access preemption timer stuff even if kernel_irqchip=off
        KVM: documentation: fix KVM_CAP_X2APIC_API information
        x86: vdso: use __pvclock_read_cycles
        pvclock: introduce seqcount-like API
        arm64: KVM: Set cpsr before spsr on fault injection
        KVM: arm: vgic-irqfd: Workaround changing kvm_set_routing_entry prototype
        KVM: arm/arm64: Enable MSI routing
        KVM: arm/arm64: Enable irqchip routing
        KVM: Move kvm_setup_default/empty_irq_routing declaration in arch specific header
        KVM: irqchip: Convey devid to kvm_set_msi
        KVM: Add devid in kvm_kernel_irq_routing_entry
        KVM: api: Pass the devid in the msi routing entry
      80fac0f5