aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2018-06-08 16:34:39 -0400
committerDave Airlie <airlied@redhat.com>2018-06-08 16:34:51 -0400
commit33ce21d6a2491ef9adb8dc395e3f5bbbfcdc95b5 (patch)
tree84774c44e71aca62178c7f2a8e2d096c1c729939
parent68a14137fa68b798766c43b25d3e4de5e8d27a0f (diff)
parent807cba6559cf333a74df1fbd74f0597e8e7fa020 (diff)
Merge tag 'drm-intel-next-fixes-2018-06-08-2' of git://anongit.freedesktop.org/drm/drm-intel into drm-next
First batch of i915 fixes for v4.18: - gvt fixes that missed v4.17, potentially need to be backported - eDP resolution regression revert - remove broken nv12 special casing - remove stale asserts from find active requests Signed-off-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/87y3fp4h15.fsf@intel.com
-rw-r--r--drivers/gpu/drm/i915/gvt/cmd_parser.c1
-rw-r--r--drivers/gpu/drm/i915/gvt/display.h2
-rw-r--r--drivers/gpu/drm/i915/gvt/handlers.c13
-rw-r--r--drivers/gpu/drm/i915/gvt/kvmgt.c34
-rw-r--r--drivers/gpu/drm/i915/i915_gem.c17
-rw-r--r--drivers/gpu/drm/i915/intel_ddi.c6
-rw-r--r--drivers/gpu/drm/i915/intel_display.c7
-rw-r--r--drivers/gpu/drm/i915/intel_dp.c38
-rw-r--r--drivers/gpu/drm/i915/intel_drv.h2
-rw-r--r--drivers/gpu/drm/i915/intel_dsi.c2
-rw-r--r--drivers/gpu/drm/i915/intel_dvo.c2
-rw-r--r--drivers/gpu/drm/i915/intel_engine_cs.c2
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c3
-rw-r--r--drivers/gpu/drm/i915/intel_panel.c6
-rw-r--r--drivers/gpu/drm/i915/intel_pm.c1
15 files changed, 66 insertions, 70 deletions
diff --git a/drivers/gpu/drm/i915/gvt/cmd_parser.c b/drivers/gpu/drm/i915/gvt/cmd_parser.c
index 718ca08f9575..b51c05d03f14 100644
--- a/drivers/gpu/drm/i915/gvt/cmd_parser.c
+++ b/drivers/gpu/drm/i915/gvt/cmd_parser.c
@@ -2909,6 +2909,7 @@ static int init_cmd_table(struct intel_gvt *gvt)
2909 if (info) { 2909 if (info) {
2910 gvt_err("%s %s duplicated\n", e->info->name, 2910 gvt_err("%s %s duplicated\n", e->info->name,
2911 info->name); 2911 info->name);
2912 kfree(e);
2912 return -EEXIST; 2913 return -EEXIST;
2913 } 2914 }
2914 2915
diff --git a/drivers/gpu/drm/i915/gvt/display.h b/drivers/gpu/drm/i915/gvt/display.h
index b46b86892d58..ea7c1c525b8c 100644
--- a/drivers/gpu/drm/i915/gvt/display.h
+++ b/drivers/gpu/drm/i915/gvt/display.h
@@ -67,7 +67,7 @@
67#define AUX_NATIVE_REPLY_NAK (0x1 << 4) 67#define AUX_NATIVE_REPLY_NAK (0x1 << 4)
68#define AUX_NATIVE_REPLY_DEFER (0x2 << 4) 68#define AUX_NATIVE_REPLY_DEFER (0x2 << 4)
69 69
70#define AUX_BURST_SIZE 16 70#define AUX_BURST_SIZE 20
71 71
72/* DPCD addresses */ 72/* DPCD addresses */
73#define DPCD_REV 0x000 73#define DPCD_REV 0x000
diff --git a/drivers/gpu/drm/i915/gvt/handlers.c b/drivers/gpu/drm/i915/gvt/handlers.c
index 4b6532fb789a..bcbc47a88a70 100644
--- a/drivers/gpu/drm/i915/gvt/handlers.c
+++ b/drivers/gpu/drm/i915/gvt/handlers.c
@@ -903,11 +903,14 @@ static int dp_aux_ch_ctl_mmio_write(struct intel_vgpu *vgpu,
903 } 903 }
904 904
905 /* 905 /*
906 * Write request format: (command + address) occupies 906 * Write request format: Headr (command + address + size) occupies
907 * 3 bytes, followed by (len + 1) bytes of data. 907 * 4 bytes, followed by (len + 1) bytes of data. See details at
908 * intel_dp_aux_transfer().
908 */ 909 */
909 if (WARN_ON((len + 4) > AUX_BURST_SIZE)) 910 if ((len + 1 + 4) > AUX_BURST_SIZE) {
911 gvt_vgpu_err("dp_aux_header: len %d is too large\n", len);
910 return -EINVAL; 912 return -EINVAL;
913 }
911 914
912 /* unpack data from vreg to buf */ 915 /* unpack data from vreg to buf */
913 for (t = 0; t < 4; t++) { 916 for (t = 0; t < 4; t++) {
@@ -971,8 +974,10 @@ static int dp_aux_ch_ctl_mmio_write(struct intel_vgpu *vgpu,
971 /* 974 /*
972 * Read reply format: ACK (1 byte) plus (len + 1) bytes of data. 975 * Read reply format: ACK (1 byte) plus (len + 1) bytes of data.
973 */ 976 */
974 if (WARN_ON((len + 2) > AUX_BURST_SIZE)) 977 if ((len + 2) > AUX_BURST_SIZE) {
978 gvt_vgpu_err("dp_aux_header: len %d is too large\n", len);
975 return -EINVAL; 979 return -EINVAL;
980 }
976 981
977 /* read from virtual DPCD to vreg */ 982 /* read from virtual DPCD to vreg */
978 /* first 4 bytes: [ACK][addr][addr+1][addr+2] */ 983 /* first 4 bytes: [ACK][addr][addr+1][addr+2] */
diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c
index 1466d8769ec9..df4e4a07db3d 100644
--- a/drivers/gpu/drm/i915/gvt/kvmgt.c
+++ b/drivers/gpu/drm/i915/gvt/kvmgt.c
@@ -123,6 +123,12 @@ static int gvt_dma_map_page(struct intel_vgpu *vgpu, unsigned long gfn,
123 return -EINVAL; 123 return -EINVAL;
124 } 124 }
125 125
126 if (!pfn_valid(pfn)) {
127 gvt_vgpu_err("pfn 0x%lx is not mem backed\n", pfn);
128 vfio_unpin_pages(mdev_dev(vgpu->vdev.mdev), &gfn, 1);
129 return -EINVAL;
130 }
131
126 /* Setup DMA mapping. */ 132 /* Setup DMA mapping. */
127 page = pfn_to_page(pfn); 133 page = pfn_to_page(pfn);
128 *dma_addr = dma_map_page(dev, page, 0, PAGE_SIZE, 134 *dma_addr = dma_map_page(dev, page, 0, PAGE_SIZE,
@@ -583,6 +589,17 @@ out:
583 return ret; 589 return ret;
584} 590}
585 591
592static void intel_vgpu_release_msi_eventfd_ctx(struct intel_vgpu *vgpu)
593{
594 struct eventfd_ctx *trigger;
595
596 trigger = vgpu->vdev.msi_trigger;
597 if (trigger) {
598 eventfd_ctx_put(trigger);
599 vgpu->vdev.msi_trigger = NULL;
600 }
601}
602
586static void __intel_vgpu_release(struct intel_vgpu *vgpu) 603static void __intel_vgpu_release(struct intel_vgpu *vgpu)
587{ 604{
588 struct kvmgt_guest_info *info; 605 struct kvmgt_guest_info *info;
@@ -607,6 +624,8 @@ static void __intel_vgpu_release(struct intel_vgpu *vgpu)
607 info = (struct kvmgt_guest_info *)vgpu->handle; 624 info = (struct kvmgt_guest_info *)vgpu->handle;
608 kvmgt_guest_exit(info); 625 kvmgt_guest_exit(info);
609 626
627 intel_vgpu_release_msi_eventfd_ctx(vgpu);
628
610 vgpu->vdev.kvm = NULL; 629 vgpu->vdev.kvm = NULL;
611 vgpu->handle = 0; 630 vgpu->handle = 0;
612} 631}
@@ -987,7 +1006,8 @@ static int intel_vgpu_set_msi_trigger(struct intel_vgpu *vgpu,
987 return PTR_ERR(trigger); 1006 return PTR_ERR(trigger);
988 } 1007 }
989 vgpu->vdev.msi_trigger = trigger; 1008 vgpu->vdev.msi_trigger = trigger;
990 } 1009 } else if ((flags & VFIO_IRQ_SET_DATA_NONE) && !count)
1010 intel_vgpu_release_msi_eventfd_ctx(vgpu);
991 1011
992 return 0; 1012 return 0;
993} 1013}
@@ -1592,6 +1612,18 @@ static int kvmgt_inject_msi(unsigned long handle, u32 addr, u16 data)
1592 info = (struct kvmgt_guest_info *)handle; 1612 info = (struct kvmgt_guest_info *)handle;
1593 vgpu = info->vgpu; 1613 vgpu = info->vgpu;
1594 1614
1615 /*
1616 * When guest is poweroff, msi_trigger is set to NULL, but vgpu's
1617 * config and mmio register isn't restored to default during guest
1618 * poweroff. If this vgpu is still used in next vm, this vgpu's pipe
1619 * may be enabled, then once this vgpu is active, it will get inject
1620 * vblank interrupt request. But msi_trigger is null until msi is
1621 * enabled by guest. so if msi_trigger is null, success is still
1622 * returned and don't inject interrupt into guest.
1623 */
1624 if (vgpu->vdev.msi_trigger == NULL)
1625 return 0;
1626
1595 if (eventfd_signal(vgpu->vdev.msi_trigger, 1) == 1) 1627 if (eventfd_signal(vgpu->vdev.msi_trigger, 1) == 1)
1596 return 0; 1628 return 0;
1597 1629
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 0a2070112b66..3704f4c0c2c9 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2972,23 +2972,22 @@ i915_gem_find_active_request(struct intel_engine_cs *engine)
2972 struct i915_request *request, *active = NULL; 2972 struct i915_request *request, *active = NULL;
2973 unsigned long flags; 2973 unsigned long flags;
2974 2974
2975 /* We are called by the error capture and reset at a random 2975 /*
2976 * point in time. In particular, note that neither is crucially 2976 * We are called by the error capture, reset and to dump engine
2977 * ordered with an interrupt. After a hang, the GPU is dead and we 2977 * state at random points in time. In particular, note that neither is
2978 * assume that no more writes can happen (we waited long enough for 2978 * crucially ordered with an interrupt. After a hang, the GPU is dead
2979 * all writes that were in transaction to be flushed) - adding an 2979 * and we assume that no more writes can happen (we waited long enough
2980 * for all writes that were in transaction to be flushed) - adding an
2980 * extra delay for a recent interrupt is pointless. Hence, we do 2981 * extra delay for a recent interrupt is pointless. Hence, we do
2981 * not need an engine->irq_seqno_barrier() before the seqno reads. 2982 * not need an engine->irq_seqno_barrier() before the seqno reads.
2983 * At all other times, we must assume the GPU is still running, but
2984 * we only care about the snapshot of this moment.
2982 */ 2985 */
2983 spin_lock_irqsave(&engine->timeline.lock, flags); 2986 spin_lock_irqsave(&engine->timeline.lock, flags);
2984 list_for_each_entry(request, &engine->timeline.requests, link) { 2987 list_for_each_entry(request, &engine->timeline.requests, link) {
2985 if (__i915_request_completed(request, request->global_seqno)) 2988 if (__i915_request_completed(request, request->global_seqno))
2986 continue; 2989 continue;
2987 2990
2988 GEM_BUG_ON(request->engine != engine);
2989 GEM_BUG_ON(test_bit(DMA_FENCE_FLAG_SIGNALED_BIT,
2990 &request->fence.flags));
2991
2992 active = request; 2991 active = request;
2993 break; 2992 break;
2994 } 2993 }
diff --git a/drivers/gpu/drm/i915/intel_ddi.c b/drivers/gpu/drm/i915/intel_ddi.c
index b98ac0541f19..f4a8598a2d39 100644
--- a/drivers/gpu/drm/i915/intel_ddi.c
+++ b/drivers/gpu/drm/i915/intel_ddi.c
@@ -2453,12 +2453,13 @@ void icl_map_plls_to_ports(struct drm_crtc *crtc,
2453 for_each_new_connector_in_state(old_state, conn, conn_state, i) { 2453 for_each_new_connector_in_state(old_state, conn, conn_state, i) {
2454 struct intel_encoder *encoder = 2454 struct intel_encoder *encoder =
2455 to_intel_encoder(conn_state->best_encoder); 2455 to_intel_encoder(conn_state->best_encoder);
2456 enum port port = encoder->port; 2456 enum port port;
2457 uint32_t val; 2457 uint32_t val;
2458 2458
2459 if (conn_state->crtc != crtc) 2459 if (conn_state->crtc != crtc)
2460 continue; 2460 continue;
2461 2461
2462 port = encoder->port;
2462 mutex_lock(&dev_priv->dpll_lock); 2463 mutex_lock(&dev_priv->dpll_lock);
2463 2464
2464 val = I915_READ(DPCLKA_CFGCR0_ICL); 2465 val = I915_READ(DPCLKA_CFGCR0_ICL);
@@ -2490,11 +2491,12 @@ void icl_unmap_plls_to_ports(struct drm_crtc *crtc,
2490 for_each_old_connector_in_state(old_state, conn, old_conn_state, i) { 2491 for_each_old_connector_in_state(old_state, conn, old_conn_state, i) {
2491 struct intel_encoder *encoder = 2492 struct intel_encoder *encoder =
2492 to_intel_encoder(old_conn_state->best_encoder); 2493 to_intel_encoder(old_conn_state->best_encoder);
2493 enum port port = encoder->port; 2494 enum port port;
2494 2495
2495 if (old_conn_state->crtc != crtc) 2496 if (old_conn_state->crtc != crtc)
2496 continue; 2497 continue;
2497 2498
2499 port = encoder->port;
2498 mutex_lock(&dev_priv->dpll_lock); 2500 mutex_lock(&dev_priv->dpll_lock);
2499 I915_WRITE(DPCLKA_CFGCR0_ICL, 2501 I915_WRITE(DPCLKA_CFGCR0_ICL,
2500 I915_READ(DPCLKA_CFGCR0_ICL) | 2502 I915_READ(DPCLKA_CFGCR0_ICL) |
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index ad588d564198..dee3a8e659f1 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -3690,11 +3690,6 @@ u32 glk_plane_color_ctl(const struct intel_crtc_state *crtc_state,
3690 plane_color_ctl |= glk_plane_color_ctl_alpha(fb->format->format); 3690 plane_color_ctl |= glk_plane_color_ctl_alpha(fb->format->format);
3691 3691
3692 if (intel_format_is_yuv(fb->format->format)) { 3692 if (intel_format_is_yuv(fb->format->format)) {
3693 if (fb->format->format == DRM_FORMAT_NV12) {
3694 plane_color_ctl |=
3695 PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709;
3696 goto out;
3697 }
3698 if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709) 3693 if (plane_state->base.color_encoding == DRM_COLOR_YCBCR_BT709)
3699 plane_color_ctl |= PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709; 3694 plane_color_ctl |= PLANE_COLOR_CSC_MODE_YUV709_TO_RGB709;
3700 else 3695 else
@@ -3703,7 +3698,7 @@ u32 glk_plane_color_ctl(const struct intel_crtc_state *crtc_state,
3703 if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE) 3698 if (plane_state->base.color_range == DRM_COLOR_YCBCR_FULL_RANGE)
3704 plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE; 3699 plane_color_ctl |= PLANE_COLOR_YUV_RANGE_CORRECTION_DISABLE;
3705 } 3700 }
3706out: 3701
3707 return plane_color_ctl; 3702 return plane_color_ctl;
3708} 3703}
3709 3704
diff --git a/drivers/gpu/drm/i915/intel_dp.c b/drivers/gpu/drm/i915/intel_dp.c
index dde92e4af5d3..8320f0e8e3be 100644
--- a/drivers/gpu/drm/i915/intel_dp.c
+++ b/drivers/gpu/drm/i915/intel_dp.c
@@ -1679,23 +1679,6 @@ static int intel_dp_compute_bpp(struct intel_dp *intel_dp,
1679 return bpp; 1679 return bpp;
1680} 1680}
1681 1681
1682static bool intel_edp_compare_alt_mode(struct drm_display_mode *m1,
1683 struct drm_display_mode *m2)
1684{
1685 bool bres = false;
1686
1687 if (m1 && m2)
1688 bres = (m1->hdisplay == m2->hdisplay &&
1689 m1->hsync_start == m2->hsync_start &&
1690 m1->hsync_end == m2->hsync_end &&
1691 m1->htotal == m2->htotal &&
1692 m1->vdisplay == m2->vdisplay &&
1693 m1->vsync_start == m2->vsync_start &&
1694 m1->vsync_end == m2->vsync_end &&
1695 m1->vtotal == m2->vtotal);
1696 return bres;
1697}
1698
1699/* Adjust link config limits based on compliance test requests. */ 1682/* Adjust link config limits based on compliance test requests. */
1700static void 1683static void
1701intel_dp_adjust_compliance_config(struct intel_dp *intel_dp, 1684intel_dp_adjust_compliance_config(struct intel_dp *intel_dp,
@@ -1860,16 +1843,8 @@ intel_dp_compute_config(struct intel_encoder *encoder,
1860 pipe_config->has_audio = intel_conn_state->force_audio == HDMI_AUDIO_ON; 1843 pipe_config->has_audio = intel_conn_state->force_audio == HDMI_AUDIO_ON;
1861 1844
1862 if (intel_dp_is_edp(intel_dp) && intel_connector->panel.fixed_mode) { 1845 if (intel_dp_is_edp(intel_dp) && intel_connector->panel.fixed_mode) {
1863 struct drm_display_mode *panel_mode = 1846 intel_fixed_panel_mode(intel_connector->panel.fixed_mode,
1864 intel_connector->panel.alt_fixed_mode; 1847 adjusted_mode);
1865 struct drm_display_mode *req_mode = &pipe_config->base.mode;
1866
1867 if (!intel_edp_compare_alt_mode(req_mode, panel_mode))
1868 panel_mode = intel_connector->panel.fixed_mode;
1869
1870 drm_mode_debug_printmodeline(panel_mode);
1871
1872 intel_fixed_panel_mode(panel_mode, adjusted_mode);
1873 1848
1874 if (INTEL_GEN(dev_priv) >= 9) { 1849 if (INTEL_GEN(dev_priv) >= 9) {
1875 int ret; 1850 int ret;
@@ -6159,7 +6134,6 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
6159 struct drm_i915_private *dev_priv = to_i915(dev); 6134 struct drm_i915_private *dev_priv = to_i915(dev);
6160 struct drm_connector *connector = &intel_connector->base; 6135 struct drm_connector *connector = &intel_connector->base;
6161 struct drm_display_mode *fixed_mode = NULL; 6136 struct drm_display_mode *fixed_mode = NULL;
6162 struct drm_display_mode *alt_fixed_mode = NULL;
6163 struct drm_display_mode *downclock_mode = NULL; 6137 struct drm_display_mode *downclock_mode = NULL;
6164 bool has_dpcd; 6138 bool has_dpcd;
6165 struct drm_display_mode *scan; 6139 struct drm_display_mode *scan;
@@ -6214,14 +6188,13 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
6214 } 6188 }
6215 intel_connector->edid = edid; 6189 intel_connector->edid = edid;
6216 6190
6217 /* prefer fixed mode from EDID if available, save an alt mode also */ 6191 /* prefer fixed mode from EDID if available */
6218 list_for_each_entry(scan, &connector->probed_modes, head) { 6192 list_for_each_entry(scan, &connector->probed_modes, head) {
6219 if ((scan->type & DRM_MODE_TYPE_PREFERRED)) { 6193 if ((scan->type & DRM_MODE_TYPE_PREFERRED)) {
6220 fixed_mode = drm_mode_duplicate(dev, scan); 6194 fixed_mode = drm_mode_duplicate(dev, scan);
6221 downclock_mode = intel_dp_drrs_init( 6195 downclock_mode = intel_dp_drrs_init(
6222 intel_connector, fixed_mode); 6196 intel_connector, fixed_mode);
6223 } else if (!alt_fixed_mode) { 6197 break;
6224 alt_fixed_mode = drm_mode_duplicate(dev, scan);
6225 } 6198 }
6226 } 6199 }
6227 6200
@@ -6258,8 +6231,7 @@ static bool intel_edp_init_connector(struct intel_dp *intel_dp,
6258 pipe_name(pipe)); 6231 pipe_name(pipe));
6259 } 6232 }
6260 6233
6261 intel_panel_init(&intel_connector->panel, fixed_mode, alt_fixed_mode, 6234 intel_panel_init(&intel_connector->panel, fixed_mode, downclock_mode);
6262 downclock_mode);
6263 intel_connector->panel.backlight.power = intel_edp_backlight_power; 6235 intel_connector->panel.backlight.power = intel_edp_backlight_power;
6264 intel_panel_setup_backlight(connector, pipe); 6236 intel_panel_setup_backlight(connector, pipe);
6265 6237
diff --git a/drivers/gpu/drm/i915/intel_drv.h b/drivers/gpu/drm/i915/intel_drv.h
index d7dbca1aabff..0361130500a6 100644
--- a/drivers/gpu/drm/i915/intel_drv.h
+++ b/drivers/gpu/drm/i915/intel_drv.h
@@ -277,7 +277,6 @@ struct intel_encoder {
277 277
278struct intel_panel { 278struct intel_panel {
279 struct drm_display_mode *fixed_mode; 279 struct drm_display_mode *fixed_mode;
280 struct drm_display_mode *alt_fixed_mode;
281 struct drm_display_mode *downclock_mode; 280 struct drm_display_mode *downclock_mode;
282 281
283 /* backlight */ 282 /* backlight */
@@ -1850,7 +1849,6 @@ void intel_overlay_reset(struct drm_i915_private *dev_priv);
1850/* intel_panel.c */ 1849/* intel_panel.c */
1851int intel_panel_init(struct intel_panel *panel, 1850int intel_panel_init(struct intel_panel *panel,
1852 struct drm_display_mode *fixed_mode, 1851 struct drm_display_mode *fixed_mode,
1853 struct drm_display_mode *alt_fixed_mode,
1854 struct drm_display_mode *downclock_mode); 1852 struct drm_display_mode *downclock_mode);
1855void intel_panel_fini(struct intel_panel *panel); 1853void intel_panel_fini(struct intel_panel *panel);
1856void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode, 1854void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode,
diff --git a/drivers/gpu/drm/i915/intel_dsi.c b/drivers/gpu/drm/i915/intel_dsi.c
index 51a1d6868b1e..cf39ca90d887 100644
--- a/drivers/gpu/drm/i915/intel_dsi.c
+++ b/drivers/gpu/drm/i915/intel_dsi.c
@@ -1846,7 +1846,7 @@ void intel_dsi_init(struct drm_i915_private *dev_priv)
1846 connector->display_info.width_mm = fixed_mode->width_mm; 1846 connector->display_info.width_mm = fixed_mode->width_mm;
1847 connector->display_info.height_mm = fixed_mode->height_mm; 1847 connector->display_info.height_mm = fixed_mode->height_mm;
1848 1848
1849 intel_panel_init(&intel_connector->panel, fixed_mode, NULL, NULL); 1849 intel_panel_init(&intel_connector->panel, fixed_mode, NULL);
1850 intel_panel_setup_backlight(connector, INVALID_PIPE); 1850 intel_panel_setup_backlight(connector, INVALID_PIPE);
1851 1851
1852 intel_dsi_add_properties(intel_connector); 1852 intel_dsi_add_properties(intel_connector);
diff --git a/drivers/gpu/drm/i915/intel_dvo.c b/drivers/gpu/drm/i915/intel_dvo.c
index eb0c559b2715..a70d767313aa 100644
--- a/drivers/gpu/drm/i915/intel_dvo.c
+++ b/drivers/gpu/drm/i915/intel_dvo.c
@@ -536,7 +536,7 @@ void intel_dvo_init(struct drm_i915_private *dev_priv)
536 */ 536 */
537 intel_panel_init(&intel_connector->panel, 537 intel_panel_init(&intel_connector->panel,
538 intel_dvo_get_current_mode(intel_encoder), 538 intel_dvo_get_current_mode(intel_encoder),
539 NULL, NULL); 539 NULL);
540 intel_dvo->panel_wants_dither = true; 540 intel_dvo->panel_wants_dither = true;
541 } 541 }
542 542
diff --git a/drivers/gpu/drm/i915/intel_engine_cs.c b/drivers/gpu/drm/i915/intel_engine_cs.c
index 6bfd7e3ed152..1590375f31cb 100644
--- a/drivers/gpu/drm/i915/intel_engine_cs.c
+++ b/drivers/gpu/drm/i915/intel_engine_cs.c
@@ -1114,7 +1114,7 @@ static void print_request(struct drm_printer *m,
1114 const char *prefix) 1114 const char *prefix)
1115{ 1115{
1116 const char *name = rq->fence.ops->get_timeline_name(&rq->fence); 1116 const char *name = rq->fence.ops->get_timeline_name(&rq->fence);
1117 char buf[80]; 1117 char buf[80] = "";
1118 int x = 0; 1118 int x = 0;
1119 1119
1120 x = print_sched_attr(rq->i915, &rq->sched.attr, buf, x, sizeof(buf)); 1120 x = print_sched_attr(rq->i915, &rq->sched.attr, buf, x, sizeof(buf));
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index 8691c86f579c..d8ece907ff54 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -1140,8 +1140,7 @@ void intel_lvds_init(struct drm_i915_private *dev_priv)
1140out: 1140out:
1141 mutex_unlock(&dev->mode_config.mutex); 1141 mutex_unlock(&dev->mode_config.mutex);
1142 1142
1143 intel_panel_init(&intel_connector->panel, fixed_mode, NULL, 1143 intel_panel_init(&intel_connector->panel, fixed_mode, downclock_mode);
1144 downclock_mode);
1145 intel_panel_setup_backlight(connector, INVALID_PIPE); 1144 intel_panel_setup_backlight(connector, INVALID_PIPE);
1146 1145
1147 lvds_encoder->is_dual_link = compute_is_dual_link_lvds(lvds_encoder); 1146 lvds_encoder->is_dual_link = compute_is_dual_link_lvds(lvds_encoder);
diff --git a/drivers/gpu/drm/i915/intel_panel.c b/drivers/gpu/drm/i915/intel_panel.c
index 41d00b1603e3..b443278e569c 100644
--- a/drivers/gpu/drm/i915/intel_panel.c
+++ b/drivers/gpu/drm/i915/intel_panel.c
@@ -1928,13 +1928,11 @@ intel_panel_init_backlight_funcs(struct intel_panel *panel)
1928 1928
1929int intel_panel_init(struct intel_panel *panel, 1929int intel_panel_init(struct intel_panel *panel,
1930 struct drm_display_mode *fixed_mode, 1930 struct drm_display_mode *fixed_mode,
1931 struct drm_display_mode *alt_fixed_mode,
1932 struct drm_display_mode *downclock_mode) 1931 struct drm_display_mode *downclock_mode)
1933{ 1932{
1934 intel_panel_init_backlight_funcs(panel); 1933 intel_panel_init_backlight_funcs(panel);
1935 1934
1936 panel->fixed_mode = fixed_mode; 1935 panel->fixed_mode = fixed_mode;
1937 panel->alt_fixed_mode = alt_fixed_mode;
1938 panel->downclock_mode = downclock_mode; 1936 panel->downclock_mode = downclock_mode;
1939 1937
1940 return 0; 1938 return 0;
@@ -1948,10 +1946,6 @@ void intel_panel_fini(struct intel_panel *panel)
1948 if (panel->fixed_mode) 1946 if (panel->fixed_mode)
1949 drm_mode_destroy(intel_connector->base.dev, panel->fixed_mode); 1947 drm_mode_destroy(intel_connector->base.dev, panel->fixed_mode);
1950 1948
1951 if (panel->alt_fixed_mode)
1952 drm_mode_destroy(intel_connector->base.dev,
1953 panel->alt_fixed_mode);
1954
1955 if (panel->downclock_mode) 1949 if (panel->downclock_mode)
1956 drm_mode_destroy(intel_connector->base.dev, 1950 drm_mode_destroy(intel_connector->base.dev,
1957 panel->downclock_mode); 1951 panel->downclock_mode);
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index b85229e153c4..53aaaa3e6886 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5150,7 +5150,6 @@ skl_copy_ddb_for_pipe(struct skl_ddb_values *dst,
5150 sizeof(dst->ddb.uv_plane[pipe])); 5150 sizeof(dst->ddb.uv_plane[pipe]));
5151 memcpy(dst->ddb.plane[pipe], src->ddb.plane[pipe], 5151 memcpy(dst->ddb.plane[pipe], src->ddb.plane[pipe],
5152 sizeof(dst->ddb.plane[pipe])); 5152 sizeof(dst->ddb.plane[pipe]));
5153 dst->ddb.enabled_slices = src->ddb.enabled_slices;
5154} 5153}
5155 5154
5156static void 5155static void