Skip to content

Commit 46cbc18

Browse files
committed
Merge tag 'drm-fixes-2020-11-20-2' of git://anongit.freedesktop.org/drm/drm
Pull drm fixes from Dave Airlie: "Weekly fixes pull. This contains some fixes for sun4i/dw-hdmi probing, then amdgpu enables arcturus hw without experimental flag and two other fixes and a group of i915 fixes. It also has a backported from next fix for the warn on reported in ast/drm_gem_vram_helper code in the merge window. There's a separate report which initially looked to be the same problem, but I'm going to chase that up next week a bit more as I don't think the bisect landed anywhere useful. Summary: core: - vram helper TTM regression fix amdgpu: - Pageflip fix for navi1x with 5 or 6 displays - Remove experimental flag for Arcturus - Fix regression in atomic commit tail rework i915: - Fix tgl power gating issue - Memory leak fixes - Selftest fixes - Display bpc fix - Fix TGL MOCS for PTE tracking dw-hdmi: - probing fix sun4i: - probing fix" * tag 'drm-fixes-2020-11-20-2' of git://anongit.freedesktop.org/drm/drm: drm/i915/gt: Fixup tgl mocs for PTE tracking drm/vram-helper: Fix use of top-down placement drm/i915/gt: Remember to free the virtual breadcrumbs drm/i915: Handle max_bpc==16 drm/amd/display: Always get CRTC updated constant values inside commit tail drm/sun4i: backend: Fix probe failure with multiple backends drm/sun4i: dw-hdmi: fix error return code in sun8i_dw_hdmi_bind() drm/i915/selftests: Fix wrong return value of perf_request_latency() drm/i915/selftests: Fix wrong return value of perf_series_engines() drm/i915: Avoid memory leak with more than 16 workarounds on a list drm/i915/tgl: Fix Media power gate sequence. drm/amdgpu: remove experimental flag from arcturus drm/amd/display: Add missing pflip irq for dcn2.0 drm/i915/gvt: return error when failing to take the module reference drm: bridge: dw-hdmi: Avoid resetting force in the detect function drm/i915/gvt: Set ENHANCED_FRAME_CAP bit drm/i915/gvt: Temporarily disable vfio_edid for BXT/APL
2 parents 4d02da9 + 6600f9d commit 46cbc18

18 files changed

Lines changed: 60 additions & 49 deletions

File tree

drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1055,10 +1055,10 @@ static const struct pci_device_id pciidlist[] = {
10551055
{0x1002, 0x15dd, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RAVEN|AMD_IS_APU},
10561056
{0x1002, 0x15d8, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_RAVEN|AMD_IS_APU},
10571057
/* Arcturus */
1058-
{0x1002, 0x738C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS|AMD_EXP_HW_SUPPORT},
1059-
{0x1002, 0x7388, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS|AMD_EXP_HW_SUPPORT},
1060-
{0x1002, 0x738E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS|AMD_EXP_HW_SUPPORT},
1061-
{0x1002, 0x7390, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS|AMD_EXP_HW_SUPPORT},
1058+
{0x1002, 0x738C, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS},
1059+
{0x1002, 0x7388, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS},
1060+
{0x1002, 0x738E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS},
1061+
{0x1002, 0x7390, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_ARCTURUS},
10621062
/* Navi10 */
10631063
{0x1002, 0x7310, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI10},
10641064
{0x1002, 0x7312, PCI_ANY_ID, PCI_ANY_ID, 0, 0, CHIP_NAVI10},

drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7506,7 +7506,6 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
75067506
bool mode_set_reset_required = false;
75077507

75087508
drm_atomic_helper_update_legacy_modeset_state(dev, state);
7509-
drm_atomic_helper_calc_timestamping_constants(state);
75107509

75117510
dm_state = dm_atomic_get_new_state(state);
75127511
if (dm_state && dm_state->context) {
@@ -7533,6 +7532,8 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state)
75337532
}
75347533
}
75357534

7535+
drm_atomic_helper_calc_timestamping_constants(state);
7536+
75367537
/* update changed items */
75377538
for_each_oldnew_crtc_in_state(state, crtc, old_crtc_state, new_crtc_state, i) {
75387539
struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc);

