Skip to content

Commit d6d4f0a

Browse files
committed
Merge tag 'drm-intel-fixes-2023-06-08' of git://anongit.freedesktop.org/drm/drm-intel into drm-fixes
CDCLK voltage fix for ADL-P and eDP wake sync pulse fix. Two error handling fixes to selftests (to appease static checkers) Signed-off-by: Dave Airlie <[email protected]> From: Joonas Lahtinen <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents b1913ff + 79d0150 commit d6d4f0a

File tree

4 files changed

+45
-13
lines changed

4 files changed

+45
-13
lines changed

drivers/gpu/drm/i915/display/intel_cdclk.c

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1453,6 +1453,18 @@ static u8 tgl_calc_voltage_level(int cdclk)
14531453
return 0;
14541454
}
14551455

1456+
static u8 rplu_calc_voltage_level(int cdclk)
1457+
{
1458+
if (cdclk > 556800)
1459+
return 3;
1460+
else if (cdclk > 480000)
1461+
return 2;
1462+
else if (cdclk > 312000)
1463+
return 1;
1464+
else
1465+
return 0;
1466+
}
1467+
14561468
static void icl_readout_refclk(struct drm_i915_private *dev_priv,
14571469
struct intel_cdclk_config *cdclk_config)
14581470
{
@@ -3242,6 +3254,13 @@ static const struct intel_cdclk_funcs mtl_cdclk_funcs = {
32423254
.calc_voltage_level = tgl_calc_voltage_level,
32433255
};
32443256

3257+
static const struct intel_cdclk_funcs rplu_cdclk_funcs = {
3258+
.get_cdclk = bxt_get_cdclk,
3259+
.set_cdclk = bxt_set_cdclk,
3260+
.modeset_calc_cdclk = bxt_modeset_calc_cdclk,
3261+
.calc_voltage_level = rplu_calc_voltage_level,
3262+
};
3263+
32453264
static const struct intel_cdclk_funcs tgl_cdclk_funcs = {
32463265
.get_cdclk = bxt_get_cdclk,
32473266
.set_cdclk = bxt_set_cdclk,
@@ -3384,14 +3403,17 @@ void intel_init_cdclk_hooks(struct drm_i915_private *dev_priv)
33843403
dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
33853404
dev_priv->display.cdclk.table = dg2_cdclk_table;
33863405
} else if (IS_ALDERLAKE_P(dev_priv)) {
3387-
dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
33883406
/* Wa_22011320316:adl-p[a0] */
3389-
if (IS_ADLP_DISPLAY_STEP(dev_priv, STEP_A0, STEP_B0))
3407+
if (IS_ADLP_DISPLAY_STEP(dev_priv, STEP_A0, STEP_B0)) {
33903408
dev_priv->display.cdclk.table = adlp_a_step_cdclk_table;
3391-
else if (IS_ADLP_RPLU(dev_priv))
3409+
dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
3410+
} else if (IS_ADLP_RPLU(dev_priv)) {
33923411
dev_priv->display.cdclk.table = rplu_cdclk_table;
3393-
else
3412+
dev_priv->display.funcs.cdclk = &rplu_cdclk_funcs;
3413+
} else {
33943414
dev_priv->display.cdclk.table = adlp_cdclk_table;
3415+
dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
3416+
}
33953417
} else if (IS_ROCKETLAKE(dev_priv)) {
33963418
dev_priv->display.funcs.cdclk = &tgl_cdclk_funcs;
33973419
dev_priv->display.cdclk.table = rkl_cdclk_table;

drivers/gpu/drm/i915/display/intel_dp_aux.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ static int intel_dp_aux_sync_len(void)
129129

130130
static int intel_dp_aux_fw_sync_len(void)
131131
{
132-
int precharge = 16; /* 10-16 */
132+
int precharge = 10; /* 10-16 */
133133
int preamble = 8;
134134

135135
return precharge + preamble;

drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -346,8 +346,10 @@ static int live_parallel_switch(void *arg)
346346
continue;
347347

348348
ce = intel_context_create(data[m].ce[0]->engine);
349-
if (IS_ERR(ce))
349+
if (IS_ERR(ce)) {
350+
err = PTR_ERR(ce);
350351
goto out;
352+
}
351353

352354
err = intel_context_pin(ce);
353355
if (err) {
@@ -367,8 +369,10 @@ static int live_parallel_switch(void *arg)
367369

368370
worker = kthread_create_worker(0, "igt/parallel:%s",
369371
data[n].ce[0]->engine->name);
370-
if (IS_ERR(worker))
372+
if (IS_ERR(worker)) {
373+
err = PTR_ERR(worker);
371374
goto out;
375+
}
372376

373377
data[n].worker = worker;
374378
}
@@ -397,8 +401,10 @@ static int live_parallel_switch(void *arg)
397401
}
398402
}
399403

400-
if (igt_live_test_end(&t))
401-
err = -EIO;
404+
if (igt_live_test_end(&t)) {
405+
err = err ?: -EIO;
406+
break;
407+
}
402408
}
403409

404410
out:

drivers/gpu/drm/i915/gt/selftest_execlists.c

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1530,22 +1530,26 @@ static int live_busywait_preempt(void *arg)
15301530
struct drm_i915_gem_object *obj;
15311531
struct i915_vma *vma;
15321532
enum intel_engine_id id;
1533-
int err = -ENOMEM;
15341533
u32 *map;
1534+
int err;
15351535

15361536
/*
15371537
* Verify that even without HAS_LOGICAL_RING_PREEMPTION, we can
15381538
* preempt the busywaits used to synchronise between rings.
15391539
*/
15401540

15411541
ctx_hi = kernel_context(gt->i915, NULL);
1542-
if (!ctx_hi)
1543-
return -ENOMEM;
1542+
if (IS_ERR(ctx_hi))
1543+
return PTR_ERR(ctx_hi);
1544+
15441545
ctx_hi->sched.priority = I915_CONTEXT_MAX_USER_PRIORITY;
15451546

15461547
ctx_lo = kernel_context(gt->i915, NULL);
1547-
if (!ctx_lo)
1548+
if (IS_ERR(ctx_lo)) {
1549+
err = PTR_ERR(ctx_lo);
15481550
goto err_ctx_hi;
1551+
}
1552+
15491553
ctx_lo->sched.priority = I915_CONTEXT_MIN_USER_PRIORITY;
15501554

15511555
obj = i915_gem_object_create_internal(gt->i915, PAGE_SIZE);

0 commit comments

Comments
 (0)