1. 30 3月, 2015 1 次提交
  2. 26 3月, 2015 3 次提交
    • D
      drm/i915: Fixup legacy plane->crtc link for initial fb config · 5f407751
      Daniel Vetter 提交于
      This is a very similar bug in the load detect code fixed in
      
      commit 9128b040
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Tue Mar 3 17:31:21 2015 +0100
      
          drm/i915: Fix modeset state confusion in the load detect code
      
      But this time around it was the initial fb code that forgot to update
      the plane->crtc pointer. Otherwise it's the exact same bug, with the
      exact same restrains (any set_config call/ioctl that doesn't disable
      the pipe papers over the bug for free, so fairly hard to hit in normal
      testing). So if you want the full explanation just go read that one
      over there - it's rather long ...
      
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: Linus Torvalds <torvalds@linux-foundation.org>
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Josh Boyer <jwboyer@fedoraproject.org>
      Cc: Jani Nikula <jani.nikula@linux.intel.com>
      Reported-and-tested-by: NJosh Boyer <jwboyer@fedoraproject.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      [Jani: backported to drm-intel-fixes for v4.0-rc]
      Reference: http://mid.gmane.org/CA+5PVA7ChbtJrknqws1qvZcbrg1CW2pQAFkSMURWWgyASRyGXg@mail.gmail.comSigned-off-by: NJani Nikula <jani.nikula@intel.com>
      5f407751
    • D
      drm/i915: Fix atomic state when reusing the firmware fb · 3164a803
      Damien Lespiau 提交于
      Right now, we get a warning when taking over the firmware fb:
      
        [drm:drm_atomic_plane_check] FB set but no CRTC
      
      with the following backtrace:
      
        [<ffffffffa010339d>] drm_atomic_check_only+0x35d/0x510 [drm]
        [<ffffffffa0103567>] drm_atomic_commit+0x17/0x60 [drm]
        [<ffffffffa00a6ccd>] drm_atomic_helper_plane_set_property+0x8d/0xd0 [drm_kms_helper]
        [<ffffffffa00f1fed>] drm_mode_plane_set_obj_prop+0x2d/0x90 [drm]
        [<ffffffffa00a8a1b>] restore_fbdev_mode+0x6b/0xf0 [drm_kms_helper]
        [<ffffffffa00aa969>] drm_fb_helper_restore_fbdev_mode_unlocked+0x29/0x80 [drm_kms_helper]
        [<ffffffffa00aa9e2>] drm_fb_helper_set_par+0x22/0x50 [drm_kms_helper]
        [<ffffffffa050a71a>] intel_fbdev_set_par+0x1a/0x60 [i915]
        [<ffffffff813ad444>] fbcon_init+0x4f4/0x580
      
      That's because we update the plane state with the fb from the firmware, but we
      never associate the plane to that CRTC.
      
      We don't quite have the full DRM take over from HW state just yet, so
      fake enough of the plane atomic state to pass the checks.
      
      v2: Fix the state on which we set the CRTC in the case we're sharing the
          initial fb with another pipe. (Matt)
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      [Jani: backported to drm-intel-fixes for v4.0-rc]
      Reference: http://mid.gmane.org/CA+5PVA7yXH=U757w8V=Zj2U1URG4nYNav20NpjtQ4svVueyPNw@mail.gmail.com
      Reference: http://lkml.kernel.org/r/CA+55aFweWR=nDzc2Y=rCtL_H8JfdprQiCimN5dwc+TgyD4Bjsg@mail.gmail.comSigned-off-by: NJani Nikula <jani.nikula@intel.com>
      3164a803
    • C
      drm/i915: Keep ring->active_list and ring->requests_list consistent · 832a3aad
      Chris Wilson 提交于
      If we retire requests last, we may use a later seqno and so clear
      the requests lists without clearing the active list, leading to
      confusion. Hence we should retire requests first for consistency with
      the early return. The order used to be important as the lifecycle for
      the object on the active list was determined by request->seqno. However,
      the requests themselves are now reference counted removing the
      constraint from the order of retirement.
      
      Fixes regression from
      
      commit 1b5a433a
      Author: John Harrison <John.C.Harrison@Intel.com>
      Date:   Mon Nov 24 18:49:42 2014 +0000
      
          drm/i915: Convert 'i915_seqno_passed' calls into 'i915_gem_request_completed
      '
      
      and a
      
      	WARNING: CPU: 0 PID: 1383 at drivers/gpu/drm/i915/i915_gem_evict.c:279 i915_gem_evict_vm+0x10c/0x140()
      	WARN_ON(!list_empty(&vm->active_list))
      
      Identified by updating WATCH_LISTS:
      
      	[drm:i915_verify_lists] *ERROR* blitter ring: active list not empty, but no requests
      	WARNING: CPU: 0 PID: 681 at drivers/gpu/drm/i915/i915_gem.c:2751 i915_gem_retire_requests_ring+0x149/0x230()
      	WARN_ON(i915_verify_lists(ring->dev))
      
      Note that this is only a problem in evict_vm where the following happens
      after a retire_request has cleaned out all requests, but not all active
      bo:
      - intel_ring_idle called from i915_gpu_idle notices that no requests are
        outstanding and immediately returns.
      - i915_gem_retire_requests_ring called from i915_gem_retire_requests also
        immediately returns when there's no request, still leaving the bo on the
        active list.
      - evict_vm hits the WARN_ON(!list_empty(&vm->active_list)) after evicting
        all active objects that there's still stuff left that shouldn't be
        there.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: John Harrison <John.C.Harrison@Intel.com>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      832a3aad
  3. 25 3月, 2015 1 次提交
    • D
      drm/i915: Don't try to reference the fb in get_initial_plane_config() · 59a58cb3
      Damien Lespiau 提交于
      Tvrtko noticed a new warning on boot:
      
        WARNING: CPU: 1 PID: 353 at include/linux/kref.h:47 drm_framebuffer_reference+0x6c/0x80 [drm]()
        Call Trace:
        [<ffffffff8161f10c>] dump_stack+0x4f/0x7b
        [<ffffffff81052caa>] warn_slowpath_common+0xaa/0xd0
        [<ffffffff81052d8a>] warn_slowpath_null+0x1a/0x20
        [<ffffffffa00d035c>] drm_framebuffer_reference+0x6c/0x80 [drm]
        [<ffffffffa01c0df7>] update_state_fb.isra.54+0x47/0x50 [i915]
        [<ffffffffa01ccd5c>] skylake_get_initial_plane_config+0x93c/0x950 [i915]
        [<ffffffffa01e8721>] intel_modeset_init+0x1551/0x17c0 [i915]
        [<ffffffffa02476e0>] i915_driver_load+0xed0/0x11e0 [i915]
        [<ffffffff81627aa1>] ? _raw_spin_unlock_irqrestore+0x51/0x70
        [<ffffffffa00ca8b7>] drm_dev_register+0x77/0x110 [drm]
        [<ffffffffa00cda3b>] drm_get_pci_dev+0x11b/0x1f0 [drm]
        [<ffffffff81098e3d>] ? trace_hardirqs_on+0xd/0x10
        [<ffffffff81627aa1>] ? _raw_spin_unlock_irqrestore+0x51/0x70
        [<ffffffffa0145276>] i915_pci_probe+0x56/0x60 [i915]
        [<ffffffff813ad59c>] pci_device_probe+0x7c/0x100
        [<ffffffff81466aad>] driver_probe_device+0x16d/0x380
      
      We cannot take a reference at this point, not before
      intel_framebuffer_init() and the underlying drm_framebuffer_init().
      
      Introduced in:
      
        commit 706dc7b549175e47f23e913b7f1e52874a7d0f56
        Author: Matt Roper <matthew.d.roper@intel.com>
        Date:   Tue Feb 3 13:10:04 2015 -0800
      
            drm/i915: Ensure plane->state->fb stays in sync with plane->fb
      
      v2: Don't move update_state_fb(). It was moved around because I
          originally put update_state_fb() in intel_alloc_plane_obj() before
          finding a better place. (Matt)
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Reported-by: NTvrtko Ursulin <tvrtko.ursulin@intel.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      From drm-next:
      (cherry picked from commit f55548b5)
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      59a58cb3
  4. 24 3月, 2015 1 次提交
    • D
      drm: Fixup racy refcounting in plane_force_disable · 8218c3f4
      Daniel Vetter 提交于
      Originally it was impossible to be dropping the last refcount in this
      function since there was always one around still from the idr. But in
      
      commit 83f45fc3
      Author: Daniel Vetter <daniel.vetter@ffwll.ch>
      Date:   Wed Aug 6 09:10:18 2014 +0200
      
          drm: Don't grab an fb reference for the idr
      
      we've switched to weak references, broke that assumption but forgot to
      fix it up.
      
      Since we still force-disable planes it's only possible to hit this
      when racing multiple rmfb with fbdev restoring or similar evil things.
      As long as userspace is nice it's impossible to hit the BUG_ON.
      
      But the BUG_ON would most likely be hit from fbdev code, which usually
      invovles the console_lock besides all modeset locks. So very likely
      we'd never get the bug reports if this was hit in the wild, hence
      better be safe than sorry and backport.
      
      Spotted by Matt Roper while reviewing other patches.
      
      [airlied: pull this back into 4.0 - the oops happens there]
      
      Cc: stable@vger.kernel.org
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@intel.com>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      8218c3f4
  5. 18 3月, 2015 7 次提交
    • A
      drm/radeon: drop ttm two ended allocation · a239118a
      Alex Deucher 提交于
      radeon_bo_create() calls radeon_ttm_placement_from_domain()
      before ttm_bo_init() is called.  radeon_ttm_placement_from_domain()
      uses the ttm bo size to determine when to select top down
      allocation but since the ttm bo is not initialized yet the
      check is always false.  It only took effect when buffers
      were validated later.  It also seemed to regress suspend
      and resume on some systems possibly due to it not
      taking effect in radeon_bo_create().
      
      radeon_bo_create() and radeon_ttm_placement_from_domain()
      need to be reworked substantially for this to be optimally
      effective.  Re-enable it at that point.
      Noticed-by: NOded Gabbay <oded.gabbay@amd.com>
      Reviewed-by: NChristian König <christian.koenig@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      Cc: stable@vger.kernel.org
      a239118a
    • H
      drm/exynos: fix the initialization order in FIMD · cdbfca89
      Hyungwon Hwang 提交于
      Since commit 0f04cf8d ("drm/exynos:
      fix wrong pipe calculation for crtc"), fimd_clear_channel() can be
      called when is_drm_iommu_supported() returns true. In this case,
      the kernel is going to be panicked because crtc is not set yet.
      
      [    1.211156] [drm] Initialized drm 1.1.0 20060810
      [    1.216785] Unable to handle kernel NULL pointer dereference at virtual address 00000350
      [    1.223415] pgd = c0004000
      [    1.226086] [00000350] *pgd=00000000
      [    1.229649] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
      [    1.234940] Modules linked in:
      [    1.237982] CPU: 2 PID: 1 Comm: swapper/0 Not tainted 4.0.0-rc1-00062-g7a7cc79-dirty #123
      [    1.246136] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      [    1.252214] task: ee8c8000 ti: ee8d0000 task.ti: ee8d0000
      [    1.257606] PC is at fimd_wait_for_vblank+0x8/0xc8
      [    1.262370] LR is at fimd_bind+0x138/0x1a8
      [    1.266450] pc : [<c02fb63c>]    lr : [<c02fb834>]    psr: 20000113
      [    1.266450] sp : ee8d1d28  ip : 00000000  fp : 00000000
      [    1.277906] r10: 00000001  r9 : c09d693c  r8 : c0a2d6a8
      [    1.283114] r7 : 00000034  r6 : 00000001  r5 : ee0bb400  r4 : ee244c10
      [    1.289624] r3 : 00000000  r2 : 00000000  r1 : 00000001  r0 : 00000000
      [    1.296135] Flags: nzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment kernel
      [    1.303426] Control: 10c5387d  Table: 4000404a  DAC: 00000015
      [    1.309154] Process swapper/0 (pid: 1, stack limit = 0xee8d0210)
      [    1.315143] Stack: (0xee8d1d28 to 0xee8d2000)
      [    1.319486] 1d20:                   00000000 c0113d18 ee0bb400 ee0bb400 ee245c30 eebbe210
      [    1.327645] 1d40: ee008a40 ee244c10 ee0bb400 00000001 00000034 c02fb834 00000000 c030a858
      [    1.335804] 1d60: ee244a10 eeb60780 ee008a40 eeb60740 ee0bb400 c03030d0 00000000 00000000
      [    1.343963] 1d80: ee244a10 ee0bb400 00000000 eeb60740 eeb60810 00000000 00000000 c02f6ba4
      [    1.352123] 1da0: ee0bb400 00000000 00000000 c02e0500 ee244a00 c0a04a14 ee0bb400 c02e1de4
      [    1.360282] 1dc0: 00000000 c030a858 00000002 eeb60820 eeb60820 00000002 eeb60780 c03033d4
      [    1.368441] 1de0: c06e9cec 00000000 ee244a10 eeb60780 c0a056f8 c03035fc c0a04b24 c0a04b24
      [    1.376600] 1e00: ee244a10 00000001 c0a049d0 c02f6d34 c0ad462c eeba0790 00000000 ee244a10
      [    1.384759] 1e20: ffffffed c0a049d0 00000000 c03090b0 ee244a10 c0ad462c c0a2d840 c03077a0
      [    1.392919] 1e40: eeb5e880 c024b738 000008db ee244a10 c0a049d0 ee244a44 00000000 c09e71d8
      [    1.401078] 1e60: 000000c6 c0307a6c c0a049d0 00000000 c03079e0 c0305ea8 ee826e5c ee1dc7b4
      [    1.409237] 1e80: c0a049d0 eeb5e880 c0a058a8 c0306e2c c0896204 c0a049d0 c06e9d10 c0a049d0
      [    1.417396] 1ea0: c06e9d10 c0ad4600 00000000 c0308360 00000000 00000003 c06e9d10 c02f6e14
      [    1.425555] 1ec0: 00000000 c0896204 ffffffff 00000000 00000000 00000000 00000000 00000000
      [    1.433714] 1ee0: 00000000 00000000 c02f6d5c c02f6d5c 00000000 eeb5d740 c09e71d8 c0008a30
      [    1.441874] 1f00: ef7fca5e 00000000 00000000 00000066 00000000 ee8d1f28 c003ff1c c02514e8
      [    1.450033] 1f20: 60000113 ffffffff c093906c ef7fca5e 000000c6 c004018c 00000000 c093906c
      [    1.458192] 1f40: c08a9690 c093840c 00000006 00000006 c09eb2ac c09c0d74 00000006 c09c0d54
      [    1.466351] 1f60: c0a3d680 c09745a0 c09d693c 000000c6 00000000 c0974db4 00000006 00000006
      [    1.474510] 1f80: c09745a0 ffffffff 00000000 c0692e00 00000000 00000000 00000000 00000000
      [    1.482669] 1fa0: 00000000 c0692e08 00000000 c000f040 00000000 00000000 00000000 00000000
      [    1.490828] 1fc0: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
      [    1.498988] 1fe0: 00000000 00000000 00000000 00000000 00000013 00000000 ffffffff ffffffff
      [    1.507159] [<c02fb63c>] (fimd_wait_for_vblank) from [<c02fb834>] (fimd_bind+0x138/0x1a8)
      [    1.515313] [<c02fb834>] (fimd_bind) from [<c03030d0>] (component_bind_all+0xc4/0x20c)
      [    1.523209] [<c03030d0>] (component_bind_all) from [<c02f6ba4>] (exynos_drm_load+0xa0/0x140)
      [    1.531632] [<c02f6ba4>] (exynos_drm_load) from [<c02e0500>] (drm_dev_register+0xa0/0xf4)
      [    1.539788] [<c02e0500>] (drm_dev_register) from [<c02e1de4>] (drm_platform_init+0x44/0xcc)
      [    1.548121] [<c02e1de4>] (drm_platform_init) from [<c03033d4>] (try_to_bring_up_master.part.1+0xc8/0x104)
      [    1.557668] [<c03033d4>] (try_to_bring_up_master.part.1) from [<c03035fc>] (component_master_add_with_match+0xd0/0x118)
      [    1.568431] [<c03035fc>] (component_master_add_with_match) from [<c02f6d34>] (exynos_drm_platform_probe+0xf0/0x118)
      [    1.578847] [<c02f6d34>] (exynos_drm_platform_probe) from [<c03090b0>] (platform_drv_probe+0x48/0x98)
      [    1.588052] [<c03090b0>] (platform_drv_probe) from [<c03077a0>] (driver_probe_device+0x140/0x380)
      [    1.596902] [<c03077a0>] (driver_probe_device) from [<c0307a6c>] (__driver_attach+0x8c/0x90)
      [    1.605321] [<c0307a6c>] (__driver_attach) from [<c0305ea8>] (bus_for_each_dev+0x54/0x88)
      [    1.613480] [<c0305ea8>] (bus_for_each_dev) from [<c0306e2c>] (bus_add_driver+0xec/0x200)
      [    1.621640] [<c0306e2c>] (bus_add_driver) from [<c0308360>] (driver_register+0x78/0xf4)
      [    1.629625] [<c0308360>] (driver_register) from [<c02f6e14>] (exynos_drm_init+0xb8/0x11c)
      [    1.637785] [<c02f6e14>] (exynos_drm_init) from [<c0008a30>] (do_one_initcall+0xac/0x1ec)
      [    1.645950] [<c0008a30>] (do_one_initcall) from [<c0974db4>] (kernel_init_freeable+0x194/0x268)
      [    1.654626] [<c0974db4>] (kernel_init_freeable) from [<c0692e08>] (kernel_init+0x8/0xe4)
      [    1.662699] [<c0692e08>] (kernel_init) from [<c000f040>] (ret_from_fork+0x14/0x34)
      [    1.670246] Code: eaffffd5 c09df884 e92d40f0 e24dd01c (e5905350)
      [    1.676408] ---[ end trace 804468492f306a6f ]---
      [    1.680948] Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
      [    1.680948]
      [    1.690035] CPU1: stopping
      [    1.692727] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D         4.0.0-rc1-00062-g7a7cc79-dirty #123
      [    1.702097] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      [    1.708192] [<c0016c84>] (unwind_backtrace) from [<c00129bc>] (show_stack+0x10/0x14)
      [    1.715908] [<c00129bc>] (show_stack) from [<c0696f58>] (dump_stack+0x78/0xc8)
      [    1.723108] [<c0696f58>] (dump_stack) from [<c0015020>] (handle_IPI+0x16c/0x2b4)
      [    1.730485] [<c0015020>] (handle_IPI) from [<c00086bc>] (gic_handle_irq+0x64/0x6c)
      [    1.738036] [<c00086bc>] (gic_handle_irq) from [<c00134c0>] (__irq_svc+0x40/0x74)
      [    1.745498] Exception stack(0xee8fdf98 to 0xee8fdfe0)
      [    1.750533] df80:                                                       00000000 00000000
      [    1.758695] dfa0: ee8fdfe8 c0021780 c09df938 00000015 10c0387d c0a3d988 4000406a c09df8d4
      [    1.766853] dfc0: c0a27a74 c09df940 01000000 ee8fdfe0 c00101c0 c00101c4 60000113 ffffffff
      [    1.775015] [<c00134c0>] (__irq_svc) from [<c00101c4>] (arch_cpu_idle+0x30/0x3c)
      [    1.782397] [<c00101c4>] (arch_cpu_idle) from [<c005e804>] (cpu_startup_entry+0x180/0x324)
      [    1.790639] [<c005e804>] (cpu_startup_entry) from [<40008764>] (0x40008764)
      [    1.797579] CPU0: stopping
      [    1.800272] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G      D         4.0.0-rc1-00062-g7a7cc79-dirty #123
      [    1.809642] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      [    1.815730] [<c0016c84>] (unwind_backtrace) from [<c00129bc>] (show_stack+0x10/0x14)
      [    1.823450] [<c00129bc>] (show_stack) from [<c0696f58>] (dump_stack+0x78/0xc8)
      [    1.830653] [<c0696f58>] (dump_stack) from [<c0015020>] (handle_IPI+0x16c/0x2b4)
      [    1.838030] [<c0015020>] (handle_IPI) from [<c00086bc>] (gic_handle_irq+0x64/0x6c)
      [    1.845581] [<c00086bc>] (gic_handle_irq) from [<c00134c0>] (__irq_svc+0x40/0x74)
      [    1.853043] Exception stack(0xc09ddf60 to 0xc09ddfa8)
      [    1.858081] df60: 00000000 00000000 c09ddfb0 c0021780 c09df938 00000001 ffffffff c0a3d680
      [    1.866239] df80: c09c0dec c09df8d4 c0a27a74 c09df940 01000000 c09ddfa8 c00101c0 c00101c4
      [    1.874396] dfa0: 60000113 ffffffff
      [    1.877872] [<c00134c0>] (__irq_svc) from [<c00101c4>] (arch_cpu_idle+0x30/0x3c)
      [    1.885251] [<c00101c4>] (arch_cpu_idle) from [<c005e804>] (cpu_startup_entry+0x180/0x324)
      [    1.893499] [<c005e804>] (cpu_startup_entry) from [<c0974bc8>] (start_kernel+0x324/0x37c)
      [    1.901655] [<c0974bc8>] (start_kernel) from [<40008074>] (0x40008074)
      [    1.908161] CPU3: stopping
      [    1.910855] CPU: 3 PID: 0 Comm: swapper/3 Tainted: G      D         4.0.0-rc1-00062-g7a7cc79-dirty #123
      [    1.920225] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      [    1.926313] [<c0016c84>] (unwind_backtrace) from [<c00129bc>] (show_stack+0x10/0x14)
      [    1.934034] [<c00129bc>] (show_stack) from [<c0696f58>] (dump_stack+0x78/0xc8)
      [    1.941237] [<c0696f58>] (dump_stack) from [<c0015020>] (handle_IPI+0x16c/0x2b4)
      [    1.948613] [<c0015020>] (handle_IPI) from [<c00086bc>] (gic_handle_irq+0x64/0x6c)
      [    1.956165] [<c00086bc>] (gic_handle_irq) from [<c00134c0>] (__irq_svc+0x40/0x74)
      [    1.963626] Exception stack(0xee901f98 to 0xee901fe0)
      [    1.968661] 1f80:                                                       00000000 00000000
      [    1.976823] 1fa0: ee901fe8 c0021780 c09df938 00000015 10c0387d c0a3d988 4000406a c09df8d4
      [    1.984982] 1fc0: c0a27a74 c09df940 01000000 ee901fe0 c00101c0 c00101c4 60000113 ffffffff
      [    1.993143] [<c00134c0>] (__irq_svc) from [<c00101c4>] (arch_cpu_idle+0x30/0x3c)
      [    2.000522] [<c00101c4>] (arch_cpu_idle) from [<c005e804>] (cpu_startup_entry+0x180/0x324)
      [    2.008765] [<c005e804>] (cpu_startup_entry) from [<40008764>] (0x40008764)
      [    2.015710] ---[ end Kernel panic - not syncing: Attempted to kill init! exitcode=0x0000000b
      Signed-off-by: NHyungwon Hwang <human.hwang@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      cdbfca89
    • I
      drm/exynos: fix typo config name correctly. · 3da6acfc
      Inki Dae 提交于
      This patch fixes DRM_EXYNOS7DECON to DRM_EXYNOS7_DECON.
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      3da6acfc
    • C
      drm/exynos: Check for NULL dereference of crtc · 995fdfb9
      Charles Keepax 提交于
      The commit "drm/exynos: remove exynos_plane_dpms" (d9ea6256) removed the
      use of the enabled flag, which means that the code may attempt to call
      win_enable on a NULL crtc. This results in the following oops on
      Arndale:
      
      [    1.673479] Unable to handle kernel NULL pointer dereference at virtual address 00000368
      [    1.681500] pgd = c0004000
      [    1.684154] [00000368] *pgd=00000000
      [    1.687713] Internal error: Oops: 5 [#1] PREEMPT SMP ARM
      [    1.693012] Modules linked in:
      [    1.696045] CPU: 1 PID: 1 Comm: swapper/0 Not tainted
      3.19.0-07545-g57485fa #1907
      [    1.703524] Hardware name: SAMSUNG EXYNOS (Flattened Device Tree)
      (....)
      [    2.014803] [<c02f9cfc>] (exynos_plane_destroy) from [<c02e61b4>] (drm_mode_config_cleanup+0x168/0x20c)
      [    2.024178] [<c02e61b4>] (drm_mode_config_cleanup) from [<c02f66fc>] (exynos_drm_load+0xac/0x12c)
      
      This patch adds in a check to ensure exynos_crtc is not NULL before it
      is dereferenced.
      Signed-off-by: NCharles Keepax <ckeepax@opensource.wolfsonmicro.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      995fdfb9
    • D
      drm/exynos: IS_ERR() vs NULL bug · aed45ab4
      Dan Carpenter 提交于
      of_iomap() doesn't return error pointers, it returns NULL on error.
      Signed-off-by: NDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      aed45ab4
    • A
      drm/exynos: remove unused files · 5fcc3c88
      Andrzej Hajda 提交于
      These files are not used anymore.
      Signed-off-by: NAndrzej Hajda <a.hajda@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      5fcc3c88
    • D
      drm/i915: Make sure the primary plane is enabled before reading out the fb state · 7f0801e5
      Damien Lespiau 提交于
      We don't want to end up in a state where we track that the pipe has its
      primary plane enabled when primary plane registers are programmed with
      values that look possible but the plane actually disabled.
      
      Refuse to read out the fb state when the primary plane isn't enabled.
      Suggested-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Suggested-by: NMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NDamien Lespiau <damien.lespiau@intel.com>
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Reported-by: NAndrey Skvortsov <andrej.skvortzov@gmail.com>
      Reported-by: NSteven Rostedt <rostedt@goodmis.org>
      Reference: http://mid.gmane.org/20150203191507.GA2374@crion86Tested-by: NSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      7f0801e5
  6. 17 3月, 2015 8 次提交
  7. 16 3月, 2015 2 次提交
  8. 12 3月, 2015 4 次提交
  9. 11 3月, 2015 2 次提交
  10. 10 3月, 2015 6 次提交
    • C
      drm/i915: Prevent TLB error on first execution on SNB · 5e4f5189
      Chris Wilson 提交于
      Long ago I found that I was getting sporadic errors when booting SNB,
      with the symptom being that the first batch died with IPEHR != *ACTHD,
      typically caused by the TLB being invalid. These magically disappeared
      if I held the forcewake during the entire ring initialisation sequence.
      (It can probably be shortened to a short critical section, but the whole
      initialisation is full of register writes and so we would be taking and
      releasing forcewake almost continually, and so holding it over the
      entire sequence will probably be a net win!)
      
      Note some of the kernels I encounted the issue already had the deferred
      forcewake release, so it is still relevant.
      
      I know that there have been a few other reports with similar failure
      conditions on SNB, I think such as
      References: https://bugs.freedesktop.org/show_bug.cgi?id=80913
      
      v2: Wrap i915_gem_init_hw() with its own security blanket as we take
      that path following resume and reset.
      Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      5e4f5189
    • M
      drm/i915: Do both mt and gen6 style forcewake reset on ivb probe · 0cd0caad
      Mika Kuoppala 提交于
      commit 05a2fb15 ("drm/i915: Consolidate forcewake code")
      failed to take into account that we have used to reset both
      the gen6 style and the multithreaded style forcewake registers.
      This is due to fact that ivb can use either, depending on how the
      bios has set up the machine.
      
      Mimic the old semantics before we have determined the correct variety
      and reset both before the ecobus probe.
      
      Cc: Chris Wilson <chris@chris-wilson.co.uk>
      Cc: Huang Ying <ying.huang@intel.com>
      Signed-off-by: NMika Kuoppala <mika.kuoppala@intel.com>
      Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      0cd0caad
    • C
      drm/i915: Make WAIT_IOCTL negative timeouts be indefinite again · 762e4583
      Chris Wilson 提交于
      This fixes a regression from
      
      commit 5ed0bdf2
      Author: Thomas Gleixner <tglx@linutronix.de>
      Date:   Wed Jul 16 21:05:06 2014 +0000
      
          drm: i915: Use nsec based interfaces
      
      that made a negative timeout return immediately rather than the
      previously defined behaviour of waiting indefinitely.
      
      Testcase: igt/gem_wait
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89494Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
      Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
      Cc: Ben Widawsky <benjamin.widawsky@intel.com>
      Cc: Kristian Høgsberg <krh@bitplanet.net>
      Cc: stable@vger.kernel.org
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      [Jani: fixed a checkpatch complaint about whitespace.]
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      762e4583
    • D
      drm/i915: use in_interrupt() not in_irq() to check context · 6c51d46f
      Dave Gordon 提交于
      The kernel in_irq() function tests for hard-IRQ context only, so if a
      system is run with the kernel 'threadirqs' option selected, the test in
      intel_check_page_flip() generates lots of warnings, because then it gets
      called in soft-IRQ context.
      
      We can instead use in_interrupt() which allows for either type of
      interrupt, while still detecting and complaining about misuse of the
      page flip code if it is ever called from non-interrupt context.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89321Signed-off-by: NDave Gordon <david.s.gordon@intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      6c51d46f
    • D
      drm/mst: fix recursive sleep warning on qlock · cd961bb9
      Daniel Vetter 提交于
      With drm-next, we can get a backtrace from sleeping
      with mutex detection.
      
      this is due to the callback checking the txmsg state taking
      the mutex, which can cause a sleep inside a sleep,
      
      Daniel went over it and was happy we could drop this mutex
      in this case.
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      cd961bb9
    • C
      drm: Don't assign fbs for universal cursor support to files · 9a6f5130
      Chris Wilson 提交于
      The internal framebuffers we create to remap legacy cursor ioctls to
      plane operations for the universal plane support shouldn't be linke to
      the file like normal userspace framebuffers. This bug goes back to the
      original universal cursor plane support introduced in
      
      commit 161d0dc1
      Author: Matt Roper <matthew.d.roper@intel.com>
      Date:   Tue Jun 10 08:28:10 2014 -0700
      
          drm: Support legacy cursor ioctls via universal planes when possible (v4)
      
      The isn't too disastrous since fbs are small, we only create one when the
      cursor bo gets changed and ultimately they'll be reaped when the window
      server restarts.
      
      Conceptually we'd want to just pass NULL for file_priv when creating it,
      but the driver needs the file to lookup the underlying buffer object for
      cursor id. Instead let's move the file_priv linking out of
      add_framebuffer_internal() into the addfb ioctl implementation, which is
      the only place it is needed. And also rename the function for a more
      accurate since it only creates the fb, but doesn't add it anywhere.
      
      Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> (fix & commit msg)
      Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> (provider of lipstick)
      Reviewed-by: NMatt Roper <matthew.d.roper@intel.com>
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Matt Roper <matthew.d.roper@intel.com>
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      9a6f5130
  11. 05 3月, 2015 5 次提交