1. 15 Jun, 2018 5 commits
  2. 14 Jun, 2018 1 commit
  3. 13 Jun, 2018 13 commits
  4. 08 Jun, 2018 3 commits
  5. 07 Jun, 2018 4 commits
  6. 04 Jun, 2018 6 commits
  7. 03 Jun, 2018 8 commits
    • Archit Taneja's avatar
      drm/msm: Don't subclass drm_atomic_state anymore · c21c731d
      Archit Taneja authored
      With the addition of "private_objs" in drm_atomic_state, we no longer
      need to subclass drm_atomic_state to store state of share resources
      that don't perfectly fit within planes/crtc/connector state information.
      We can now save this state within drm_atomic_state itself using
      the private objects.
      
      Remove the infrastructure that allowed subclassing of drm_atomic_state
      in the driver.
      
      Changes in v3:
      - Added to the msm atomic helper patch set
      Changes in v4:
      - None
      Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      c21c731d
    • Archit Taneja's avatar
      drm/msm/mdp5: Use the new private_obj state · 7907a0d7
      Archit Taneja authored
      This replaces the usage of the subclassed atomic state (mdp5_state)
      with a private_obj state embedded within drm_atomic_state. The latter
      method is the preferred approach, since it's simpler to implement
      and less prone to errors.
      
      The new API replaces the older and equivalent mdp5_state usage in the
      following pattern:
      - References to "mdp5_kms->state" (i.e, the old/existing state) is
        replaced with mdp5_get_existing_global_state(). In the atomic_check
        path, this should be called with the glob_state_lock drm_modeset_lock
        alredy taken.
      - References to "mdp5_get_state()" are replaced with
        mdp5_get_global_state(). This acquires glob_state_lock and uses
        drm_atomic_get_private_obj_state() to create a new duplicated state.
      
      Changes in v3:
      - Acquire glob_state_lock in mdp5_smp.c
      - Added to the msm atomic helper patch set
      Changes in v4:
      - None
      Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      7907a0d7
    • Archit Taneja's avatar
      drm/msm/mdp5: Add global state as a private atomic object · 8d58ef34
      Archit Taneja authored
      Global shared resources (hwpipes, hwmixers and SMP) for MDP5 are
      implemented as a part of atomic state by subclassing drm_atomic_state.
      
      The preferred approach is to use the drm_private_obj infrastructure
      available in the atomic core.
      
      mdp5_global_state is introduced as a drm atomic private object. The two
      funcs mdp5_get_global_state() and mdp5_get_existing_global_state() are
      the two variants that will be used to access mdp5_global_state.
      
      This will replace the existing mdp5_state struct (which subclasses
      drm_atomic_state) and the funcs around it. These will be removed later
      once we mdp5_global_state is put to use everywhere.
      
      Changes in v3:
      - Added glob_state_lock instead of pushing it into the core
      - Added to the msm atomic helper patch set
      Changes in v4:
      - None
      Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarSean Paul <seanpaul@chromium.org>
      8d58ef34
    • Daniel Mack's avatar
      drm/msm: use correct aspace pointer in msm_gem_put_iova() · acb1acdb
      Daniel Mack authored
      Even though msm_gem_put_iova() is currently a NOP function, the caller
      should pass in the address space pointer it used to obtain the object.
      
      Other call sites were changed in 8bdcd949 ("drm/msm: pass
      address-space to _get_iova() and friends"), but this one seems to have
      been forgotten.
      Signed-off-by: default avatarDaniel Mack <daniel@zonque.org>
      Cc: Rob Clark <robdclark@gmail.com>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      acb1acdb
    • Daniel Mack's avatar
      drm/msm: remove unbalanced mutex unlock · 3c9620cd
      Daniel Mack authored
      This regression stems from 0e08270a ("drm/msm: Separate locking of
      buffer resources from struct_mutex").
      Signed-off-by: default avatarDaniel Mack <daniel@zonque.org>
      Cc: Sushmita Susheelendra <ssusheel@codeaurora.org>
      Cc: Rob Clark <rclark@redhat.com>
      Fixes: 0e08270a ("drm/msm: Separate locking of buffer resources from struct_mutex")
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      3c9620cd
    • Emil Velikov's avatar
      drm/msm: don't deref error pointer in the msm_fbdev_create error path · 641be142
      Emil Velikov authored
      Currently the error pointer returned by msm_alloc_stolen_fb gets passed
      to drm_framebuffer_remove. The latter handles only NULL pointers, thus
      a nasty crash will occur.
      
      Drop the unnecessary fail label and the associated checks - both err and
      fb will be set at this stage.
      
      Cc: Rob Clark <robdclark@gmail.com>
      Cc: linux-arm-msm@vger.kernel.org
      Cc: dri-devel@lists.freedesktop.org
      Cc: freedreno@lists.freedesktop.org
      Signed-off-by: default avatarEmil Velikov <emil.velikov@collabora.com>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      641be142
    • Stefan Agner's avatar
      drm/msm/dsi: use correct enum in dsi_get_cmd_fmt · cf606fe3
      Stefan Agner authored
      The function dsi_get_cmd_fmt returns enum dsi_cmd_dst_format,
      use the correct enum value also for MIPI_DSI_FMT_RGB666/_PACKED.
      
      This has been discovered using clang:
        drivers/gpu/drm/msm/dsi/dsi_host.c:743:35: warning: implicit conversion
              from enumeration type 'enum dsi_vid_dst_format' to different
              enumeration type 'enum dsi_cmd_dst_format' [-Wenum-conversion]
                case MIPI_DSI_FMT_RGB666:       return VID_DST_FORMAT_RGB666;
                                                ~~~~~~ ^~~~~~~~~~~~~~~~~~~~~
      Signed-off-by: default avatarStefan Agner <stefan@agner.ch>
      Reviewed-by: default avatarArchit Taneja <architt@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      cf606fe3
    • Ben Hutchings's avatar
      drm/msm: Fix possible null dereference on failure of get_pages() · 03c94d60
      Ben Hutchings authored
      Commit 62e3a3e3 changed get_pages() to initialise
      msm_gem_object::pages before trying to initialise msm_gem_object::sgt,
      so that put_pages() would properly clean up pages in the failure
      case.
      
      However, this means that put_pages() now needs to check that
      msm_gem_object::sgt is not null before trying to clean it up, and
      this check was only applied to part of the cleanup code.  Move
      it all into the conditional block.  (Strictly speaking we don't
      need to make the kfree() conditional, but since we can't avoid
      checking for null ourselves we may as well do so.)
      
      Fixes: 62e3a3e3 ("drm/msm: fix leak in failed get_pages")
      Signed-off-by: default avatarBen Hutchings <ben.hutchings@codethink.co.uk>
      Reviewed-by: default avatarJordan Crouse <jcrouse@codeaurora.org>
      Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
      03c94d60