From: Greg Kroah-Hartman Date: Mon, 19 Jul 2021 13:06:24 +0000 (+0200) Subject: 5.10-stable patches X-Git-Tag: v5.13.4~33 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=95245a1eea1e3f1b2d03a511cf130525e35d9266;p=thirdparty%2Fkernel%2Fstable-queue.git 5.10-stable patches added patches: drm-dp_mst-add-missing-drm-parameters-to-recently-added-call-to-drm_dbg_kms.patch drm-dp_mst-avoid-to-mess-up-payload-table-by-ports-in-stale-topology.patch drm-dp_mst-do-not-set-proposed-vcpi-directly.patch drm-ingenic-fix-non-osd-mode.patch drm-ingenic-switch-ipu-plane-to-type-overlay.patch revert-drm-ast-remove-reference-to-struct-drm_device.pdev.patch --- diff --git a/queue-5.10/drm-dp_mst-add-missing-drm-parameters-to-recently-added-call-to-drm_dbg_kms.patch b/queue-5.10/drm-dp_mst-add-missing-drm-parameters-to-recently-added-call-to-drm_dbg_kms.patch new file mode 100644 index 00000000000..3d159ff93c0 --- /dev/null +++ b/queue-5.10/drm-dp_mst-add-missing-drm-parameters-to-recently-added-call-to-drm_dbg_kms.patch @@ -0,0 +1,53 @@ +From 24ff3dc18b99c4b912ab1746e803ddb3be5ced4c Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= +Date: Wed, 16 Jun 2021 12:44:15 -0700 +Subject: drm/dp_mst: Add missing drm parameters to recently added call to drm_dbg_kms() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: José Roberto de Souza + +commit 24ff3dc18b99c4b912ab1746e803ddb3be5ced4c upstream. + +Commit 3769e4c0af5b ("drm/dp_mst: Avoid to mess up payload table by +ports in stale topology") added to calls to drm_dbg_kms() but it +missed the first parameter, the drm device breaking the build. + +Fixes: 3769e4c0af5b ("drm/dp_mst: Avoid to mess up payload table by ports in stale topology") +Cc: Wayne Lin +Cc: Lyude Paul +Cc: dri-devel@lists.freedesktop.org +Cc: stable@vger.kernel.org +Signed-off-by: José Roberto de Souza +Reviewed-by: Lyude Paul +Signed-off-by: Lyude Paul +Link: https://patchwork.freedesktop.org/patch/msgid/20210616194415.36926-1-jose.souza@intel.com +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/drm_dp_mst_topology.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/drm_dp_mst_topology.c ++++ b/drivers/gpu/drm/drm_dp_mst_topology.c +@@ -3385,7 +3385,9 @@ int drm_dp_update_payload_part1(struct d + mutex_unlock(&mgr->lock); + + if (skip) { +- drm_dbg_kms("Virtual channel %d is not in current topology\n", i); ++ drm_dbg_kms(mgr->dev, ++ "Virtual channel %d is not in current topology\n", ++ i); + continue; + } + /* Validated ports don't matter if we're releasing +@@ -3400,7 +3402,8 @@ int drm_dp_update_payload_part1(struct d + payload->start_slot = req_payload.start_slot; + continue; + } else { +- drm_dbg_kms("Fail:set payload to invalid sink"); ++ drm_dbg_kms(mgr->dev, ++ "Fail:set payload to invalid sink"); + mutex_unlock(&mgr->payload_lock); + return -EINVAL; + } diff --git a/queue-5.10/drm-dp_mst-avoid-to-mess-up-payload-table-by-ports-in-stale-topology.patch b/queue-5.10/drm-dp_mst-avoid-to-mess-up-payload-table-by-ports-in-stale-topology.patch new file mode 100644 index 00000000000..d581d00fe25 --- /dev/null +++ b/queue-5.10/drm-dp_mst-avoid-to-mess-up-payload-table-by-ports-in-stale-topology.patch @@ -0,0 +1,121 @@ +From 3769e4c0af5b82c8ea21d037013cb9564dfaa51f Mon Sep 17 00:00:00 2001 +From: Wayne Lin +Date: Wed, 16 Jun 2021 11:55:01 +0800 +Subject: drm/dp_mst: Avoid to mess up payload table by ports in stale topology + +From: Wayne Lin + +commit 3769e4c0af5b82c8ea21d037013cb9564dfaa51f upstream. + +[Why] +After unplug/hotplug hub from the system, userspace might start to +clear stale payloads gradually. If we call drm_dp_mst_deallocate_vcpi() +to release stale VCPI of those ports which are not relating to current +topology, we have chane to wrongly clear active payload table entry for +current topology. + +E.g. +We have allocated VCPI 1 in current payload table and we call +drm_dp_mst_deallocate_vcpi() to clean VCPI 1 in stale topology. In +drm_dp_mst_deallocate_vcpi(), it will call drm_dp_mst_put_payload_id() +tp put VCPI 1 and which means ID 1 is available again. Thereafter, if we +want to allocate a new payload stream, it will find ID 1 is available by +drm_dp_mst_assign_payload_id(). However, ID 1 is being used + +[How] +Check target sink is relating to current topology or not before doing +any payload table update. +Searching upward to find the target sink's relevant root branch device. +If the found root branch device is not the same root of current +topology, don't update payload table. + +Changes since v1: +* Change debug macro to use drm_dbg_kms() instead +* Amend the commit message to add Cc tag. + +Signed-off-by: Wayne Lin +Cc: stable@vger.kernel.org +Signed-off-by: Lyude Paul +Link: https://patchwork.freedesktop.org/patch/msgid/20210616035501.3776-3-Wayne.Lin@amd.com +Reviewed-by: Lyude Paul +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/drm_dp_mst_topology.c | 29 +++++++++++++++++++++++++++++ + 1 file changed, 29 insertions(+) + +--- a/drivers/gpu/drm/drm_dp_mst_topology.c ++++ b/drivers/gpu/drm/drm_dp_mst_topology.c +@@ -94,6 +94,9 @@ static int drm_dp_mst_register_i2c_bus(s + static void drm_dp_mst_unregister_i2c_bus(struct drm_dp_mst_port *port); + static void drm_dp_mst_kick_tx(struct drm_dp_mst_topology_mgr *mgr); + ++static bool drm_dp_mst_port_downstream_of_branch(struct drm_dp_mst_port *port, ++ struct drm_dp_mst_branch *branch); ++ + #define DBG_PREFIX "[dp_mst]" + + #define DP_STR(x) [DP_ ## x] = #x +@@ -3362,6 +3365,7 @@ int drm_dp_update_payload_part1(struct d + struct drm_dp_mst_port *port; + int i, j; + int cur_slots = 1; ++ bool skip; + + mutex_lock(&mgr->payload_lock); + for (i = 0; i < mgr->max_payloads; i++) { +@@ -3376,6 +3380,14 @@ int drm_dp_update_payload_part1(struct d + port = container_of(vcpi, struct drm_dp_mst_port, + vcpi); + ++ mutex_lock(&mgr->lock); ++ skip = !drm_dp_mst_port_downstream_of_branch(port, mgr->mst_primary); ++ mutex_unlock(&mgr->lock); ++ ++ if (skip) { ++ drm_dbg_kms("Virtual channel %d is not in current topology\n", i); ++ continue; ++ } + /* Validated ports don't matter if we're releasing + * VCPI + */ +@@ -3475,6 +3487,7 @@ int drm_dp_update_payload_part2(struct d + struct drm_dp_mst_port *port; + int i; + int ret = 0; ++ bool skip; + + mutex_lock(&mgr->payload_lock); + for (i = 0; i < mgr->max_payloads; i++) { +@@ -3484,6 +3497,13 @@ int drm_dp_update_payload_part2(struct d + + port = container_of(mgr->proposed_vcpis[i], struct drm_dp_mst_port, vcpi); + ++ mutex_lock(&mgr->lock); ++ skip = !drm_dp_mst_port_downstream_of_branch(port, mgr->mst_primary); ++ mutex_unlock(&mgr->lock); ++ ++ if (skip) ++ continue; ++ + DRM_DEBUG_KMS("payload %d %d\n", i, mgr->payloads[i].payload_state); + if (mgr->payloads[i].payload_state == DP_PAYLOAD_LOCAL) { + ret = drm_dp_create_payload_step2(mgr, port, mgr->proposed_vcpis[i]->vcpi, &mgr->payloads[i]); +@@ -4565,9 +4585,18 @@ EXPORT_SYMBOL(drm_dp_mst_reset_vcpi_slot + void drm_dp_mst_deallocate_vcpi(struct drm_dp_mst_topology_mgr *mgr, + struct drm_dp_mst_port *port) + { ++ bool skip; ++ + if (!port->vcpi.vcpi) + return; + ++ mutex_lock(&mgr->lock); ++ skip = !drm_dp_mst_port_downstream_of_branch(port, mgr->mst_primary); ++ mutex_unlock(&mgr->lock); ++ ++ if (skip) ++ return; ++ + drm_dp_mst_put_payload_id(mgr, port->vcpi.vcpi); + port->vcpi.num_slots = 0; + port->vcpi.pbn = 0; diff --git a/queue-5.10/drm-dp_mst-do-not-set-proposed-vcpi-directly.patch b/queue-5.10/drm-dp_mst-do-not-set-proposed-vcpi-directly.patch new file mode 100644 index 00000000000..a30f908ad31 --- /dev/null +++ b/queue-5.10/drm-dp_mst-do-not-set-proposed-vcpi-directly.patch @@ -0,0 +1,126 @@ +From 35d3e8cb35e75450f87f87e3d314e2d418b6954b Mon Sep 17 00:00:00 2001 +From: Wayne Lin +Date: Wed, 16 Jun 2021 11:55:00 +0800 +Subject: drm/dp_mst: Do not set proposed vcpi directly + +From: Wayne Lin + +commit 35d3e8cb35e75450f87f87e3d314e2d418b6954b upstream. + +[Why] +When we receive CSN message to notify one port is disconnected, we will +implicitly set its corresponding num_slots to 0. Later on, we will +eventually call drm_dp_update_payload_part1() to arrange down streams. + +In drm_dp_update_payload_part1(), we iterate over all proposed_vcpis[] +to do the update. Not specific to a target sink only. For example, if we +light up 2 monitors, Monitor_A and Monitor_B, and then we unplug +Monitor_B. Later on, when we call drm_dp_update_payload_part1() to try +to update payload for Monitor_A, we'll also implicitly clean payload for +Monitor_B at the same time. And finally, when we try to call +drm_dp_update_payload_part1() to clean payload for Monitor_B, we will do +nothing at this time since payload for Monitor_B has been cleaned up +previously. + +For StarTech 1to3 DP hub, it seems like if we didn't update DPCD payload +ID table then polling for "ACT Handled"(BIT_1 of DPCD 002C0h) will fail +and this polling will last for 3 seconds. + +Therefore, guess the best way is we don't set the proposed_vcpi[] +diretly. Let user of these herlper functions to set the proposed_vcpi +directly. + +[How] +1. Revert commit 7617e9621bf2 ("drm/dp_mst: clear time slots for ports +invalid") +2. Tackle the issue in previous commit by skipping those trasient +proposed VCPIs. These stale VCPIs shoulde be explicitly cleared by +user later on. + +Changes since v1: +* Change debug macro to use drm_dbg_kms() instead +* Amend the commit message to add Fixed & Cc tags + +Signed-off-by: Wayne Lin +Fixes: 7617e9621bf2 ("drm/dp_mst: clear time slots for ports invalid") +Cc: Lyude Paul +Cc: Wayne Lin +Cc: Maarten Lankhorst +Cc: Maxime Ripard +Cc: Thomas Zimmermann +Cc: dri-devel@lists.freedesktop.org +Cc: # v5.5+ +Signed-off-by: Lyude Paul +Link: https://patchwork.freedesktop.org/patch/msgid/20210616035501.3776-2-Wayne.Lin@amd.com +Reviewed-by: Lyude Paul +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/drm_dp_mst_topology.c | 36 +++++++++------------------------- + 1 file changed, 10 insertions(+), 26 deletions(-) + +--- a/drivers/gpu/drm/drm_dp_mst_topology.c ++++ b/drivers/gpu/drm/drm_dp_mst_topology.c +@@ -2499,7 +2499,7 @@ drm_dp_mst_handle_conn_stat(struct drm_d + { + struct drm_dp_mst_topology_mgr *mgr = mstb->mgr; + struct drm_dp_mst_port *port; +- int old_ddps, old_input, ret, i; ++ int old_ddps, ret; + u8 new_pdt; + bool new_mcs; + bool dowork = false, create_connector = false; +@@ -2531,7 +2531,6 @@ drm_dp_mst_handle_conn_stat(struct drm_d + } + + old_ddps = port->ddps; +- old_input = port->input; + port->input = conn_stat->input_port; + port->ldps = conn_stat->legacy_device_plug_status; + port->ddps = conn_stat->displayport_device_plug_status; +@@ -2554,28 +2553,6 @@ drm_dp_mst_handle_conn_stat(struct drm_d + dowork = false; + } + +- if (!old_input && old_ddps != port->ddps && !port->ddps) { +- for (i = 0; i < mgr->max_payloads; i++) { +- struct drm_dp_vcpi *vcpi = mgr->proposed_vcpis[i]; +- struct drm_dp_mst_port *port_validated; +- +- if (!vcpi) +- continue; +- +- port_validated = +- container_of(vcpi, struct drm_dp_mst_port, vcpi); +- port_validated = +- drm_dp_mst_topology_get_port_validated(mgr, port_validated); +- if (!port_validated) { +- mutex_lock(&mgr->payload_lock); +- vcpi->num_slots = 0; +- mutex_unlock(&mgr->payload_lock); +- } else { +- drm_dp_mst_topology_put_port(port_validated); +- } +- } +- } +- + if (port->connector) + drm_modeset_unlock(&mgr->base.lock); + else if (create_connector) +@@ -3406,8 +3383,15 @@ int drm_dp_update_payload_part1(struct d + port = drm_dp_mst_topology_get_port_validated( + mgr, port); + if (!port) { +- mutex_unlock(&mgr->payload_lock); +- return -EINVAL; ++ if (vcpi->num_slots == payload->num_slots) { ++ cur_slots += vcpi->num_slots; ++ payload->start_slot = req_payload.start_slot; ++ continue; ++ } else { ++ drm_dbg_kms("Fail:set payload to invalid sink"); ++ mutex_unlock(&mgr->payload_lock); ++ return -EINVAL; ++ } + } + put_port = true; + } diff --git a/queue-5.10/drm-ingenic-fix-non-osd-mode.patch b/queue-5.10/drm-ingenic-fix-non-osd-mode.patch new file mode 100644 index 00000000000..3e52480379e --- /dev/null +++ b/queue-5.10/drm-ingenic-fix-non-osd-mode.patch @@ -0,0 +1,71 @@ +From 7b4957684e5d813fcbdc98144e3cc5c4467b3e2e Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Sun, 24 Jan 2021 08:55:52 +0000 +Subject: drm/ingenic: Fix non-OSD mode + +From: Paul Cercueil + +commit 7b4957684e5d813fcbdc98144e3cc5c4467b3e2e upstream. + +Even though the JZ4740 did not have the OSD mode, it had (according to +the documentation) two DMA channels, but there is absolutely no +information about how to select the second DMA channel. + +Make the ingenic-drm driver work in non-OSD mode by using the +foreground0 plane (which is bound to the DMA0 channel) as the primary +plane, instead of the foreground1 plane, which is the primary plane +when in OSD mode. + +Fixes: 3c9bea4ef32b ("drm/ingenic: Add support for OSD mode") +Cc: # v5.8+ +Signed-off-by: Paul Cercueil +Acked-by: Daniel Vetter +Tested-by: H. Nikolaus Schaller +Link: https://patchwork.freedesktop.org/patch/msgid/20210124085552.29146-5-paul@crapouillou.net +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 11 +++++++---- + 1 file changed, 7 insertions(+), 4 deletions(-) + +--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c ++++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +@@ -455,7 +455,7 @@ static void ingenic_drm_plane_atomic_upd + height = state->src_h >> 16; + cpp = state->fb->format->cpp[0]; + +- if (priv->soc_info->has_osd && plane->type == DRM_PLANE_TYPE_OVERLAY) ++ if (!priv->soc_info->has_osd || plane->type == DRM_PLANE_TYPE_OVERLAY) + hwdesc = priv->dma_hwdesc_f0; + else + hwdesc = priv->dma_hwdesc_f1; +@@ -692,6 +692,7 @@ static int ingenic_drm_bind(struct devic + const struct jz_soc_info *soc_info; + struct ingenic_drm *priv; + struct clk *parent_clk; ++ struct drm_plane *primary; + struct drm_bridge *bridge; + struct drm_panel *panel; + struct drm_encoder *encoder; +@@ -784,9 +785,11 @@ static int ingenic_drm_bind(struct devic + if (soc_info->has_osd) + priv->ipu_plane = drm_plane_from_index(drm, 0); + +- drm_plane_helper_add(&priv->f1, &ingenic_drm_plane_helper_funcs); ++ primary = priv->soc_info->has_osd ? &priv->f1 : &priv->f0; + +- ret = drm_universal_plane_init(drm, &priv->f1, 1, ++ drm_plane_helper_add(primary, &ingenic_drm_plane_helper_funcs); ++ ++ ret = drm_universal_plane_init(drm, primary, 1, + &ingenic_drm_primary_plane_funcs, + ingenic_drm_primary_formats, + ARRAY_SIZE(ingenic_drm_primary_formats), +@@ -798,7 +801,7 @@ static int ingenic_drm_bind(struct devic + + drm_crtc_helper_add(&priv->crtc, &ingenic_drm_crtc_helper_funcs); + +- ret = drm_crtc_init_with_planes(drm, &priv->crtc, &priv->f1, ++ ret = drm_crtc_init_with_planes(drm, &priv->crtc, primary, + NULL, &ingenic_drm_crtc_funcs, NULL); + if (ret) { + dev_err(dev, "Failed to init CRTC: %i\n", ret); diff --git a/queue-5.10/drm-ingenic-switch-ipu-plane-to-type-overlay.patch b/queue-5.10/drm-ingenic-switch-ipu-plane-to-type-overlay.patch new file mode 100644 index 00000000000..6389f4c9df1 --- /dev/null +++ b/queue-5.10/drm-ingenic-switch-ipu-plane-to-type-overlay.patch @@ -0,0 +1,82 @@ +From 68b433fe6937cfa3f8975d18643d5956254edd6a Mon Sep 17 00:00:00 2001 +From: Paul Cercueil +Date: Mon, 29 Mar 2021 18:50:45 +0100 +Subject: drm/ingenic: Switch IPU plane to type OVERLAY + +From: Paul Cercueil + +commit 68b433fe6937cfa3f8975d18643d5956254edd6a upstream. + +It should have been an OVERLAY from the beginning. The documentation +stipulates that there should be an unique PRIMARY plane per CRTC. + +Fixes: fc1acf317b01 ("drm/ingenic: Add support for the IPU") +Cc: # 5.8+ +Signed-off-by: Paul Cercueil +Acked-by: Simon Ser +Link: https://patchwork.freedesktop.org/patch/msgid/20210329175046.214629-2-paul@crapouillou.net +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/ingenic/ingenic-drm-drv.c | 11 +++++------ + drivers/gpu/drm/ingenic/ingenic-ipu.c | 2 +- + 2 files changed, 6 insertions(+), 7 deletions(-) + +--- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c ++++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +@@ -347,7 +347,7 @@ static void ingenic_drm_plane_enable(str + unsigned int en_bit; + + if (priv->soc_info->has_osd) { +- if (plane->type == DRM_PLANE_TYPE_PRIMARY) ++ if (plane != &priv->f0) + en_bit = JZ_LCD_OSDC_F1EN; + else + en_bit = JZ_LCD_OSDC_F0EN; +@@ -362,7 +362,7 @@ void ingenic_drm_plane_disable(struct de + unsigned int en_bit; + + if (priv->soc_info->has_osd) { +- if (plane->type == DRM_PLANE_TYPE_PRIMARY) ++ if (plane != &priv->f0) + en_bit = JZ_LCD_OSDC_F1EN; + else + en_bit = JZ_LCD_OSDC_F0EN; +@@ -389,8 +389,7 @@ void ingenic_drm_plane_config(struct dev + + ingenic_drm_plane_enable(priv, plane); + +- if (priv->soc_info->has_osd && +- plane->type == DRM_PLANE_TYPE_PRIMARY) { ++ if (priv->soc_info->has_osd && plane != &priv->f0) { + switch (fourcc) { + case DRM_FORMAT_XRGB1555: + ctrl |= JZ_LCD_OSDCTRL_RGB555; +@@ -423,7 +422,7 @@ void ingenic_drm_plane_config(struct dev + } + + if (priv->soc_info->has_osd) { +- if (plane->type == DRM_PLANE_TYPE_PRIMARY) { ++ if (plane != &priv->f0) { + xy_reg = JZ_REG_LCD_XYP1; + size_reg = JZ_REG_LCD_SIZE1; + } else { +@@ -455,7 +454,7 @@ static void ingenic_drm_plane_atomic_upd + height = state->src_h >> 16; + cpp = state->fb->format->cpp[0]; + +- if (!priv->soc_info->has_osd || plane->type == DRM_PLANE_TYPE_OVERLAY) ++ if (!priv->soc_info->has_osd || plane == &priv->f0) + hwdesc = priv->dma_hwdesc_f0; + else + hwdesc = priv->dma_hwdesc_f1; +--- a/drivers/gpu/drm/ingenic/ingenic-ipu.c ++++ b/drivers/gpu/drm/ingenic/ingenic-ipu.c +@@ -753,7 +753,7 @@ static int ingenic_ipu_bind(struct devic + + err = drm_universal_plane_init(drm, plane, 1, &ingenic_ipu_plane_funcs, + soc_info->formats, soc_info->num_formats, +- NULL, DRM_PLANE_TYPE_PRIMARY, NULL); ++ NULL, DRM_PLANE_TYPE_OVERLAY, NULL); + if (err) { + dev_err(dev, "Failed to init plane: %i\n", err); + return err; diff --git a/queue-5.10/revert-drm-ast-remove-reference-to-struct-drm_device.pdev.patch b/queue-5.10/revert-drm-ast-remove-reference-to-struct-drm_device.pdev.patch new file mode 100644 index 00000000000..b110d98a4fa --- /dev/null +++ b/queue-5.10/revert-drm-ast-remove-reference-to-struct-drm_device.pdev.patch @@ -0,0 +1,48 @@ +From cb1b21b946f3fc0ac01547c1a4f04927ad0090bd Mon Sep 17 00:00:00 2001 +From: Greg Kroah-Hartman +Date: Mon, 19 Jul 2021 15:01:49 +0200 +Subject: Revert "drm/ast: Remove reference to struct drm_device.pdev" + +From: Greg Kroah-Hartman + +This reverts commit fcb041ca5c7787b096aafc899e45f93583e66cbd which is +commit 0ecb51824e838372e01330752503ddf9c0430ef7 upstream. + +Turns out this was incomplete, as it is missing a dependancy, so drop it +from the tree. + +Link: https://lore.kernel.org/r/CAJn8CcHHKSo7GF29Z1ufXJJpMUzn6+fdvwiqe9=JvgpcfvnbHQ@mail.gmail.com +Reported-by: Xiaotian Feng +Cc: Thomas Zimmermann +Cc: Michael J. Ruhl +Cc: KuoHsiang Chou +Cc: kernel test robot +Cc: Thomas Zimmermann +Cc: Dave Airlie +Cc: dri-devel@lists.freedesktop.org +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/ast/ast_main.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/drivers/gpu/drm/ast/ast_main.c ++++ b/drivers/gpu/drm/ast/ast_main.c +@@ -406,6 +406,7 @@ struct ast_private *ast_device_create(st + return ast; + dev = &ast->base; + ++ dev->pdev = pdev; + pci_set_drvdata(pdev, dev); + + ast->regs = pcim_iomap(pdev, 1, 0); +@@ -447,8 +448,8 @@ struct ast_private *ast_device_create(st + + /* map reserved buffer */ + ast->dp501_fw_buf = NULL; +- if (dev->vram_mm->vram_size < pci_resource_len(pdev, 0)) { +- ast->dp501_fw_buf = pci_iomap_range(pdev, 0, dev->vram_mm->vram_size, 0); ++ if (dev->vram_mm->vram_size < pci_resource_len(dev->pdev, 0)) { ++ ast->dp501_fw_buf = pci_iomap_range(dev->pdev, 0, dev->vram_mm->vram_size, 0); + if (!ast->dp501_fw_buf) + drm_info(dev, "failed to map reserved buffer!\n"); + } diff --git a/queue-5.10/series b/queue-5.10/series index b1181c93025..3c719e81c41 100644 --- a/queue-5.10/series +++ b/queue-5.10/series @@ -11,3 +11,9 @@ drm-i915-gtt-drop-the-page-table-optimisation.patch drm-i915-gt-fix-edeadlk-handling-regression.patch cgroup-verify-that-source-is-a-string.patch fbmem-do-not-delete-the-mode-that-is-still-in-use.patch +drm-dp_mst-do-not-set-proposed-vcpi-directly.patch +drm-dp_mst-avoid-to-mess-up-payload-table-by-ports-in-stale-topology.patch +drm-dp_mst-add-missing-drm-parameters-to-recently-added-call-to-drm_dbg_kms.patch +drm-ingenic-fix-non-osd-mode.patch +drm-ingenic-switch-ipu-plane-to-type-overlay.patch +revert-drm-ast-remove-reference-to-struct-drm_device.pdev.patch