1. 06 1月, 2021 2 次提交
  2. 24 12月, 2020 2 次提交
  3. 16 12月, 2020 1 次提交
    • S
      drm/amd/display: Fixed kernel test robot warning · 8ccbfdf0
      Souptick Joarder 提交于
      Kernel test robot throws below warning ->
      
      drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5349:5:
      warning: no previous prototype for 'amdgpu_dm_crtc_atomic_set_property'
      [-Wmissing-prototypes]
      drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5349:5:
      warning: no previous prototype for function
      'amdgpu_dm_crtc_atomic_set_property' [-Wmissing-prototypes]
      drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5373:5:
      warning: no previous prototype for 'amdgpu_dm_crtc_atomic_get_property'
      [-Wmissing-prototypes]
      drivers/gpu/drm/amd/amdgpu/../display/amdgpu_dm/amdgpu_dm.c:5373:5:
      warning: no previous prototype for function
      'amdgpu_dm_crtc_atomic_get_property' [-Wmissing-prototypes]
      
      As these functions are only used inside amdgpu_dm.c, these can be
      made static.
      Reported-by: Nkernel test robot <lkp@intel.com>
      Signed-off-by: NSouptick Joarder <jrdr.linux@gmail.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      8ccbfdf0
  4. 11 12月, 2020 2 次提交
  5. 09 12月, 2020 8 次提交
  6. 03 12月, 2020 3 次提交
  7. 02 12月, 2020 2 次提交
  8. 25 11月, 2020 5 次提交
  9. 19 11月, 2020 3 次提交
    • B
      drm/amd/display: Add comments to hdcp property change code · 31c0ed90
      Bhawanpreet Lakha 提交于
      [Why]
      These comments are helpful in understanding which case each if
      statement handles.
      
      [How]
      Add comments for state transitions (9 possible cases)
      Signed-off-by: NBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
      Reviewed-by: NZhan Liu <zhan.liu@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      31c0ed90
    • B
      drm/amd/display: Add display only once. · 97f6c917
      Bhawanpreet Lakha 提交于
      [Why]
      We call add display multiple times because DESIRED->ENABLED cannot
      happen instantaneously. We can't compare the new_state/old_state to
      avoid this because on unplug we set the state to DESIRED and on hotplug
      the state will still be DESIRED.
      
      [How]
      Add a flag to dm_connector_state to keep track of when to enable or
      disable HDCP
      Signed-off-by: NBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
      Reviewed-by: NZhan Liu <zhan.liu@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      97f6c917
    • R
      drm/amd/display: Always get CRTC updated constant values inside commit tail · 8976f73b
      Rodrigo Siqueira 提交于
      We recently improved our display atomic commit and tail sequence to
      avoid some issues related to concurrency. One of the major changes
      consisted of moving the interrupt disable and the stream release from
      our atomic commit to our atomic tail (commit 6d90a208
      ("drm/amd/display: Move disable interrupt into commit tail")) .
      However, the new code introduced inside our commit tail function was
      inserted right after the function
      drm_atomic_helper_update_legacy_modeset_state(), which has routines for
      updating internal data structs related to timestamps. As a result, in
      certain conditions, the display module can reach a situation where we
      update our constants and, after that, clean it. This situation generates
      the following warning:
      
       amdgpu 0000:03:00.0: drm_WARN_ON_ONCE(drm_drv_uses_atomic_modeset(dev))
       WARNING: CPU: 6 PID: 1269 at drivers/gpu/drm/drm_vblank.c:722
       drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x32b/0x340 [drm]
       ...
       RIP:
       0010:drm_crtc_vblank_helper_get_vblank_timestamp_internal+0x32b/0x340
       [drm]
       ...
       Call Trace:
        ? dc_stream_get_vblank_counter+0x57/0x60 [amdgpu]
        drm_crtc_vblank_helper_get_vblank_timestamp+0x1c/0x20 [drm]
        drm_get_last_vbltimestamp+0xad/0xc0 [drm]
        drm_reset_vblank_timestamp+0x63/0xd0 [drm]
        drm_crtc_vblank_on+0x85/0x150 [drm]
        amdgpu_dm_atomic_commit_tail+0xaf1/0x2330 [amdgpu]
        commit_tail+0x99/0x130 [drm_kms_helper]
        drm_atomic_helper_commit+0x123/0x150 [drm_kms_helper]
        amdgpu_dm_atomic_commit+0x11/0x20 [amdgpu]
        drm_atomic_commit+0x4a/0x50 [drm]
        drm_atomic_helper_set_config+0x7c/0xc0 [drm_kms_helper]
        drm_mode_setcrtc+0x20b/0x7e0 [drm]
        ? tomoyo_path_number_perm+0x6f/0x200
        ? drm_mode_getcrtc+0x190/0x190 [drm]
        drm_ioctl_kernel+0xae/0xf0 [drm]
        drm_ioctl+0x245/0x400 [drm]
        ? drm_mode_getcrtc+0x190/0x190 [drm]
        amdgpu_drm_ioctl+0x4e/0x80 [amdgpu]
        __x64_sys_ioctl+0x91/0xc0
        do_syscall_64+0x38/0x90
        entry_SYSCALL_64_after_hwframe+0x44/0xa9
       ...
      
      For fixing this issue we rely upon a refactor introduced on
      drm_atomic_helper_update_legacy_modeset_state ("Remove the timestamping
      constant update from drm_atomic_helper_update_legacy_modeset_state()")
      which decouples constant values update from
      drm_atomic_helper_update_legacy_modeset_state to a new helper.
      Basically, this commit uses this new helper and place it right after our
      release module to avoid a situation where our CRTC struct gets wrong
      values.
      
      Bug: https://gitlab.freedesktop.org/drm/amd/-/issues/1373Reviewed-by: NHarry Wentland <harry.wentland@amd.com>
      Signed-off-by: NRodrigo Siqueira <Rodrigo.Siqueira@amd.com>
      Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
      8976f73b
  10. 17 11月, 2020 1 次提交
  11. 14 11月, 2020 1 次提交
  12. 11 11月, 2020 3 次提交
  13. 05 11月, 2020 1 次提交
  14. 04 11月, 2020 2 次提交
  15. 03 11月, 2020 3 次提交
  16. 02 11月, 2020 1 次提交
    • M
      drm/atomic: Pass the full state to CRTC atomic_check · 29b77ad7
      Maxime Ripard 提交于
      The current atomic helpers have either their object state being passed as
      an argument or the full atomic state.
      
      The former is the pattern that was done at first, before switching to the
      latter for new hooks or when it was needed.
      
      Let's start convert all the remaining helpers to provide a consistent
      interface, starting with the CRTC's atomic_check.
      
      The conversion was done using the coccinelle script below,
      built tested on all the drivers and actually tested on vc4.
      
      virtual report
      
      @@
      struct drm_crtc_helper_funcs *FUNCS;
      struct drm_crtc *crtc;
      struct drm_crtc_state *crtc_state;
      identifier dev, state;
      identifier ret, f;
      @@
      
       f(struct drm_device *dev, struct drm_atomic_state *state)
       {
      	<...
      -	ret = FUNCS->atomic_check(crtc, crtc_state);
      +	ret = FUNCS->atomic_check(crtc, state);
      	...>
       }
      
      @@
      identifier crtc, new_state;
      @@
      
       struct drm_crtc_helper_funcs {
       	...
      -	int (*atomic_check)(struct drm_crtc *crtc, struct drm_crtc_state *new_state);
      +	int (*atomic_check)(struct drm_crtc *crtc, struct drm_atomic_state *state);
       	...
      }
      
      @ crtc_atomic_func @
      identifier helpers;
      identifier func;
      @@
      
      static struct drm_crtc_helper_funcs helpers = {
      	...,
      	.atomic_check = func,
      	...,
      };
      
      @ ignores_new_state @
      identifier crtc_atomic_func.func;
      identifier crtc, new_state;
      @@
      
       int func(struct drm_crtc *crtc,
      		struct drm_crtc_state *new_state)
       {
      	... when != new_state
       }
      
      @ adds_new_state depends on crtc_atomic_func && !ignores_new_state @
      identifier crtc_atomic_func.func;
      identifier crtc, new_state;
      @@
      
       int func(struct drm_crtc *crtc, struct drm_crtc_state *new_state)
       {
      +	struct drm_crtc_state *new_state = drm_atomic_get_new_crtc_state(state, crtc);
       	...
       }
      
      @ depends on crtc_atomic_func @
      identifier crtc_atomic_func.func;
      expression E;
      type T;
      @@
      
       int func(...)
       {
      	...
      -	T state = E;
      +	T crtc_state = E;
       	<+...
      -	state
      +	crtc_state
       	...+>
       }
      
      @ depends on crtc_atomic_func @
      identifier crtc_atomic_func.func;
      type T;
      @@
      
       int func(...)
       {
       	...
      -	T state;
      +	T crtc_state;
       	<+...
      -	state
      +	crtc_state
       	...+>
       }
      
      @ depends on crtc_atomic_func @
      identifier crtc_atomic_func.func;
      identifier new_state;
      identifier crtc;
      @@
      
       int func(struct drm_crtc *crtc,
      -	       struct drm_crtc_state *new_state
      +	       struct drm_atomic_state *state
      	       )
       { ... }
      
      @@
      identifier new_state;
      identifier crtc;
      @@
      
       int vmw_du_crtc_atomic_check(struct drm_crtc *crtc,
      -                             struct drm_crtc_state *new_state
      +                             struct drm_atomic_state *state
                     )
       {
      +       struct drm_crtc_state *new_state = drm_atomic_get_new_crtc_state(state, crtc);
      	...
       }
      
      @@
      identifier new_state;
      identifier crtc;
      @@
      
       int vmw_du_crtc_atomic_check(struct drm_crtc *crtc,
      -                             struct drm_crtc_state *new_state
      +                             struct drm_atomic_state *state
                     );
      
      @ include depends on adds_new_state @
      @@
      
       #include <drm/drm_atomic.h>
      
      @ no_include depends on !include && adds_new_state @
      @@
      
      + #include <drm/drm_atomic.h>
        #include <drm/...>
      Signed-off-by: NMaxime Ripard <maxime@cerno.tech>
      Reviewed-by: NVille Syrjälä <ville.syrjala@linux.intel.com>
      Acked-by: NThomas Zimmermann <tzimmermann@suse.de>
      Link: https://patchwork.freedesktop.org/patch/msgid/20201028123222.1732139-1-maxime@cerno.tech
      29b77ad7