1. 15 5月, 2015 3 次提交
    • R
      drm/msm: fix locking inconsistencies in gpu->destroy() · 774449eb
      Rob Clark 提交于
      In error paths, this was being called without struct_mutex held.
      Leading to panics like:
      
        msm 1a00000.qcom,mdss_mdp: No memory protection without IOMMU
        Kernel panic - not syncing: BUG!
        CPU: 0 PID: 1409 Comm: cat Not tainted 4.0.0-dirty #4
        Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
        Call trace:
        [<ffffffc000089c78>] dump_backtrace+0x0/0x118
        [<ffffffc000089da0>] show_stack+0x10/0x20
        [<ffffffc0006686d4>] dump_stack+0x84/0xc4
        [<ffffffc0006678b4>] panic+0xd0/0x210
        [<ffffffc0003e1ce4>] drm_gem_object_free+0x5c/0x60
        [<ffffffc000402870>] adreno_gpu_cleanup+0x60/0x80
        [<ffffffc0004035a0>] a3xx_destroy+0x20/0x70
        [<ffffffc0004036f4>] a3xx_gpu_init+0x84/0x108
        [<ffffffc0004018b8>] adreno_load_gpu+0x58/0x190
        [<ffffffc000419dac>] msm_open+0x74/0x88
        [<ffffffc0003e0a48>] drm_open+0x168/0x400
        [<ffffffc0003e7210>] drm_stub_open+0xa8/0x118
        [<ffffffc0001a0e84>] chrdev_open+0x94/0x198
        [<ffffffc000199f88>] do_dentry_open+0x208/0x310
        [<ffffffc00019a4c4>] vfs_open+0x44/0x50
        [<ffffffc0001aa26c>] do_last.isra.14+0x2c4/0xc10
        [<ffffffc0001aac38>] path_openat+0x80/0x5e8
        [<ffffffc0001ac354>] do_filp_open+0x2c/0x98
        [<ffffffc00019b60c>] do_sys_open+0x13c/0x228
        [<ffffffc00019b72c>] SyS_openat+0xc/0x18
        CPU1: stopping
      
      But there isn't any particularly good reason to hold struct_mutex for
      teardown, so just standardize on calling it without the mutex held and
      use the _unlocked() versions for GEM obj unref'ing
      Signed-off-by: NRob Clark <robdclark@gmail.com>
      774449eb
    • H
      drm/msm/dsi: Simplify the code to get the number of read byte · ec1936eb
      Hai Li 提交于
      During cmd rx, only new versions of H/W provide register to read back
      the real number of byte returned by panel. For the old versions, reading
      this register will not get the right number. In fact, we only need to
      assume the returned data is the same size as we expected, because later
      we will check the data type to detect error.
      Signed-off-by: NHai Li <hali@codeaurora.org>
      ec1936eb
    • H
      drm/msm: Attach assigned encoder to eDP and DSI connectors · 6f6b2879
      Hai Li 提交于
      drm_mode_connector_attach_encoder() function call is missing
      during eDP and DSI connector initialization. As a result,
      no encoder is returned by DRM_IOCTL_MODE_GETCONNECTOR system
      call. This change is to fix this issue.
      Signed-off-by: NHai Li <hali@codeaurora.org>
      6f6b2879
  2. 14 5月, 2015 10 次提交
  3. 12 5月, 2015 1 次提交
  4. 11 5月, 2015 2 次提交
    • P
      drm/i915: Avoid GPU hang when coming out of s3 or s4 · 364aece0
      Peter Antoine 提交于
      This patch fixes a timing issue that causes a GPU hang when the system
      comes out of power saving.
      
      During pm_resume, We are submitting batchbuffers before enabling
      Interrupts this is causing us to miss the context switch interrupt,
      and in consequence intel_execlists_handle_ctx_events is not triggered.
      
      This patch is based on a patch from Deepak S <deepak.s@intel.com>
      from another platform.
      
      The patch fixes an issue introduced by:
        commit e7778be1
        drm/i915: Fix startup failure in LRC mode after recent init changes
      
      The above patch added a call to init_context() to fix an issue introduced
      by a previous patch. But, it then opened up a small timing window for the
      batches being added by the init_context (basically setting up the context)
      to complete before the interrupts have been turned on, thus hanging the
      GPU.
      
      Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=89600
      Cc: stable@vger.kernel.org # 4.0+
      Signed-off-by: NPeter Antoine <peter.antoine@intel.com>
      Reviewed-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
      [Jani: fixed typo in subject, massaged the comments a bit]
      Signed-off-by: NJani Nikula <jani.nikula@intel.com>
      364aece0
    • M
      drm: Zero out invalid vblank timestamp in drm_update_vblank_count. · fdb68e09
      Mario Kleiner 提交于
      Since commit 844b03f2 we make
      sure that after vblank irq off, we return the last valid
      (vblank count, vblank timestamp) pair to clients, e.g., during
      modesets, which is good.
      
      An overlooked side effect of that commit for kms drivers without
      support for precise vblank timestamping is that at vblank irq
      enable, when we update the vblank counter from the hw counter, we
      can't update the corresponding vblank timestamp, so now we have a
      totally mismatched timestamp for the new count to confuse clients.
      
      Restore old client visible behaviour from before Linux 3.17, but
      zero out the timestamp at vblank counter update (instead of disable
      as in original implementation) if we can't generate a meaningful
      timestamp immediately for the new vblank counter. This will fix
      this regression, so callers know they need to retry again later
      if they need a valid timestamp, but at the same time preserves
      the improvements made in the commit mentioned above.
      Signed-off-by: NMario Kleiner <mario.kleiner.de@gmail.com>
      Cc: <stable@vger.kernel.org> #v3.17+
      
      Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
      Cc: Daniel Vetter <daniel@ffwll.ch>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      fdb68e09
  5. 08 5月, 2015 1 次提交
  6. 07 5月, 2015 11 次提交
  7. 06 5月, 2015 1 次提交
  8. 05 5月, 2015 4 次提交
  9. 28 4月, 2015 1 次提交
  10. 27 4月, 2015 6 次提交