+++ /dev/null
-From a8a2a3d70f0d811e54c88481a1c27323444dadd9 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Dec 2019 17:00:43 +0800
-Subject: drm/dp_mst: Remove VCPI while disabling topology mgr
-
-From: Wayne Lin <Wayne.Lin@amd.com>
-
-[ Upstream commit 64e62bdf04ab8529f45ed0a85122c703035dec3a ]
-
-[Why]
-
-This patch is trying to address the issue observed when hotplug DP
-daisy chain monitors.
-
-e.g.
-src-mstb-mstb-sst -> src (unplug) mstb-mstb-sst -> src-mstb-mstb-sst
-(plug in again)
-
-Once unplug a DP MST capable device, driver will call
-drm_dp_mst_topology_mgr_set_mst() to disable MST. In this function,
-it cleans data of topology manager while disabling mst_state. However,
-it doesn't clean up the proposed_vcpis of topology manager.
-If proposed_vcpi is not reset, once plug in MST daisy chain monitors
-later, code will fail at checking port validation while trying to
-allocate payloads.
-
-When MST capable device is plugged in again and try to allocate
-payloads by calling drm_dp_update_payload_part1(), this
-function will iterate over all proposed virtual channels to see if
-any proposed VCPI's num_slots is greater than 0. If any proposed
-VCPI's num_slots is greater than 0 and the port which the
-specific virtual channel directed to is not in the topology, code then
-fails at the port validation. Since there are stale VCPI allocations
-from the previous topology enablement in proposed_vcpi[], code will fail
-at port validation and reurn EINVAL.
-
-[How]
-
-Clean up the data of stale proposed_vcpi[] and reset mgr->proposed_vcpis
-to NULL while disabling mst in drm_dp_mst_topology_mgr_set_mst().
-
-Changes since v1:
-*Add on more details in commit message to describe the issue which the
-patch is trying to fix
-
-Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
-[added cc to stable]
-Signed-off-by: Lyude Paul <lyude@redhat.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20191205090043.7580-1-Wayne.Lin@amd.com
-Cc: <stable@vger.kernel.org> # v3.17+
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/drm_dp_mst_topology.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
-index 9d94c306c8ca1..f427a5dc66685 100644
---- a/drivers/gpu/drm/drm_dp_mst_topology.c
-+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
-@@ -2046,6 +2046,7 @@ static bool drm_dp_get_vc_payload_bw(int dp_link_bw,
- int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool mst_state)
- {
- int ret = 0;
-+ int i = 0;
- struct drm_dp_mst_branch *mstb = NULL;
-
- mutex_lock(&mgr->lock);
-@@ -2106,10 +2107,21 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
- /* this can fail if the device is gone */
- drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, 0);
- ret = 0;
-+ mutex_lock(&mgr->payload_lock);
- memset(mgr->payloads, 0, mgr->max_payloads * sizeof(struct drm_dp_payload));
- mgr->payload_mask = 0;
- set_bit(0, &mgr->payload_mask);
-+ for (i = 0; i < mgr->max_payloads; i++) {
-+ struct drm_dp_vcpi *vcpi = mgr->proposed_vcpis[i];
-+
-+ if (vcpi) {
-+ vcpi->vcpi = 0;
-+ vcpi->num_slots = 0;
-+ }
-+ mgr->proposed_vcpis[i] = NULL;
-+ }
- mgr->vcpi_mask = 0;
-+ mutex_unlock(&mgr->payload_lock);
- }
-
- out_unlock:
---
-2.20.1
-
btrfs-remove-trivial-locking-wrappers-of-tree-mod-lo.patch
btrfs-fix-race-between-adding-and-putting-tree-mod-s.patch
drm-atmel-hlcdc-enable-clock-before-configuring-timi.patch
-drm-dp_mst-remove-vcpi-while-disabling-topology-mgr.patch
kvm-x86-protect-pmu_intel.c-from-spectre-v1-l1tf-att.patch
btrfs-flush-write-bio-if-we-loop-in-extent_write_cac.patch
kvm-x86-fix-potential-put_fpu-w-o-load_fpu-on-mpx-pl.patch
+++ /dev/null
-From 1aee00e5e1f5483eec506bd57a050d222ecb6764 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Dec 2019 17:00:43 +0800
-Subject: drm/dp_mst: Remove VCPI while disabling topology mgr
-
-From: Wayne Lin <Wayne.Lin@amd.com>
-
-[ Upstream commit 64e62bdf04ab8529f45ed0a85122c703035dec3a ]
-
-[Why]
-
-This patch is trying to address the issue observed when hotplug DP
-daisy chain monitors.
-
-e.g.
-src-mstb-mstb-sst -> src (unplug) mstb-mstb-sst -> src-mstb-mstb-sst
-(plug in again)
-
-Once unplug a DP MST capable device, driver will call
-drm_dp_mst_topology_mgr_set_mst() to disable MST. In this function,
-it cleans data of topology manager while disabling mst_state. However,
-it doesn't clean up the proposed_vcpis of topology manager.
-If proposed_vcpi is not reset, once plug in MST daisy chain monitors
-later, code will fail at checking port validation while trying to
-allocate payloads.
-
-When MST capable device is plugged in again and try to allocate
-payloads by calling drm_dp_update_payload_part1(), this
-function will iterate over all proposed virtual channels to see if
-any proposed VCPI's num_slots is greater than 0. If any proposed
-VCPI's num_slots is greater than 0 and the port which the
-specific virtual channel directed to is not in the topology, code then
-fails at the port validation. Since there are stale VCPI allocations
-from the previous topology enablement in proposed_vcpi[], code will fail
-at port validation and reurn EINVAL.
-
-[How]
-
-Clean up the data of stale proposed_vcpi[] and reset mgr->proposed_vcpis
-to NULL while disabling mst in drm_dp_mst_topology_mgr_set_mst().
-
-Changes since v1:
-*Add on more details in commit message to describe the issue which the
-patch is trying to fix
-
-Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
-[added cc to stable]
-Signed-off-by: Lyude Paul <lyude@redhat.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20191205090043.7580-1-Wayne.Lin@amd.com
-Cc: <stable@vger.kernel.org> # v3.17+
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/drm_dp_mst_topology.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
-index 4d0f77f0edad1..d4f1a40f6fc5e 100644
---- a/drivers/gpu/drm/drm_dp_mst_topology.c
-+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
-@@ -2039,6 +2039,7 @@ static bool drm_dp_get_vc_payload_bw(int dp_link_bw,
- int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool mst_state)
- {
- int ret = 0;
-+ int i = 0;
- struct drm_dp_mst_branch *mstb = NULL;
-
- mutex_lock(&mgr->lock);
-@@ -2103,10 +2104,21 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
- /* this can fail if the device is gone */
- drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, 0);
- ret = 0;
-+ mutex_lock(&mgr->payload_lock);
- memset(mgr->payloads, 0, mgr->max_payloads * sizeof(struct drm_dp_payload));
- mgr->payload_mask = 0;
- set_bit(0, &mgr->payload_mask);
-+ for (i = 0; i < mgr->max_payloads; i++) {
-+ struct drm_dp_vcpi *vcpi = mgr->proposed_vcpis[i];
-+
-+ if (vcpi) {
-+ vcpi->vcpi = 0;
-+ vcpi->num_slots = 0;
-+ }
-+ mgr->proposed_vcpis[i] = NULL;
-+ }
- mgr->vcpi_mask = 0;
-+ mutex_unlock(&mgr->payload_lock);
- }
-
- out_unlock:
---
-2.20.1
-
btrfs-remove-trivial-locking-wrappers-of-tree-mod-lo.patch
btrfs-fix-race-between-adding-and-putting-tree-mod-s.patch
drm-atmel-hlcdc-enable-clock-before-configuring-timi.patch
-drm-dp_mst-remove-vcpi-while-disabling-topology-mgr.patch
kvm-x86-drop-picdev_in_range.patch
kvm-x86-refactor-picdev_write-to-prevent-spectre-v1-.patch
kvm-x86-protect-pmu_intel.c-from-spectre-v1-l1tf-att.patch
+++ /dev/null
-From fa78001d4127e5e466a2951da248875f7dd093e1 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Thu, 5 Dec 2019 17:00:43 +0800
-Subject: drm/dp_mst: Remove VCPI while disabling topology mgr
-
-From: Wayne Lin <Wayne.Lin@amd.com>
-
-[ Upstream commit 64e62bdf04ab8529f45ed0a85122c703035dec3a ]
-
-[Why]
-
-This patch is trying to address the issue observed when hotplug DP
-daisy chain monitors.
-
-e.g.
-src-mstb-mstb-sst -> src (unplug) mstb-mstb-sst -> src-mstb-mstb-sst
-(plug in again)
-
-Once unplug a DP MST capable device, driver will call
-drm_dp_mst_topology_mgr_set_mst() to disable MST. In this function,
-it cleans data of topology manager while disabling mst_state. However,
-it doesn't clean up the proposed_vcpis of topology manager.
-If proposed_vcpi is not reset, once plug in MST daisy chain monitors
-later, code will fail at checking port validation while trying to
-allocate payloads.
-
-When MST capable device is plugged in again and try to allocate
-payloads by calling drm_dp_update_payload_part1(), this
-function will iterate over all proposed virtual channels to see if
-any proposed VCPI's num_slots is greater than 0. If any proposed
-VCPI's num_slots is greater than 0 and the port which the
-specific virtual channel directed to is not in the topology, code then
-fails at the port validation. Since there are stale VCPI allocations
-from the previous topology enablement in proposed_vcpi[], code will fail
-at port validation and reurn EINVAL.
-
-[How]
-
-Clean up the data of stale proposed_vcpi[] and reset mgr->proposed_vcpis
-to NULL while disabling mst in drm_dp_mst_topology_mgr_set_mst().
-
-Changes since v1:
-*Add on more details in commit message to describe the issue which the
-patch is trying to fix
-
-Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
-[added cc to stable]
-Signed-off-by: Lyude Paul <lyude@redhat.com>
-Link: https://patchwork.freedesktop.org/patch/msgid/20191205090043.7580-1-Wayne.Lin@amd.com
-Cc: <stable@vger.kernel.org> # v3.17+
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/drm_dp_mst_topology.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
-index 17aedaaf364c1..8b1d497b7f99f 100644
---- a/drivers/gpu/drm/drm_dp_mst_topology.c
-+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
-@@ -2042,6 +2042,7 @@ static bool drm_dp_get_vc_payload_bw(int dp_link_bw,
- int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool mst_state)
- {
- int ret = 0;
-+ int i = 0;
- struct drm_dp_mst_branch *mstb = NULL;
-
- mutex_lock(&mgr->lock);
-@@ -2106,10 +2107,21 @@ int drm_dp_mst_topology_mgr_set_mst(struct drm_dp_mst_topology_mgr *mgr, bool ms
- /* this can fail if the device is gone */
- drm_dp_dpcd_writeb(mgr->aux, DP_MSTM_CTRL, 0);
- ret = 0;
-+ mutex_lock(&mgr->payload_lock);
- memset(mgr->payloads, 0, mgr->max_payloads * sizeof(struct drm_dp_payload));
- mgr->payload_mask = 0;
- set_bit(0, &mgr->payload_mask);
-+ for (i = 0; i < mgr->max_payloads; i++) {
-+ struct drm_dp_vcpi *vcpi = mgr->proposed_vcpis[i];
-+
-+ if (vcpi) {
-+ vcpi->vcpi = 0;
-+ vcpi->num_slots = 0;
-+ }
-+ mgr->proposed_vcpis[i] = NULL;
-+ }
- mgr->vcpi_mask = 0;
-+ mutex_unlock(&mgr->payload_lock);
- }
-
- out_unlock:
---
-2.20.1
-
btrfs-remove-trivial-locking-wrappers-of-tree-mod-lo.patch
btrfs-fix-race-between-adding-and-putting-tree-mod-s.patch
drm-atmel-hlcdc-enable-clock-before-configuring-timi.patch
-drm-dp_mst-remove-vcpi-while-disabling-topology-mgr.patch
kvm-x86-protect-pmu_intel.c-from-spectre-v1-l1tf-att.patch
btrfs-flush-write-bio-if-we-loop-in-extent_write_cac.patch
kvm-x86-mmu-apply-max-pa-check-for-mmio-sptes-to-32-.patch