1. 13 7月, 2015 4 次提交
  2. 26 6月, 2015 1 次提交
  3. 25 6月, 2015 1 次提交
    • D
      drm/dp/mst: close deadlock in connector destruction. · 6b8eeca6
      Dave Airlie 提交于
      I've only seen this once, and I failed to capture the
      lockdep backtrace, but I did some investigations.
      
      If we are calling into the MST layer from EDID probing,
      we have the mode_config mutex held, if during that EDID
      probing, the MST hub goes away, then we can get a deadlock
      where the connector destruction function in the driver
      tries to retake the mode config mutex.
      
      This offloads connector destruction to a workqueue,
      and avoid the subsequenct lock ordering issue.
      Acked-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      6b8eeca6
  4. 24 6月, 2015 2 次提交
  5. 23 6月, 2015 3 次提交
  6. 22 6月, 2015 16 次提交
  7. 19 6月, 2015 13 次提交
    • D
      drm: prime: Document gem_prime_mmap · ffc5fbdb
      Daniel Thompson 提交于
      gem_prime_map is not currently described in the DRM manual, lets document
      it.
      Signed-off-by: NDaniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      ffc5fbdb
    • I
      drm/exynos: do not wait for vblank at atomic operation · ad533ade
      Inki Dae 提交于
      This patch resolves the issue that refresh rate got low
      at extension mode test with fimd and vidi combination.
      
      The problem was because atomic_commit callback waited
      for the completion of vblank to gaurantee crtc relevant
      registers are updated from shadow registers to real ones.
      
      However, the waiting there is really unnecessary because
      page flip operation does already it.
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      ad533ade
    • K
      drm/exynos: Remove unused vma field of exynos_drm_gem_obj · 286bd022
      Krzysztof Kozlowski 提交于
      The field 'vma' of 'exynos_drm_gem_obj' structure was introduced in
      2a3098ff ("drm/exynos: add userptr feature for g2d module") but is
      not referenced anywhere.
      
      One instance of 'exynos_drm_gem_obj' may be mapped to multiple
      user-space VMAs so 'vma' field does not look useful anyway.
      Signed-off-by: NKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      286bd022
    • I
      drm/exynos: fimd: fix page fault issue with iommu · 94ab95a9
      Inki Dae 提交于
      This patch resolves page fault issue with iommu and atomic feature
      when modetest test application is terminated.
      
      ENWIN_F field of WINCONx register enables or disable a dma channel to
      each hardware overlay - the value of the field will be updated to real
      register after vsync.
      
      So this patch makes sure the dma channel is disabled by waiting for vsync
      one time after clearing shadow registers to all dma channels.
      
      Below shows the page fault issue:
      setting mode 720x1280-60Hz@XR24 on connectors 31, crtc 29
      freq: 59.99Hz
      
      [   34.831025] PAGE FAULT occurred at 0x20400000 by 11e20000.sysmmu(Page
      		table base: 0x6e324000)
      [   34.838072]  Lv1 entry: 0x6e92dc01
      [   34.841489] ------------[ cut here ]------------
      [   34.846058] kernel BUG at drivers/iommu/exynos-iommu.c:364!
      [   34.851614] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP ARM
      [   34.857428] Modules linked in:
      <--snip-->
      [   35.210894] [<c02880d0>] (exynos_sysmmu_irq) from [<c00608f8>]
      (handle_irq_event_percpu+0x78/0x134)
      [   35.219914] [<c00608f8>] (handle_irq_event_percpu) from [<c00609f0>]
      (handle_irq_event+0x3c/0x5c)
      [   35.228768] [<c00609f0>] (handle_irq_event) from [<c0063698>]
      (handle_level_irq+0xc4/0x13c)
      [   35.237101] [<c0063698>] (handle_level_irq) from [<c005ff7c>]
      (generic_handle_irq+0x2c/0x3c)
      [   35.245521] [<c005ff7c>] (generic_handle_irq) from [<c02214ec>]
      (combiner_handle_cascade_irq+0x94/0x100)
      [   35.254980] [<c02214ec>] (combiner_handle_cascade_irq) from
      [<c005ff7c>] (generic_handle_irq+0x2c/0x3c)
      [   35.264353] [<c005ff7c>] (generic_handle_irq) from [<c0060248>]
      (__handle_domain_irq+0x7c/0xec)
      [   35.273034] [<c0060248>] (__handle_domain_irq) from [<c0009434>]
      (gic_handle_irq+0x30/0x68)
      [   35.281366] [<c0009434>] (gic_handle_irq) from [<c0012ec0>]
      (__irq_svc+0x40/0x74)
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      94ab95a9
    • M
      drm/exynos: iommu: improve a check for non-iommu dma_ops · bcfe4e25
      Marek Szyprowski 提交于
      DRM Exynos driver is relying on dma-mapping internal structures when used
      with IOMMU enabled. This patch partially hides dma-mapping internal things
      by using proper get_dma_ops/set_dma_ops calls.
      Signed-off-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      bcfe4e25
    • M
      drm/exynos: iommu: detach from default dma-mapping domain on init · 45286858
      Marek Szyprowski 提交于
      This patch adds code, which detach sub-device nodes from default iommu
      domain if such has been configured. This lets Exynos DRM driver to properly
      attach sub-devices to its own, common for all sub-devices domain.
      Signed-off-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Tested-by: NJavier Martinez Canillas <javier.martinez@collabora.co.uk>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      45286858
    • M
      drm/exynos: fimd: ensure proper hw state in fimd_clear_channel() · fb88e214
      Marek Szyprowski 提交于
      One should not do any assumptions on the stare of the fimd hardware
      during driver initialization, so to properly reset fimd before enabling
      IOMMU, one should ensure that all power domains and clocks are really
      enabled. This patch adds pm_runtime and clocks management in the
      fimd_clear_channel() function to ensure that any access to fimd
      registers will be performed with clocks and power domains enabled.
      Signed-off-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Tested-by: NJavier Martinez Canillas <javier.martinez@collabora.co.uk>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      fb88e214
    • J
      drm/exynos: initialize VIDCON0 when fimd is disabled · b74f14fd
      Joonyoung Shim 提交于
      When the fimd is disabled by fimd_disable(), enabled overlay layers also
      are disabled. If clocks for fimd are enabled by fimd_enable() on this
      case, it can lead IOMMU page fault. The reason is that VIDCON0_ENVID and
      VIDCON0_ENVID_F bits of VIDCON0 register are set still even though fimd
      is disabled, so it may continue display output of prior when clocks for
      fimd are enabled again.
      Signed-off-by: NJoonyoung Shim <jy0922.shim@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      b74f14fd
    • J
      drm/exynos: remove chained calls to enable · c329f667
      Joonyoung Shim 提交于
      With atomic modesetting all the control for CRTC, Planes, Encoders and
      Connectors should come from DRM core, so the driver is not allowed to
      enable or disable planes from inside the crtc_enable()/disable() call.
      
      But it needs to disable planes with crtc_disable in exynos driver
      internally. Because crtc is disabled before plane is disabled, it means
      plane_disable just returns without any register changes, then we cannot
      be sure setting register to disable plane when crtc is disable.
      
      This patch removes this chainned calls to enable plane from exynos hw
      drivers code letting only DRM core touch planes except to disable plane.
      Also it leads eliminable enabled and resume of struct exynos_drm_plane.
      Signed-off-by: NGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Signed-off-by: NJoonyoung Shim <jy0922.shim@samsung.com>
      Tested-by: NMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      c329f667
    • J
      drm/exynos: remove to call mixer_wait_for_vblank · ba4b77c4
      Joonyoung Shim 提交于
      The reason waiting vblank is to be power gated and disabled clocks after
      dma operation is completed. The dma operation is stopped already before
      be power gated and clocks are disabled when mixer is disabled by commit
      381be025("drm/exynos: stop mixer before gating clocks during
      poweroff"). Don't need to wait vblank anymore.
      Signed-off-by: NJoonyoung Shim <jy0922.shim@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      ba4b77c4
    • H
      drm/exynos: ipp: validate a GEM handle with multiple planes · 3c10473b
      Hyungwon Hwang 提交于
      FIMC & GSC driver can calculate the offset of planes. So there are
      use cases which IPP receives just one GEM handle of an image with
      multiple plane. This patch extends ipp_validate_mem_node() to validate
      this case.
      Signed-off-by: NHyungwon Hwang <human.hwang@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      3c10473b
    • H
      drm/exynos: ipp: fix wrong index referencing a config element · b224fa9f
      Hyungwon Hwang 提交于
      Config depends on the opreation. So it must be referenced by an
      operation id, not a property id.
      Signed-off-by: NHyungwon Hwang <human.hwang@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      b224fa9f
    • H
      drm/exynos: dsi: check whether dsi is enabled before sending data · 0e480f6f
      Hyungwon Hwang 提交于
      exynos_dsi_host_transfer() can be called through a panel driver while
      DSI is turning down. It is possible because the function checks only
      whether DSI is initialized or not, and there is a moment which DSI is
      set by uninitialized, but DSI is still turning down. To prevent it,
      DSI must be set by disabled before starting to be turned down, and
      exynos_dsi_host_transfer() must check whether DSI is enabled or not.
      
      Kernel dump:
      [ 4721.351448] Unhandled fault: synchronous external abort (0x96000210) at 0xffffff800015e018
      [ 4721.351809] Internal error: : 96000210 [#1] PREEMPT SMP
      [ 4721.352031] Modules linked in:
      [ 4721.352173] CPU: 2 PID: 300 Comm: deviced Tainted: G        W       4.0.4-01017-g7964a87 #1
      [ 4721.353989] Hardware name: Samsung DRACO board (DT)
      [ 4721.358852] task: ffffffc0a0b70000 ti: ffffffc0a00ec000 task.ti: ffffffc0a00ec000
      [ 4721.366327] PC is at exynos_dsi_enable_lane+0x14/0x5c
      [ 4721.371353] LR is at exynos_dsi_host_transfer+0x834/0x8d8
      [ 4721.376731] pc : [<ffffffc000432bcc>] lr : [<ffffffc000434590>] pstate: 60000145
      [ 4721.384107] sp : ffffffc0a00efbe0
      [ 4721.387405] x29: ffffffc0a00efbe0 x28: ffffffc0a00ec000
      [ 4721.392699] x27: ffffffc000968000 x26: 0000000000000040
      [ 4721.397994] x25: ffffffc000f74dc0 x24: ffffffc0a00efec8
      [ 4721.403290] x23: ffffffc0a4815400 x22: ffffffc0009f2729
      [ 4721.408584] x21: ffffffc0a00efcc8 x20: ffffffc0a4a2a848
      [ 4721.413879] x19: ffffffc0a4a2a818 x18: 0000000000000004
      [ 4721.419173] x17: 0000007faa5cddf0 x16: ffffffc0001a40a8
      [ 4721.424469] x15: 0000000000000009 x14: 000000000000000d
      [ 4721.429762] x13: 6e6e6f63206b726f x12: 0000000000000010
      [ 4721.435058] x11: 0101010101010101 x10: 0000000000000000
      [ 4721.440353] x9 : 000000000000000a x8 : 8386838282818381
      [ 4721.445648] x7 : ffffffc0a201efe8 x6 : 0000000000000000
      [ 4721.450943] x5 : 00000000fffffffa x4 : ffffffc0a201f170
      [ 4721.456237] x3 : ffffff800015e000 x2 : ffffff800015e018
      [ 4721.461531] x1 : 000000000000000f x0 : ffffffc0a4a2a818
      [ 4721.466826]
      [ 4721.468305] Process deviced (pid: 300, stack limit = 0xffffffc0a00ec028)
      [ 4721.474989] Stack: (0xffffffc0a00efbe0 to 0xffffffc0a00f0000)
      [ 4721.480720] fbe0: a00efca0 ffffffc0 0042c944 ffffffc0 a0f2d680 ffffffc0 00000024 00000000
      [ 4721.488895] fc00: a4b6d000 ffffffc0 009f2729 ffffffc0 a4815400 ffffffc0 a00efec8 ffffffc0
      Signed-off-by: NHyungwon Hwang <human.hwang@samsung.com>
      Signed-off-by: NInki Dae <inki.dae@samsung.com>
      0e480f6f