diff options
author | Imre Deak <imre.deak@intel.com> | 2020-06-10 15:47:04 +0200 |
---|---|---|
committer | Imre Deak <imre.deak@intel.com> | 2020-06-11 14:38:12 +0200 |
commit | 72822c3bfa8ef7c997692acd580c73c263107592 (patch) | |
tree | 66687138540c44f1139f9aab387890a9b6846569 /include/drm/drm_dp_mst_helper.h | |
parent | drm/dp_mst: Fix the DDC I2C device registration of an MST port (diff) | |
download | linux-72822c3bfa8ef7c997692acd580c73c263107592.tar.xz linux-72822c3bfa8ef7c997692acd580c73c263107592.zip |
drm/dp_mst: Fix flushing the delayed port/mstb destroy work
Atm, a pending delayed destroy work during module removal will be
canceled, leaving behind MST ports, mstbs. Fix this by using a dedicated
workqueue which will be drained of requeued items as well when
destroying it.
v2:
- Check if wq is NULL before calling destroy_workqueue().
Cc: Lyude Paul <lyude@redhat.com>
Cc: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Reviewed-by: Stanislav Lisovskiy <stanislav.lisovskiy@intel.com>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Imre Deak <imre.deak@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200610134704.25270-1-imre.deak@intel.com
Diffstat (limited to 'include/drm/drm_dp_mst_helper.h')
-rw-r--r-- | include/drm/drm_dp_mst_helper.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/drm/drm_dp_mst_helper.h b/include/drm/drm_dp_mst_helper.h index b230ff6f7081..8b9eb4db3381 100644 --- a/include/drm/drm_dp_mst_helper.h +++ b/include/drm/drm_dp_mst_helper.h @@ -681,6 +681,14 @@ struct drm_dp_mst_topology_mgr { * @destroy_branch_device_list. */ struct mutex delayed_destroy_lock; + + /** + * @delayed_destroy_wq: Workqueue used for delayed_destroy_work items. + * A dedicated WQ makes it possible to drain any requeued work items + * on it. + */ + struct workqueue_struct *delayed_destroy_wq; + /** * @delayed_destroy_work: Work item to destroy MST port and branch * devices, needed to avoid locking inversion. |