1. 25 Jun, 2015 1 commit
    • Dave Airlie's avatar
      drm/dp/mst: close deadlock in connector destruction. · 6b8eeca6
      Dave Airlie authored
      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: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      6b8eeca6
  2. 24 Jun, 2015 3 commits
    • Daniel Stone's avatar
      drm: Always enable atomic API · 8b72ce15
      Daniel Stone authored
      Now that the interface has been proven by a port of Weston (using all
      atomic features including TEST_ONLY), remove the module parameter
      guarding the atomic API from being exposed, and let it run free in the
      wild.
      Signed-off-by: default avatarDaniel Stone <daniels@collabora.com>
      Acked-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      8b72ce15
    • Daniel Vetter's avatar
      drm/vgem: Set unique to "vgem" · fa2f97dd
      Daniel Vetter authored
      Since there's only one global instance ever we don't need to have
      anything fancy. Stops a WARNING in the get_unique ioctl that the
      unique name isn't set.
      
      Cc: <stable@vger.kernel.org> # 4.1+ only
      Reportedy-and-tested-by: default avatarFabio Coatti <fabio.coatti@gmail.com>
      Cc: Fabio Coatti <fabio.coatti@gmail.com>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      fa2f97dd
    • Inki Dae's avatar
      of: fix a build error to of_graph_get_endpoint_by_regs function · ce0bdb84
      Inki Dae authored
      This patch fixes the below build error reported by Stephen,
      
           Stephen reported:
           After merging the drm-exynos tree, today's linux-next build (x86_64
           allmodconfig) failed like this:
      
           drivers/media/i2c/adv7604.o: In function `of_graph_get_endpoint_by_regs':
           adv7604.c:(.text+0x586c): multiple definition of `of_graph_get_endpoint_by_regs'
           drivers/media/i2c/adv7343.o:adv7343.c:(.text+0xa13): first defined here
           drivers/media/platform/soc_camera/atmel-isi.o: In function `of_graph_get_endpoint_by_regs':
           atmel-isi.c:(.text+0x1ec9): multiple definition of `of_graph_get_endpoint_by_regs'
           drivers/media/platform/soc_camera/soc_camera.o:soc_camera.c:(.text+0x2ce3): first defined here
           drivers/media/platform/soc_camera/rcar_vin.o: In function `of_graph_get_endpoint_by_regs':
           rcar_vin.c:(.text+0x307c): multiple definition of `of_graph_get_endpoint_by_regs'
           drivers/media/platform/soc_camera/soc_camera.o:soc_camera.c:(.text+0x2ce3): first defined here
      
           Caused by commit:
             a0f7001c18ca ("of: add helper for getting endpoint node of specific identifiers")
      
      To fix the error, this patch declares of_graph_get_endpoint_by_regs function
      with "static inline".
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      ce0bdb84
  3. 23 Jun, 2015 6 commits
    • Dave Airlie's avatar
      drm/dp/mst: take lock around looking up the branch device on hpd irq · 9eb1e57f
      Dave Airlie authored
      If we are doing an MST transaction and we've gotten HPD and we
      lookup the device from the incoming msg, we should take the mgr
      lock around it, so that mst_primary and mstb->ports are valid.
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      9eb1e57f
    • Daniel Vetter's avatar
      drm/dp/mst: make sure mst_primary mstb is valid in work function · 9254ec49
      Daniel Vetter authored
      This validates the mst_primary under the lock, and then calls
      into the check and send function. This makes the code a lot
      easier to understand the locking rules in.
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@intel.com>
      Reviewed-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      9254ec49
    • Dave Airlie's avatar
      Merge tag 'drm-intel-next-fixes-2015-06-22' of... · ce8e3942
      Dave Airlie authored
      Merge tag 'drm-intel-next-fixes-2015-06-22' of git://anongit.freedesktop.org/drm-intel into drm-next
      
      fix warning introduced in last -fixes
      * tag 'drm-intel-next-fixes-2015-06-22' of git://anongit.freedesktop.org/drm-intel:
        drm/i915: Silence compiler warning
      ce8e3942
    • Dave Airlie's avatar
      of: add EXPORT_SYMBOL for of_graph_get_endpoint_by_regs · 8ffaa903
      Dave Airlie authored
      This symbol came via exynos-next, but modular builds are broken
      so just fix it up now.
      Signed-off-by: default avatarDave Airlie <airlied@redhat.com>
      8ffaa903
    • Dave Airlie's avatar
      Merge branch 'exynos-drm-next' of... · 75c73861
      Dave Airlie authored
      Merge branch 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-next
      
      Summary:
      . Add atomic feature support
        - Exynos also now supports atomic feature. However, it doesn't
          guarantee atomic operation yet, and is required for more cleanups.
          This time we just modified for Exynos drm driver to use atomic
          interfaces instead of legacy ones. Next time, we will enhance
          Exynos drm driver to support the atomic operation.
      . Add iommu support
        - This is a patch series according to below Exynos iommu integration
          work with DT and dma-mapping subsystem,
          http://lwn.net/Articles/607626/
      . Consolidate Exynos drm driver initialization.
        - This patch sereis resolves the issue that only the first compoments
          was bound when happened deferred probing for other pipelines and
          also makes the driver to be more cleanned up by moving the dispered
          codes for registering kms drivers to one place.
      . Add new MIC, DECON drivers, and MIPI-DSI support for Exynos5433.
        - Add MIC(Mobile image compressor) driver. MIC is a new IP for Exynos5433
          and later, which is used to transfer frame data to MIPI-DSI controller
          compressing the data to reduce memory bandwidth.
        - Add DECON driver for Exynos5433 SoC. This IP is a dislay controller
          similar to Exynos7's one but this controller has much different registers
          from Exynos7's ones so this driver has been implemented separately.
          We will implement a helper modules for FIMD and two DECON controllers
          to remove duplicated codes later.
        - Add Exynos5433 SoC support to MIPI-DSI driver, and device tree
          relevant patches.
      
      * 'exynos-drm-next' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: (50 commits)
        ARM: dts: rename the clock of MIPI DSI 'pll_clk' to 'sclk_mipi'
        drm/exynos: dsi: do not set TE GPIO direction by input
        drm/exynos: dsi: add support for MIC driver as a bridge
        drm/exynos: dsi: add support for Exynos5433
        drm/exynos: dsi: make use of array for clock access
        drm/exynos: dsi: make use of driver data for static values
        drm/exynos: dsi: add macros for register access
        drm/exynos: dsi: rename pll_clk to sclk_clk
        drm/exynos: mic: add MIC driver
        of: add helper for getting endpoint node of specific identifiers
        drm/exynos: add Exynos5433 decon driver
        drm/exynos: fix the input prompt of Exynos7 DECON
        drm/exynos: add drm_iommu_attach_device_if_possible()
        drm/exynos: Add the dependency for DRM_EXYNOS to DPI/DSI/DP
        drm/exynos: remove the dependency of DP driver for ARCH_EXYNOS
        drm/exynos: do not wait for vblank at atomic operation
        drm/exynos: Remove unused vma field of exynos_drm_gem_obj
        drm/exynos: fimd: fix page fault issue with iommu
        drm/exynos: iommu: improve a check for non-iommu dma_ops
        drm/exynos: iommu: detach from default dma-mapping domain on init
        ...
      75c73861
    • Dave Airlie's avatar
      Merge tag 'topic/drm-misc-2015-06-22' of git://anongit.freedesktop.org/drm-intel into drm-next · b7ddeee5
      Dave Airlie authored
      One more drm-misc pull for 4.2. The important one is the fix from Laurent
      for Daniel Stone's mode_blob work.
      
      * tag 'topic/drm-misc-2015-06-22' of git://anongit.freedesktop.org/drm-intel:
        drm/atomic: Don't set crtc_state->enable manually
        drm: prime: Document gem_prime_mmap
        drm: Avoid the double clflush on the last cache line in drm_clflush_virt_range()
        drm/atomic: Extract needs_modeset function
        drm/cma: Fix 64-bit size_t build warnings
        Documentation/drm: Update rotation property
      b7ddeee5
  4. 22 Jun, 2015 17 commits
  5. 19 Jun, 2015 13 commits
    • Daniel Thompson's avatar
      drm: prime: Document gem_prime_mmap · ffc5fbdb
      Daniel Thompson authored
      gem_prime_map is not currently described in the DRM manual, lets document
      it.
      Signed-off-by: default avatarDaniel Thompson <daniel.thompson@linaro.org>
      Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
      ffc5fbdb
    • Inki Dae's avatar
      drm/exynos: do not wait for vblank at atomic operation · ad533ade
      Inki Dae authored
      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: default avatarInki Dae <inki.dae@samsung.com>
      ad533ade
    • Krzysztof Kozlowski's avatar
      drm/exynos: Remove unused vma field of exynos_drm_gem_obj · 286bd022
      Krzysztof Kozlowski authored
      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: default avatarKrzysztof Kozlowski <k.kozlowski@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      286bd022
    • Inki Dae's avatar
      drm/exynos: fimd: fix page fault issue with iommu · 94ab95a9
      Inki Dae authored
      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: default avatarInki Dae <inki.dae@samsung.com>
      94ab95a9
    • Marek Szyprowski's avatar
      drm/exynos: iommu: improve a check for non-iommu dma_ops · bcfe4e25
      Marek Szyprowski authored
      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: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      bcfe4e25
    • Marek Szyprowski's avatar
      drm/exynos: iommu: detach from default dma-mapping domain on init · 45286858
      Marek Szyprowski authored
      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: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Tested-by: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      45286858
    • Marek Szyprowski's avatar
      drm/exynos: fimd: ensure proper hw state in fimd_clear_channel() · fb88e214
      Marek Szyprowski authored
      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: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Tested-by: default avatarJavier Martinez Canillas <javier.martinez@collabora.co.uk>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      fb88e214
    • Joonyoung Shim's avatar
      drm/exynos: initialize VIDCON0 when fimd is disabled · b74f14fd
      Joonyoung Shim authored
      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: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      b74f14fd
    • Joonyoung Shim's avatar
      drm/exynos: remove chained calls to enable · c329f667
      Joonyoung Shim authored
      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: default avatarGustavo Padovan <gustavo.padovan@collabora.co.uk>
      Signed-off-by: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
      Tested-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      c329f667
    • Joonyoung Shim's avatar
      drm/exynos: remove to call mixer_wait_for_vblank · ba4b77c4
      Joonyoung Shim authored
      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: default avatarJoonyoung Shim <jy0922.shim@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      ba4b77c4
    • Hyungwon Hwang's avatar
      drm/exynos: ipp: validate a GEM handle with multiple planes · 3c10473b
      Hyungwon Hwang authored
      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: default avatarHyungwon Hwang <human.hwang@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      3c10473b
    • Hyungwon Hwang's avatar
      drm/exynos: ipp: fix wrong index referencing a config element · b224fa9f
      Hyungwon Hwang authored
      Config depends on the opreation. So it must be referenced by an
      operation id, not a property id.
      Signed-off-by: default avatarHyungwon Hwang <human.hwang@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      b224fa9f
    • Hyungwon Hwang's avatar
      drm/exynos: dsi: check whether dsi is enabled before sending data · 0e480f6f
      Hyungwon Hwang authored
      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: default avatarHyungwon Hwang <human.hwang@samsung.com>
      Signed-off-by: default avatarInki Dae <inki.dae@samsung.com>
      0e480f6f