1. 03 Aug, 2014 1 commit
    • Krzysztof Kozlowski's avatar
      drm/exynos: Fix NULL pointer exception when suspending without components · d50a1907
      Krzysztof Kozlowski authored
      Fix a NULL pointer exception when main exynos drm driver was probed
      successfully but no components were added (e.g. by incomplete DTS). In
      such case the exynos_drm_load() is never called and drvdata is NULL.
      
      The NULL pointer exception may theoretically also happen as a effect of race between
      adding components and main driver: if suspend of the driver happens
      before adding components.
      
      Trace:
      [    1.190295] [drm] Initialized drm 1.1.0 20060810
      [    1.195209] exynos-drm-ipp exynos-drm-ipp: drm ipp registered successfully.
      (...)
      [   24.001743] PM: Syncing filesystems ... done.
      [   24.002177] Freezing user space processes ... (elapsed 0.000 seconds) done.
      [   24.007403] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
      [   24.032559] Unable to handle kernel NULL pointer dereference at virtual address 00000134
      [   24.035007] pgd = dedd8000
      [   24.037734] [00000134] *pgd=5ee13831, *pte=00000000, *ppte=00000000
      [   24.043953] Internal error: Oops: 17 [#1] PREEMPT SMP ARM
      [   24.049329] Modules linked in:
      [   24.052371] CPU: 0 PID: 1 Comm: sh Not tainted 3.16.0-rc3-00035-geba20bbdde04-dirty #51
      [   24.060354] task: df478000 ti: df480000 task.ti: df480000
      [   24.065743] PC is at mutex_lock+0x10/0x50
      [   24.069733] LR is at drm_modeset_lock_all+0x30/0xbc
      [   24.074590] pc : [<c048516c>]    lr : [<c02a14b4>]    psr: a0000013
      [   24.074590] sp : df481db8  ip : 00000000  fp : c05e524c
      [   24.086045] r10: 00000002  r9 : c02c1fe4  r8 : deca5e44
      [   24.091253] r7 : 00000000  r6 : 00000000  r5 : 0000014c  r4 : 00000134
      [   24.097763] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : 00000134
      [   24.104275] Flags: NzCv  IRQs on  FIQs on  Mode SVC_32  ISA ARM  Segment user
      [   24.111391] Control: 10c53c7d  Table: 5edd806a  DAC: 00000015
      [   24.117120] Process sh (pid: 1, stack limit = 0xdf480240)
      [   24.122502] Stack: (0xdf481db8 to 0xdf482000)
      [   24.126843] 1da0:                                                       dee01d80 c02a14b4
      [   24.135004] 1dc0: 00000000 00000000 c07aff98 c02aec7c 00000002 00000000 00000000 c07aff98
      [   24.143164] 1de0: deca5e10 c02aecf4 c02aecd4 c02c2010 00000000 c02c9470 00000000 00000000
      [   24.151322] 1e00: 00000000 00000000 deca5e10 deca5e10 00000000 c07aff98 00000002 deca5e44
      [   24.159482] 1e20: c06d8f78 c06fb800 deca5e78 c02ca660 df7baf00 007b0aa0 deca5e10 c06fb7c8
      [   24.167641] 1e40: c07aff98 00000000 00000002 c02cbe18 9757aec5 00000005 9757aec5 00000005
      [   24.175801] 1e60: ded1d380 00000003 00000003 c05c74d8 ded1d380 c07209d4 c05c7514 c07105d8
      [   24.183960] 1e80: 01e2a738 c0068a74 00000000 c05c7514 ded1d380 c071c6e0 00000004 c07105d8
      [   24.192119] 1ea0: 01e2a738 c047f1e0 c0600cc0 df481ec4 00000003 00000000 00000003 c05c74d8
      [   24.200278] 1ec0: ded1d380 c071c6e0 c05c7514 c07105d8 01e2a738 c0069444 c06d905c 00000003
      [   24.208438] 1ee0: 00000003 ded1d380 c06d9064 00000004 c05c3fc0 c0067d4c df535ab0 ded1d380
      [   24.216596] 1f00: df481f80 ded1d380 00000004 ded1d1cc ded1d1c0 c0221724 00000004 c016ca6c
      [   24.224756] 1f20: c016ca28 00000000 00000000 c016c1d4 00000000 00000000 b6f37000 df481f80
      [   24.232915] 1f40: decedd80 00000004 df480000 df480000 b6f37000 c0110920 df47839c 60000013
      [   24.241074] 1f60: 00000000 00000000 decedd80 decedd80 00000004 df480000 b6f37000 c0110da8
      [   24.249233] 1f80: 00000000 00000000 00000004 b6edf5d8 00000004 b6f37000 00000004 c000f2a8
      [   24.257393] 1fa0: 00001000 c000f0e0 b6edf5d8 00000004 00000001 b6f37000 00000004 00000000
      [   24.265551] 1fc0: b6edf5d8 00000004 b6f37000 00000004 00000004 00000001 00000000 01e2a738
      [   24.273711] 1fe0: 00000000 beba0a20 b6e1f4f0 b6e7022c 60000010 00000001 ffffffff ffffffff
      [   24.281885] [<c048516c>] (mutex_lock) from [<c02a14b4>] (drm_modeset_lock_all+0x30/0xbc)
      [   24.289950] [<c02a14b4>] (drm_modeset_lock_all) from [<c02aec7c>] (exynos_drm_suspend+0xc/0x64)
      [   24.298627] [<c02aec7c>] (exynos_drm_suspend) from [<c02aecf4>] (exynos_drm_sys_suspend+0x20/0x34)
      [   24.307568] [<c02aecf4>] (exynos_drm_sys_suspend) from [<c02c2010>] (platform_pm_suspend+0x2c/0x54)
      [   24.316597] [<c02c2010>] (platform_pm_suspend) from [<c02c9470>] (dpm_run_callback+0x48/0x170)
      [   24.325188] [<c02c9470>] (dpm_run_callback) from [<c02ca660>] (__device_suspend+0x128/0x39c)
      [   24.333606] [<c02ca660>] (__device_suspend) from [<c02cbe18>] (dpm_suspend+0x5c/0x314)
      [   24.341506] [<c02cbe18>] (dpm_suspend) from [<c0068a74>] (suspend_devices_and_enter+0x8c/0x598)
      [   24.350185] [<c0068a74>] (suspend_devices_and_enter) from [<c0069444>] (pm_suspend+0x4c4/0x5d0)
      [   24.358862] [<c0069444>] (pm_suspend) from [<c0067d4c>] (state_store+0x70/0xd4)
      [   24.366156] [<c0067d4c>] (state_store) from [<c0221724>] (kobj_attr_store+0x14/0x20)
      [   24.373885] [<c0221724>] (kobj_attr_store) from [<c016ca6c>] (sysfs_kf_write+0x44/0x48)
      [   24.381867] [<c016ca6c>] (sysfs_kf_write) from [<c016c1d4>] (kernfs_fop_write+0xc0/0x17c)
      [   24.390027] [<c016c1d4>] (kernfs_fop_write) from [<c0110920>] (vfs_write+0xa0/0x1c4)
      [   24.397750] [<c0110920>] (vfs_write) from [<c0110da8>] (SyS_write+0x40/0x8c)
      [   24.404782] [<c0110da8>] (SyS_write) from [<c000f0e0>] (ret_fast_syscall+0x0/0x3c)
      [   24.412332] Code: e92d4010 e1a04000 f57ff05b f590f000 (e1903f9f)
      [   24.418448] ---[ end trace cfa06690eabe8dd5 ]---
      [   24.423032] Kernel panic - not syncing: Fatal exception
      [   24.428220] CPU1: stopping
      [   24.430905] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G      D       3.16.0-rc3-00035-geba20bbdde04-dirty #51
      [   24.440549] [<c0016440>] (unwind_backtrace) from [<c001294c>] (show_stack+0x10/0x14)
      [   24.448269] [<c001294c>] (show_stack) from [<c04811e8>] (dump_stack+0x80/0xcc)
      [   24.455472] [<c04811e8>] (dump_stack) from [<c001495c>] (handle_IPI+0x130/0x15c)
      [   24.462850] [<c001495c>] (handle_IPI) from [<c000862c>] (gic_handle_irq+0x60/0x68)
      [   24.470400] [<c000862c>] (gic_handle_irq) from [<c0013440>] (__irq_svc+0x40/0x70)
      [   24.477860] Exception stack(0xdf4bdf88 to 0xdf4bdfd0)
      [   24.482898] df80:                   ffffffed 00000000 00000000 00000000 df4bc000 c06d042c
      [   24.491058] dfa0: 00000000 ffffffed c06d03c0 00000000 c070c288 00000000 00000000 df4bdfd0
      [   24.499214] dfc0: c0010324 c0010328 60000013 ffffffff
      [   24.504254] [<c0013440>] (__irq_svc) from [<c0010328>] (arch_cpu_idle+0x28/0x30)
      [   24.511634] [<c0010328>] (arch_cpu_idle) from [<c005f110>] (cpu_startup_entry+0x2c4/0x3f0)
      [   24.519878] [<c005f110>] (cpu_startup_entry) from [<400086c4>] (0x400086c4)
      [   24.526821] ---[ end Kernel panic - not syncing: Fatal exception
      Signed-off-by: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      d50a1907
  2. 01 Aug, 2014 4 commits
  3. 30 Jul, 2014 1 commit
  4. 24 Jul, 2014 2 commits
  5. 23 Jul, 2014 2 commits
  6. 22 Jul, 2014 15 commits
  7. 21 Jul, 2014 6 commits
    • Dave Airlie's avatar
      drm/i915: split conversion function out into separate function · d05410f9
      Dave Airlie authored
      for MST I need to reuse this, so just move it now.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      d05410f9
    • Dave Airlie's avatar
      drm/i915: check connector->encoder before using it. · 36cd7444
      Dave Airlie authored
      DP MST will need connectors that aren't connected to specific
      encoders, add some checks in advance to avoid oopses.
      Reviewed-by: default avatarTodd Previte <tprevite@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      36cd7444
    • Dave Airlie's avatar
      i915: split some DP modesetting code into a separate function · 44905a27
      Dave Airlie authored
      this is just prep work for mst support.
      Reviewed-by: default avatarTodd Previte <tprevite@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      44905a27
    • Dave Airlie's avatar
      drm/i915: add some registers need for displayport MST support. · 01b887c3
      Dave Airlie authored
      These are just from the Haswell spec.
      Reviewed-by: default avatarTodd Previte <tprevite@gmail.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      01b887c3
    • Sachin Kamat's avatar
      drm: gem_cma: Use ERR_CAST helper · e7c36347
      Sachin Kamat authored
      Makes the code a bit more readable.
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@linaro.org>
      Signed-off-by: default avatarSachin Kamat <sachin.kamat@samsung.com>
      Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      e7c36347
    • Dave Airlie's avatar
      drm/i915: fix psr match conditions screw ups. · b1972961
      Dave Airlie authored
      Not enough brown paper bags, you'll have to share one.
      (oops below).
      
      The initial match condition code was racy (locking is coming I hear).
      
      then along came:
      cd234b0b
      drm/i915: Do not dereference NULL crtc or fb until after checking
      
      Chris made an attempt to fix it, Ben "reviewed" it.
      Daniel merged it.
      
      Then
      drm/i915: Make use of intel_fb_obj() (v2)
      2ff8fde1
      
      made it worse by removing the obj check later.
      
      All in all, my laptop can't barely turn off the display
      without hitting this.
      
      Posted to #intel-gfx out of niceness, but I've merged
      this already into drm-next.
      
      Here's an oops.
      [   11.528185] BUG: unable to handle kernel NULL pointer dereference at 00000000000000d0
      [   11.528233] IP: [<ffffffffa0161fde>] intel_edp_psr_match_conditions+0x1e/0x2e0 [i915]
      [   11.528294] PGD 35bc0067 PUD c997c067 PMD 0
      [   11.528321] Oops: 0000 [#1] SMP
      [   11.528916] CPU: 3 PID: 244 Comm: kworker/3:2 Not tainted 3.16.0-rc4+ #17
      [   11.528949] Hardware name: LENOVO 20ARS25701/20ARS25701, BIOS GJET72WW (2.22 ) 02/21/2014
      [   11.529004] Workqueue: events intel_edp_psr_work [i915]
      [   11.529031] task: ffff8803079fdaa0 ti: ffff8803079c4000 task.ti: ffff8803079c4000
      [   11.529067] RIP: 0010:[<ffffffffa0161fde>]  [<ffffffffa0161fde>] intel_edp_psr_match_conditions+0x1e/0x2e0 [i915]
      [   11.529129] RSP: 0018:ffff8803079c7d40  EFLAGS: 00010246
      [   11.529155] RAX: 0000000000000000 RBX: ffff88030c11c000 RCX: c000000000000000
      [   11.529189] RDX: 0000000000000001 RSI: 1df0000000000000 RDI: ffff88030c1190d8
      [   11.529222] RBP: ffff8803079c7d60 R08: ffffffff82691140 R09: 0000000000000000
      [   11.529256] R10: ffff8803079fdaa0 R11: 3e00000000000000 R12: ffff88030c11c728
      [   11.529290] R13: ffff88030c1190d8 R14: ffff88031e2d8e00 R15: 00000000000000c0
      [   11.529324] FS:  0000000000000000(0000) GS:ffff88031e2c0000(0000) knlGS:0000000000000000
      [   11.529361] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   11.529389] CR2: 00000000000000d0 CR3: 00000000c8d9d000 CR4: 00000000001407e0
      [   11.529423] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   11.529457] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
      [   11.529489] Stack:
      [   11.529500]  ffff88030c119000 ffff88030c11c728 ffff88030c1190d8 ffff88031e2d8e00
      [   11.529541]  ffff8803079c7d88 ffffffffa01679b2 ffff880035b29a80 ffff880307909f00
      [   11.529583]  ffff88031e2d4740 ffff8803079c7df8 ffffffff810a78ab ffffffff810a7849
      [   11.529624] Call Trace:
      [   11.529654]  [<ffffffffa01679b2>] intel_edp_psr_work+0x52/0x90 [i915]
      [   11.529689]  [<ffffffff810a78ab>] process_one_work+0x1db/0x540
      [   11.529719]  [<ffffffff810a7849>] ? process_one_work+0x179/0x540
      [   11.529750]  [<ffffffff810a81ed>] worker_thread+0x11d/0x520
      [   11.529779]  [<ffffffff810a80d0>] ? create_and_start_worker+0x60/0x60
      [   11.529810]  [<ffffffff810aeb04>] kthread+0xe4/0x100
      [   11.529836]  [<ffffffff810aea20>] ? kthread_create_on_node+0x200/0x200
      [   11.529870]  [<ffffffff81705ebc>] ret_from_fork+0x7c/0xb0
      [   11.529896]  [<ffffffff810aea20>] ? kthread_create_on_node+0x200/0x200
      [   11.529926] Code: ba 31 13 f0 c9 85 f6 75 84 eb d0 66 90 0f 1f 44 00 00 55 48 89 e5 41 56 41 55 41 54 53 48 8b 87 68 ff ff ff 48 8b 9f 28 ff ff ff <48> 8b 80 d0 00 00 00 4c 8b 63 28 48 8b 40 48 48 85 c0 0f 84 1a
      [   11.530110] RIP  [<ffffffffa0161fde>] intel_edp_psr_match_conditions+0x1e/0x2e0 [i915]
      [   11.530163]  RSP <ffff8803079c7d40>
      [   11.530180] CR2: 00000000000000d0
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      b1972961
  8. 19 Jul, 2014 2 commits
    • Dave Airlie's avatar
      Merge tag 'topic/core-stuff-2014-07-18' of git://anongit.freedesktop.org/drm-intel into drm-next · 322c1c03
      Dave Airlie authored
      misc core patches.
      
      * tag 'topic/core-stuff-2014-07-18' of git://anongit.freedesktop.org/drm-intel:
        drm: Check for connection_mutex in drm_select_eld
        drm/dp-mst-helper: Don't use uninitialized fields of the sideband message header
        drm/dp-mst-helper: Avoid reading uninitialized value
        drm/plane-helper: Use proper plane init function
        drivers/gpu/drm/drm_buffer.c: remove unnecessary null test before kfree
        drm: Fix function names in kerneldoc
      322c1c03
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-2014-07-11' of git://anongit.freedesktop.org/drm-intel into drm-next · c51f7167
      Dave Airlie authored
      - fbc improvements when stolen memory is tight (Ben)
      - cdclk handling improvements for vlv/chv (Ville)
      - proper fix for stuck primary planes on gmch platforms with cxsr (Imre&Ebgert
        Eich)
      - gen8 hw semaphore support (Ben)
      - more execlist prep work from Oscar Mateo
      - locking fixes for primary planes (Matt Roper)
      - code rework to support runtime pm for dpms on hsw/bdw (Paulo, Imre & me), but
        not yet enabled because some fixes from Paulo haven't made the cut
      - more gpu boost tuning from Chris
      - as usual piles of little things all over
      
      * tag 'drm-intel-next-2014-07-11' of git://anongit.freedesktop.org/drm-intel: (93 commits)
        drm/i915: Make the RPS interrupt generation mask handle the vlv wa
        drm/i915: Move RPS evaluation interval counters to i915->rps
        drm/i915: Don't cast a pointer to void* unnecessarily
        drm/i915: don't read LVDS regs at compute_config time
        drm/i915: check the power domains in intel_lvds_get_hw_state()
        drm/i915: check the power domains in ironlake_get_pipe_config()
        drm/i915: don't skip shared DPLL assertion on LPT
        drm/i915: Only touch WRPLL hw state in enable/disable hooks
        drm/i915: Switch to common shared dpll framework for WRPLLs
        drm/i915: ->enable hook for WRPLLs
        drm/i915: ->disable hook for WRPLLs
        drm/i915: State readout support for WRPLLs
        drm/i915: add POWER_DOMAIN_PLLS
        drm/i915: Document that the pll->mode_set hook is optional
        drm/i915: Basic shared dpll support for WRPLLs
        drm/i915: Precompute static ddi_pll_sel values in encoders
        drm/i915: BDW also has special-purpose DP DDI clocks
        drm/i915: State readout and cross-checking for ddi_pll_sel
        drm/i915: Move ddi_pll_sel into the pipe config
        drm/i915: Add a debugfs file for the shared dpll state
        ...
      c51f7167
  9. 18 Jul, 2014 7 commits