diff options
author | Dave Airlie <airlied@redhat.com> | 2018-06-08 16:34:39 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2018-06-08 16:34:51 -0400 |
commit | 33ce21d6a2491ef9adb8dc395e3f5bbbfcdc95b5 (patch) | |
tree | 84774c44e71aca62178c7f2a8e2d096c1c729939 | |
parent | 68a14137fa68b798766c43b25d3e4de5e8d27a0f (diff) | |
parent | 807cba6559cf333a74df1fbd74f0597e8e7fa020 (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.c | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/gvt/display.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/gvt/handlers.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/gvt/kvmgt.c | 34 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 17 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_ddi.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 7 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 38 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dsi.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_dvo.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_engine_cs.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_lvds.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_panel.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_pm.c | 1 |
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 | ||
592 | static 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 | |||
586 | static void __intel_vgpu_release(struct intel_vgpu *vgpu) | 603 | static 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 | } |
3706 | out: | 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 | ||
1682 | static 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. */ |
1700 | static void | 1683 | static void |
1701 | intel_dp_adjust_compliance_config(struct intel_dp *intel_dp, | 1684 | intel_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 | ||
278 | struct intel_panel { | 278 | struct 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 */ |
1851 | int intel_panel_init(struct intel_panel *panel, | 1850 | int 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); |
1855 | void intel_panel_fini(struct intel_panel *panel); | 1853 | void intel_panel_fini(struct intel_panel *panel); |
1856 | void intel_fixed_panel_mode(const struct drm_display_mode *fixed_mode, | 1854 | void 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) | |||
1140 | out: | 1140 | out: |
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 | ||
1929 | int intel_panel_init(struct intel_panel *panel, | 1929 | int 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 | ||
5156 | static void | 5155 | static void |