drivers/gpu/drm/amd/display/dc/irq/dcn20/irq_service_dcn20.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,8 @@ irq_source_info_dcn20[DAL_IRQ_SOURCES_NUMBER] = {
299299
pflip_int_entry(1),
300300
pflip_int_entry(2),
301301
pflip_int_entry(3),
302-
[DC_IRQ_SOURCE_PFLIP5] = dummy_irq_entry(),
303-
[DC_IRQ_SOURCE_PFLIP6] = dummy_irq_entry(),
302+
pflip_int_entry(4),
303+
pflip_int_entry(5),
304304
[DC_IRQ_SOURCE_PFLIP_UNDERLAY0] = dummy_irq_entry(),
305305
gpio_pad_int_entry(0),
306306
gpio_pad_int_entry(1),

drivers/gpu/drm/bridge/synopsys/dw-hdmi.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2327,12 +2327,6 @@ static enum drm_connector_status dw_hdmi_detect(struct dw_hdmi *hdmi)
23272327
{
23282328
enum drm_connector_status result;
23292329

2330-
mutex_lock(&hdmi->mutex);
2331-
hdmi->force = DRM_FORCE_UNSPECIFIED;
2332-
dw_hdmi_update_power(hdmi);
2333-
dw_hdmi_update_phy_mask(hdmi);
2334-
mutex_unlock(&hdmi->mutex);
2335-
23362330
result = hdmi->phy.ops->read_hpd(hdmi, hdmi->phy.data);
23372331

23382332
mutex_lock(&hdmi->mutex);

drivers/gpu/drm/drm_gem_vram_helper.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ static void drm_gem_vram_placement(struct drm_gem_vram_object *gbo,
140140
unsigned int c = 0;
141141

142142
if (pl_flag & DRM_GEM_VRAM_PL_FLAG_TOPDOWN)
143-
pl_flag = TTM_PL_FLAG_TOPDOWN;
143+
invariant_flags = TTM_PL_FLAG_TOPDOWN;
144144

145145
gbo->placement.placement = gbo->placements;
146146
gbo->placement.busy_placement = gbo->placements;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12878,10 +12878,11 @@ compute_sink_pipe_bpp(const struct drm_connector_state *conn_state,
1287812878
case 10 ... 11:
1287912879
bpp = 10 * 3;
1288012880
break;
12881-
case 12:
12881+
case 12 ... 16:
1288212882
bpp = 12 * 3;
1288312883
break;
1288412884
default:
12885+
MISSING_CASE(conn_state->max_bpc);
1288512886
return -EINVAL;
1288612887
}
1288712888

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5457,6 +5457,7 @@ static void virtual_context_destroy(struct kref *kref)
54575457
__execlists_context_fini(&ve->context);
54585458
intel_context_fini(&ve->context);
54595459

5460+
intel_breadcrumbs_free(ve->base.breadcrumbs);
54605461
intel_engine_free_request_pool(&ve->base);
54615462

54625463
kfree(ve->bonds);

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,9 @@ static const struct drm_i915_mocs_entry tgl_mocs_table[] = {
243243
* only, __init_mocs_table() take care to program unused index with
244244
* this entry.
245245
*/
246-
MOCS_ENTRY(1, LE_3_WB | LE_TC_1_LLC | LE_LRUM(3),
247-
L3_3_WB),
246+
MOCS_ENTRY(I915_MOCS_PTE,
247+
LE_0_PAGETABLE | LE_TC_0_PAGETABLE,
248+
L3_1_UC),
248249
GEN11_MOCS_ENTRIES,
249250

250251
/* Implicitly enable L1 - HDC:L1 + L3 + LLC */

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

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,12 @@ static inline void set(struct intel_uncore *uncore, i915_reg_t reg, u32 val)
5656

5757
static void gen11_rc6_enable(struct intel_rc6 *rc6)
5858
{
59-
struct intel_uncore *uncore = rc6_to_uncore(rc6);
59+
struct intel_gt *gt = rc6_to_gt(rc6);
60+
struct intel_uncore *uncore = gt->uncore;
6061
struct intel_engine_cs *engine;
6162
enum intel_engine_id id;
63+
u32 pg_enable;
64+
int i;
6265

6366
/* 2b: Program RC6 thresholds.*/
6467
set(uncore, GEN6_RC6_WAKE_RATE_LIMIT, 54 << 16 | 85);
@@ -102,10 +105,19 @@ static void gen11_rc6_enable(struct intel_rc6 *rc6)
102105
GEN6_RC_CTL_RC6_ENABLE |
103106
GEN6_RC_CTL_EI_MODE(1);
104107

105-
set(uncore, GEN9_PG_ENABLE,
106-
GEN9_RENDER_PG_ENABLE |
107-
GEN9_MEDIA_PG_ENABLE |
108-
GEN11_MEDIA_SAMPLER_PG_ENABLE);
108+
pg_enable =
109+
GEN9_RENDER_PG_ENABLE |
110+
GEN9_MEDIA_PG_ENABLE |
111+
GEN11_MEDIA_SAMPLER_PG_ENABLE;
112+
113+
if (INTEL_GEN(gt->i915) >= 12) {
114+
for (i = 0; i < I915_MAX_VCS; i++)
115+
if (HAS_ENGINE(gt, _VCS(i)))
116+
pg_enable |= (VDN_HCP_POWERGATE_ENABLE(i) |
117+
VDN_MFX_POWERGATE_ENABLE(i));
118+
}
119+
120+
set(uncore, GEN9_PG_ENABLE, pg_enable);
109121
}
110122

111123
static void gen9_rc6_enable(struct intel_rc6 *rc6)

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,8 +131,10 @@ static void _wa_add(struct i915_wa_list *wal, const struct i915_wa *wa)
131131
return;
132132
}
133133

134-
if (wal->list)
134+
if (wal->list) {
135135
memcpy(list, wal->list, sizeof(*wa) * wal->count);
136+
kfree(wal->list);
137+
}
136138

137139
wal->list = list;
138140
}

0 commit comments

Comments
 (0)