Commit c290db01 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'drm-fixes-2022-12-02' of git://anongit.freedesktop.org/drm/drm

Pull drm fixes from Dave Airlie:
 "Things do seem to have finally settled down, just four i915 and one
  amdgpu this week. Probably won't have much for next week if you do
  push rc8 out.

  i915:
   - Fix dram info readout
   - Remove non-existent pipes from bigjoiner pipe mask
   - Fix negative value passed as remaining time
   - Never return 0 if not all requests retired

  amdgpu:
   - VCN fix for vangogh"

* tag 'drm-fixes-2022-12-02' of git://anongit.freedesktop.org/drm/drm:
  drm/amdgpu: enable Vangogh VCN indirect sram mode
  drm/i915: Never return 0 if not all requests retired
  drm/i915: Fix negative value passed as remaining time
  drm/i915: Remove non-existent pipes from bigjoiner pipe mask
  drm/i915/mtl: Fix dram info readout
parents bdaa78c6 c082fbd6
...@@ -156,6 +156,9 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev) ...@@ -156,6 +156,9 @@ int amdgpu_vcn_sw_init(struct amdgpu_device *adev)
break; break;
case IP_VERSION(3, 0, 2): case IP_VERSION(3, 0, 2):
fw_name = FIRMWARE_VANGOGH; fw_name = FIRMWARE_VANGOGH;
if ((adev->firmware.load_type == AMDGPU_FW_LOAD_PSP) &&
(adev->pg_flags & AMD_PG_SUPPORT_VCN_DPG))
adev->vcn.indirect_sram = true;
break; break;
case IP_VERSION(3, 0, 16): case IP_VERSION(3, 0, 16):
fw_name = FIRMWARE_DIMGREY_CAVEFISH; fw_name = FIRMWARE_DIMGREY_CAVEFISH;
......
...@@ -3723,12 +3723,16 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc, ...@@ -3723,12 +3723,16 @@ static bool ilk_get_pipe_config(struct intel_crtc *crtc,
static u8 bigjoiner_pipes(struct drm_i915_private *i915) static u8 bigjoiner_pipes(struct drm_i915_private *i915)
{ {
u8 pipes;
if (DISPLAY_VER(i915) >= 12) if (DISPLAY_VER(i915) >= 12)
return BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D); pipes = BIT(PIPE_A) | BIT(PIPE_B) | BIT(PIPE_C) | BIT(PIPE_D);
else if (DISPLAY_VER(i915) >= 11) else if (DISPLAY_VER(i915) >= 11)
return BIT(PIPE_B) | BIT(PIPE_C); pipes = BIT(PIPE_B) | BIT(PIPE_C);
else else
return 0; pipes = 0;
return pipes & RUNTIME_INFO(i915)->pipe_mask;
} }
static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv, static bool transcoder_ddi_func_is_enabled(struct drm_i915_private *dev_priv,
......
...@@ -625,8 +625,13 @@ int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout) ...@@ -625,8 +625,13 @@ int intel_gt_wait_for_idle(struct intel_gt *gt, long timeout)
return -EINTR; return -EINTR;
} }
return timeout ? timeout : intel_uc_wait_for_idle(&gt->uc, if (timeout)
remaining_timeout); return timeout;
if (remaining_timeout < 0)
remaining_timeout = 0;
return intel_uc_wait_for_idle(&gt->uc, remaining_timeout);
} }
int intel_gt_init(struct intel_gt *gt) int intel_gt_init(struct intel_gt *gt)
......
...@@ -199,7 +199,7 @@ out_active: spin_lock(&timelines->lock); ...@@ -199,7 +199,7 @@ out_active: spin_lock(&timelines->lock);
if (remaining_timeout) if (remaining_timeout)
*remaining_timeout = timeout; *remaining_timeout = timeout;
return active_count ? timeout : 0; return active_count ? timeout ?: -ETIME : 0;
} }
static void retire_work_handler(struct work_struct *work) static void retire_work_handler(struct work_struct *work)
......
...@@ -471,8 +471,7 @@ static int xelpdp_get_dram_info(struct drm_i915_private *i915) ...@@ -471,8 +471,7 @@ static int xelpdp_get_dram_info(struct drm_i915_private *i915)
u32 val = intel_uncore_read(&i915->uncore, MTL_MEM_SS_INFO_GLOBAL); u32 val = intel_uncore_read(&i915->uncore, MTL_MEM_SS_INFO_GLOBAL);
struct dram_info *dram_info = &i915->dram_info; struct dram_info *dram_info = &i915->dram_info;
val = REG_FIELD_GET(MTL_DDR_TYPE_MASK, val); switch (REG_FIELD_GET(MTL_DDR_TYPE_MASK, val)) {
switch (val) {
case 0: case 0:
dram_info->type = INTEL_DRAM_DDR4; dram_info->type = INTEL_DRAM_DDR4;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment