From 47ae747f0fa8e4e868b6266620a2096387b24857 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 22 Sep 2023 18:17:34 +0200 Subject: [PATCH] 6.1-stable patches added patches: interconnect-teach-lockdep-about-icc_bw_lock-order.patch --- ...each-lockdep-about-icc_bw_lock-order.patch | 47 +++++++++++++++++++ queue-6.1/series | 1 + 2 files changed, 48 insertions(+) create mode 100644 queue-6.1/interconnect-teach-lockdep-about-icc_bw_lock-order.patch diff --git a/queue-6.1/interconnect-teach-lockdep-about-icc_bw_lock-order.patch b/queue-6.1/interconnect-teach-lockdep-about-icc_bw_lock-order.patch new file mode 100644 index 00000000000..fed6b9fad85 --- /dev/null +++ b/queue-6.1/interconnect-teach-lockdep-about-icc_bw_lock-order.patch @@ -0,0 +1,47 @@ +From 13619170303878e1dae86d9a58b039475c957fcf Mon Sep 17 00:00:00 2001 +From: Rob Clark +Date: Mon, 7 Aug 2023 10:11:41 -0700 +Subject: interconnect: Teach lockdep about icc_bw_lock order + +From: Rob Clark + +commit 13619170303878e1dae86d9a58b039475c957fcf upstream. + +Teach lockdep that icc_bw_lock is needed in code paths that could +deadlock if they trigger reclaim. + +Signed-off-by: Rob Clark +Link: https://lore.kernel.org/r/20230807171148.210181-8-robdclark@gmail.com +Signed-off-by: Georgi Djakov +Cc: Guenter Roeck +Cc: Jon Hunter +Signed-off-by: Greg Kroah-Hartman +--- + drivers/interconnect/core.c | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +--- a/drivers/interconnect/core.c ++++ b/drivers/interconnect/core.c +@@ -1145,13 +1145,21 @@ void icc_sync_state(struct device *dev) + } + } + } ++ mutex_unlock(&icc_bw_lock); + mutex_unlock(&icc_lock); + } + EXPORT_SYMBOL_GPL(icc_sync_state); + + static int __init icc_init(void) + { +- struct device_node *root = of_find_node_by_path("/"); ++ struct device_node *root; ++ ++ /* Teach lockdep about lock ordering wrt. shrinker: */ ++ fs_reclaim_acquire(GFP_KERNEL); ++ might_lock(&icc_bw_lock); ++ fs_reclaim_release(GFP_KERNEL); ++ ++ root = of_find_node_by_path("/"); + + providers_count = of_count_icc_providers(root); + of_node_put(root); diff --git a/queue-6.1/series b/queue-6.1/series index 2f8f912b4bb..f60e157d91a 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -137,3 +137,4 @@ drm-amd-display-fix-the-white-screen-issue-when-64gb-dram.patch revert-memcg-drop-kmem.limit_in_bytes.patch drm-amdgpu-fix-amdgpu_cs_p1_user_fence.patch net-sched-retire-rsvp-classifier.patch +interconnect-teach-lockdep-about-icc_bw_lock-order.patch -- 2.47.3