Skip to content

Commit 9c1867d

Browse files
committed
Merge tag 'drm-intel-next-fixes-2019-12-05' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
- Includes gvt-next-fixes-2019-12-02 pull - Fixes for CI spotted eadlock and a race condition in GEM contexts - Fix for EHL port D programming Signed-off-by: Dave Airlie <[email protected]> From: Joonas Lahtinen <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
2 parents b53bd16 + 01bb630 commit 9c1867d

File tree

4 files changed

+13
-14
lines changed

4 files changed

+13
-14
lines changed

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

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5476,15 +5476,13 @@ static bool bxt_digital_port_connected(struct intel_encoder *encoder)
54765476
return I915_READ(GEN8_DE_PORT_ISR) & bit;
54775477
}
54785478

5479-
static bool icl_combo_port_connected(struct drm_i915_private *dev_priv,
5480-
struct intel_digital_port *intel_dig_port)
5479+
static bool intel_combo_phy_connected(struct drm_i915_private *dev_priv,
5480+
enum phy phy)
54815481
{
5482-
enum port port = intel_dig_port->base.port;
5483-
5484-
if (HAS_PCH_MCC(dev_priv) && port == PORT_C)
5482+
if (HAS_PCH_MCC(dev_priv) && phy == PHY_C)
54855483
return I915_READ(SDEISR) & SDE_TC_HOTPLUG_ICP(PORT_TC1);
54865484

5487-
return I915_READ(SDEISR) & SDE_DDI_HOTPLUG_ICP(port);
5485+
return I915_READ(SDEISR) & SDE_DDI_HOTPLUG_ICP(phy);
54885486
}
54895487

54905488
static bool icl_digital_port_connected(struct intel_encoder *encoder)
@@ -5494,7 +5492,7 @@ static bool icl_digital_port_connected(struct intel_encoder *encoder)
54945492
enum phy phy = intel_port_to_phy(dev_priv, encoder->port);
54955493

54965494
if (intel_phy_is_combo(dev_priv, phy))
5497-
return icl_combo_port_connected(dev_priv, dig_port);
5495+
return intel_combo_phy_connected(dev_priv, phy);
54985496
else if (intel_phy_is_tc(dev_priv, phy))
54995497
return intel_tc_port_connected(dig_port);
55005498
else

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ static struct intel_engine_cs *active_engine(struct intel_context *ce)
368368
if (!ce->timeline)
369369
return NULL;
370370

371-
rcu_read_lock();
371+
mutex_lock(&ce->timeline->mutex);
372372
list_for_each_entry_reverse(rq, &ce->timeline->requests, link) {
373373
if (i915_request_completed(rq))
374374
break;
@@ -378,7 +378,7 @@ static struct intel_engine_cs *active_engine(struct intel_context *ce)
378378
if (engine)
379379
break;
380380
}
381-
rcu_read_unlock();
381+
mutex_unlock(&ce->timeline->mutex);
382382

383383
return engine;
384384
}

drivers/gpu/drm/i915/gvt/cmd_parser.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1599,9 +1599,9 @@ static int cmd_handler_mi_op_2f(struct parser_exec_state *s)
15991599
if (!(cmd_val(s, 0) & (1 << 22)))
16001600
return ret;
16011601

1602-
/* check if QWORD */
1603-
if (DWORD_FIELD(0, 20, 19) == 1)
1604-
valid_len += 8;
1602+
/* check inline data */
1603+
if (cmd_val(s, 0) & BIT(18))
1604+
valid_len = CMD_LEN(9);
16051605
ret = gvt_check_valid_cmd_length(cmd_length(s),
16061606
valid_len);
16071607
if (ret)

drivers/gpu/drm/i915/gvt/handlers.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,7 @@ static int pipeconf_mmio_write(struct intel_vgpu *vgpu, unsigned int offset,
460460
static i915_reg_t force_nonpriv_white_list[] = {
461461
GEN9_CS_DEBUG_MODE1, //_MMIO(0x20ec)
462462
GEN9_CTX_PREEMPT_REG,//_MMIO(0x2248)
463+
PS_INVOCATION_COUNT,//_MMIO(0x2348)
463464
GEN8_CS_CHICKEN1,//_MMIO(0x2580)
464465
_MMIO(0x2690),
465466
_MMIO(0x2694),
@@ -508,7 +509,7 @@ static inline bool in_whitelist(unsigned int reg)
508509
static int force_nonpriv_write(struct intel_vgpu *vgpu,
509510
unsigned int offset, void *p_data, unsigned int bytes)
510511
{
511-
u32 reg_nonpriv = *(u32 *)p_data;
512+
u32 reg_nonpriv = (*(u32 *)p_data) & REG_GENMASK(25, 2);
512513
int ring_id = intel_gvt_render_mmio_to_ring_id(vgpu->gvt, offset);
513514
u32 ring_base;
514515
struct drm_i915_private *dev_priv = vgpu->gvt->dev_priv;
@@ -528,7 +529,7 @@ static int force_nonpriv_write(struct intel_vgpu *vgpu,
528529
bytes);
529530
} else
530531
gvt_err("vgpu(%d) Invalid FORCE_NONPRIV write %x at offset %x\n",
531-
vgpu->id, reg_nonpriv, offset);
532+
vgpu->id, *(u32 *)p_data, offset);
532533

533534
return 0;
534535
}

0 commit comments

Comments
 (0)