From: Rob Clark <robdclark@gmail.com>
To: dri-devel@lists.freedesktop.org
Cc: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org,
Rob Clark <robdclark@chromium.org>,
Rob Clark <robdclark@gmail.com>,
Abhinav Kumar <quic_abhinavk@quicinc.com>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Sean Paul <sean@poorly.run>,
Marijn Suijten <marijn.suijten@somainline.org>,
David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>,
Akhil P Oommen <quic_akhilpo@quicinc.com>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Douglas Anderson <dianders@chromium.org>,
Bjorn Andersson <andersson@kernel.org>,
linux-kernel@vger.kernel.org (open list)
Subject: [PATCH v5 08/11] drm/msm/a6xx: Remove GMU lock from runpm paths
Date: Tue, 22 Aug 2023 11:01:55 -0700 [thread overview]
Message-ID: <20230822180208.95556-9-robdclark@gmail.com> (raw)
In-Reply-To: <20230822180208.95556-1-robdclark@gmail.com>
From: Rob Clark <robdclark@chromium.org>
The locking is unneeded here as runpm provides sufficient serialization.
Fixes:
======================================================
WARNING: possible circular locking dependency detected
6.4.3-debug+ #16 Not tainted
------------------------------------------------------
kworker/5:2/211 is trying to acquire lock:
ffffffd577cefb98 (prepare_lock){+.+.}-{3:3}, at: clk_prepare_lock+0x70/0x98
but task is already holding lock:
ffffff809db316c0 (&a6xx_gpu->gmu.lock){+.+.}-{3:3}, at: a6xx_gmu_pm_suspend+0x4c/0xb4 [msm]
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #3 (&a6xx_gpu->gmu.lock){+.+.}-{3:3}:
__mutex_lock+0xc8/0x388
mutex_lock_nested+0x2c/0x38
a6xx_gmu_resume+0xf0/0x7f8 [msm]
a6xx_gmu_pm_resume+0x38/0x158 [msm]
adreno_runtime_resume+0x2c/0x38 [msm]
pm_generic_runtime_resume+0x30/0x44
__rpm_callback+0x4c/0x134
rpm_callback+0x78/0x7c
rpm_resume+0x3a4/0x46c
__pm_runtime_resume+0x78/0xbc
pm_runtime_get_sync.isra.0+0x14/0x20 [msm]
msm_gpu_submit+0x3c/0x130 [msm]
msm_job_run+0x84/0x11c [msm]
drm_sched_main+0x264/0x354 [gpu_sched]
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
-> #2 (dma_fence_map){++++}-{0:0}:
__dma_fence_might_wait+0x74/0xc0
dma_fence_wait_timeout+0x50/0x174
dma_resv_wait_timeout+0x58/0xa8
active_evict+0x30/0x5c [msm]
drm_gem_lru_scan+0x15c/0x1c8
msm_gem_shrinker_scan+0x124/0x204 [msm]
do_shrink_slab+0x194/0x324
shrink_slab+0x270/0x2ec
shrink_node+0x278/0x674
do_try_to_free_pages+0x2dc/0x41c
try_to_free_pages+0x13c/0x1e4
__alloc_pages+0x364/0xb44
__folio_alloc+0x24/0x60
__read_swap_cache_async+0x10c/0x1fc
swap_cluster_readahead+0x1ac/0x234
shmem_swapin+0x6c/0xb0
shmem_swapin_folio+0x208/0x66c
shmem_get_folio_gfp+0x13c/0x650
shmem_read_folio_gfp+0x68/0xb0
shmem_read_mapping_page_gfp+0x20/0x44
drm_gem_get_pages+0xd4/0x1bc
get_pages+0x54/0x1e4 [msm]
msm_gem_pin_pages_locked+0x38/0xac [msm]
msm_gem_pin_vma_locked+0x58/0x88 [msm]
msm_ioctl_gem_submit+0xde4/0x13ac [msm]
drm_ioctl_kernel+0xe0/0x15c
drm_ioctl+0x2e8/0x3f4
vfs_ioctl+0x30/0x50
__arm64_sys_ioctl+0x80/0xb4
invoke_syscall+0x8c/0x128
el0_svc_common.constprop.0+0xdc/0x110
do_el0_svc+0x94/0xa4
el0_svc+0x44/0x88
el0t_64_sync_handler+0xac/0x13c
el0t_64_sync+0x190/0x194
-> #1 (fs_reclaim){+.+.}-{0:0}:
__fs_reclaim_acquire+0x3c/0x48
fs_reclaim_acquire+0x50/0x9c
slab_pre_alloc_hook.constprop.0+0x40/0x250
__kmem_cache_alloc_node+0x60/0x18c
kmalloc_trace+0x44/0x88
clk_rcg2_dfs_determine_rate+0x60/0x214
clk_core_determine_round_nolock+0xb8/0xf0
clk_core_round_rate_nolock+0x84/0x118
clk_core_round_rate_nolock+0xd8/0x118
clk_round_rate+0x6c/0xd0
geni_se_clk_tbl_get+0x78/0xc0
geni_se_clk_freq_match+0x44/0xe4
get_spi_clk_cfg+0x50/0xf4
geni_spi_set_clock_and_bw+0x54/0x104
spi_geni_prepare_message+0x130/0x174
__spi_pump_transfer_message+0x200/0x4d8
__spi_sync+0x13c/0x23c
spi_sync_locked+0x18/0x24
do_cros_ec_pkt_xfer_spi+0x124/0x3f0
cros_ec_xfer_high_pri_work+0x28/0x3c
kthread_worker_fn+0x14c/0x27c
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
-> #0 (prepare_lock){+.+.}-{3:3}:
__lock_acquire+0xdf8/0x109c
lock_acquire+0x234/0x284
__mutex_lock+0xc8/0x388
mutex_lock_nested+0x2c/0x38
clk_prepare_lock+0x70/0x98
clk_unprepare+0x2c/0x48
clk_bulk_unprepare+0x48/0x4c
a6xx_gmu_stop+0x94/0x260 [msm]
a6xx_gmu_pm_suspend+0x54/0xb4 [msm]
adreno_runtime_suspend+0x38/0x44 [msm]
pm_generic_runtime_suspend+0x30/0x44
__rpm_callback+0x4c/0x134
rpm_callback+0x78/0x7c
rpm_suspend+0x28c/0x44c
pm_runtime_work+0xa0/0xa4
process_one_work+0x288/0x3d8
worker_thread+0x1f0/0x260
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
other info that might help us debug this:
Chain exists of:
prepare_lock --> dma_fence_map --> &a6xx_gpu->gmu.lock
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&a6xx_gpu->gmu.lock);
lock(dma_fence_map);
lock(&a6xx_gpu->gmu.lock);
lock(prepare_lock);
*** DEADLOCK ***
3 locks held by kworker/5:2/211:
#0: ffffff808091d138 ((wq_completion)pm){+.+.}-{0:0}, at: process_one_work+0x1a0/0x3d8
#1: ffffffc00aa73e00 ((work_completion)(&dev->power.work)){+.+.}-{0:0}, at: process_one_work+0x1a0/0x3d8
#2: ffffff809db316c0 (&a6xx_gpu->gmu.lock){+.+.}-{3:3}, at: a6xx_gmu_pm_suspend+0x4c/0xb4 [msm]
stack backtrace:
CPU: 5 PID: 211 Comm: kworker/5:2 Not tainted 6.4.3-debug+ #16
Hardware name: Google Villager (rev1+) with LTE (DT)
Workqueue: pm pm_runtime_work
Call trace:
dump_backtrace+0xb4/0xf0
show_stack+0x20/0x30
dump_stack_lvl+0x60/0x84
dump_stack+0x18/0x24
print_circular_bug+0x1cc/0x234
check_noncircular+0x78/0xac
__lock_acquire+0xdf8/0x109c
lock_acquire+0x234/0x284
__mutex_lock+0xc8/0x388
mutex_lock_nested+0x2c/0x38
clk_prepare_lock+0x70/0x98
clk_unprepare+0x2c/0x48
clk_bulk_unprepare+0x48/0x4c
a6xx_gmu_stop+0x94/0x260 [msm]
a6xx_gmu_pm_suspend+0x54/0xb4 [msm]
adreno_runtime_suspend+0x38/0x44 [msm]
pm_generic_runtime_suspend+0x30/0x44
__rpm_callback+0x4c/0x134
rpm_callback+0x78/0x7c
rpm_suspend+0x28c/0x44c
pm_runtime_work+0xa0/0xa4
process_one_work+0x288/0x3d8
worker_thread+0x1f0/0x260
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
Signed-off-by: Rob Clark <robdclark@chromium.org>
---
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index 67dd2eeecf62..3993a5b0067b 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -1914,9 +1914,7 @@ static int a6xx_gmu_pm_resume(struct msm_gpu *gpu)
trace_msm_gpu_resume(0);
- mutex_lock(&a6xx_gpu->gmu.lock);
ret = a6xx_gmu_resume(a6xx_gpu);
- mutex_unlock(&a6xx_gpu->gmu.lock);
if (ret)
return ret;
@@ -1940,12 +1938,9 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)
trace_msm_gpu_resume(0);
- mutex_lock(&a6xx_gpu->gmu.lock);
-
opp = dev_pm_opp_find_freq_ceil(&gpu->pdev->dev, &freq);
if (IS_ERR(opp)) {
- ret = PTR_ERR(opp);
- goto err_set_opp;
+ return PTR_ERR(opp);
}
dev_pm_opp_put(opp);
@@ -1969,8 +1964,6 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)
pm_runtime_put(gmu->dev);
dev_pm_opp_set_opp(&gpu->pdev->dev, NULL);
}
-err_set_opp:
- mutex_unlock(&a6xx_gpu->gmu.lock);
if (!ret)
msm_devfreq_resume(gpu);
@@ -1990,9 +1983,7 @@ static int a6xx_gmu_pm_suspend(struct msm_gpu *gpu)
msm_devfreq_suspend(gpu);
- mutex_lock(&a6xx_gpu->gmu.lock);
ret = a6xx_gmu_stop(a6xx_gpu);
- mutex_unlock(&a6xx_gpu->gmu.lock);
if (ret)
return ret;
@@ -2016,8 +2007,6 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
msm_devfreq_suspend(gpu);
- mutex_lock(&a6xx_gpu->gmu.lock);
-
/* Drain the outstanding traffic on memory buses */
a6xx_bus_clear_pending_transactions(adreno_gpu, true);
@@ -2030,8 +2019,6 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
dev_pm_opp_set_opp(&gpu->pdev->dev, NULL);
pm_runtime_put_sync(gmu->dev);
- mutex_unlock(&a6xx_gpu->gmu.lock);
-
if (a6xx_gpu->shadow_bo)
for (i = 0; i < gpu->nr_rings; i++)
a6xx_gpu->shadow[i] = 0;
--
2.41.0
WARNING: multiple messages have this Message-ID (diff)
From: Rob Clark <robdclark@gmail.com>
To: dri-devel@lists.freedesktop.org
Cc: Rob Clark <robdclark@chromium.org>,
Akhil P Oommen <quic_akhilpo@quicinc.com>,
linux-arm-msm@vger.kernel.org,
Bjorn Andersson <andersson@kernel.org>,
Abhinav Kumar <quic_abhinavk@quicinc.com>,
Douglas Anderson <dianders@chromium.org>,
Konrad Dybcio <konrad.dybcio@linaro.org>,
Sean Paul <sean@poorly.run>,
Dmitry Baryshkov <dmitry.baryshkov@linaro.org>,
Marijn Suijten <marijn.suijten@somainline.org>,
freedreno@lists.freedesktop.org,
open list <linux-kernel@vger.kernel.org>
Subject: [PATCH v5 08/11] drm/msm/a6xx: Remove GMU lock from runpm paths
Date: Tue, 22 Aug 2023 11:01:55 -0700 [thread overview]
Message-ID: <20230822180208.95556-9-robdclark@gmail.com> (raw)
In-Reply-To: <20230822180208.95556-1-robdclark@gmail.com>
From: Rob Clark <robdclark@chromium.org>
The locking is unneeded here as runpm provides sufficient serialization.
Fixes:
======================================================
WARNING: possible circular locking dependency detected
6.4.3-debug+ #16 Not tainted
------------------------------------------------------
kworker/5:2/211 is trying to acquire lock:
ffffffd577cefb98 (prepare_lock){+.+.}-{3:3}, at: clk_prepare_lock+0x70/0x98
but task is already holding lock:
ffffff809db316c0 (&a6xx_gpu->gmu.lock){+.+.}-{3:3}, at: a6xx_gmu_pm_suspend+0x4c/0xb4 [msm]
which lock already depends on the new lock.
the existing dependency chain (in reverse order) is:
-> #3 (&a6xx_gpu->gmu.lock){+.+.}-{3:3}:
__mutex_lock+0xc8/0x388
mutex_lock_nested+0x2c/0x38
a6xx_gmu_resume+0xf0/0x7f8 [msm]
a6xx_gmu_pm_resume+0x38/0x158 [msm]
adreno_runtime_resume+0x2c/0x38 [msm]
pm_generic_runtime_resume+0x30/0x44
__rpm_callback+0x4c/0x134
rpm_callback+0x78/0x7c
rpm_resume+0x3a4/0x46c
__pm_runtime_resume+0x78/0xbc
pm_runtime_get_sync.isra.0+0x14/0x20 [msm]
msm_gpu_submit+0x3c/0x130 [msm]
msm_job_run+0x84/0x11c [msm]
drm_sched_main+0x264/0x354 [gpu_sched]
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
-> #2 (dma_fence_map){++++}-{0:0}:
__dma_fence_might_wait+0x74/0xc0
dma_fence_wait_timeout+0x50/0x174
dma_resv_wait_timeout+0x58/0xa8
active_evict+0x30/0x5c [msm]
drm_gem_lru_scan+0x15c/0x1c8
msm_gem_shrinker_scan+0x124/0x204 [msm]
do_shrink_slab+0x194/0x324
shrink_slab+0x270/0x2ec
shrink_node+0x278/0x674
do_try_to_free_pages+0x2dc/0x41c
try_to_free_pages+0x13c/0x1e4
__alloc_pages+0x364/0xb44
__folio_alloc+0x24/0x60
__read_swap_cache_async+0x10c/0x1fc
swap_cluster_readahead+0x1ac/0x234
shmem_swapin+0x6c/0xb0
shmem_swapin_folio+0x208/0x66c
shmem_get_folio_gfp+0x13c/0x650
shmem_read_folio_gfp+0x68/0xb0
shmem_read_mapping_page_gfp+0x20/0x44
drm_gem_get_pages+0xd4/0x1bc
get_pages+0x54/0x1e4 [msm]
msm_gem_pin_pages_locked+0x38/0xac [msm]
msm_gem_pin_vma_locked+0x58/0x88 [msm]
msm_ioctl_gem_submit+0xde4/0x13ac [msm]
drm_ioctl_kernel+0xe0/0x15c
drm_ioctl+0x2e8/0x3f4
vfs_ioctl+0x30/0x50
__arm64_sys_ioctl+0x80/0xb4
invoke_syscall+0x8c/0x128
el0_svc_common.constprop.0+0xdc/0x110
do_el0_svc+0x94/0xa4
el0_svc+0x44/0x88
el0t_64_sync_handler+0xac/0x13c
el0t_64_sync+0x190/0x194
-> #1 (fs_reclaim){+.+.}-{0:0}:
__fs_reclaim_acquire+0x3c/0x48
fs_reclaim_acquire+0x50/0x9c
slab_pre_alloc_hook.constprop.0+0x40/0x250
__kmem_cache_alloc_node+0x60/0x18c
kmalloc_trace+0x44/0x88
clk_rcg2_dfs_determine_rate+0x60/0x214
clk_core_determine_round_nolock+0xb8/0xf0
clk_core_round_rate_nolock+0x84/0x118
clk_core_round_rate_nolock+0xd8/0x118
clk_round_rate+0x6c/0xd0
geni_se_clk_tbl_get+0x78/0xc0
geni_se_clk_freq_match+0x44/0xe4
get_spi_clk_cfg+0x50/0xf4
geni_spi_set_clock_and_bw+0x54/0x104
spi_geni_prepare_message+0x130/0x174
__spi_pump_transfer_message+0x200/0x4d8
__spi_sync+0x13c/0x23c
spi_sync_locked+0x18/0x24
do_cros_ec_pkt_xfer_spi+0x124/0x3f0
cros_ec_xfer_high_pri_work+0x28/0x3c
kthread_worker_fn+0x14c/0x27c
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
-> #0 (prepare_lock){+.+.}-{3:3}:
__lock_acquire+0xdf8/0x109c
lock_acquire+0x234/0x284
__mutex_lock+0xc8/0x388
mutex_lock_nested+0x2c/0x38
clk_prepare_lock+0x70/0x98
clk_unprepare+0x2c/0x48
clk_bulk_unprepare+0x48/0x4c
a6xx_gmu_stop+0x94/0x260 [msm]
a6xx_gmu_pm_suspend+0x54/0xb4 [msm]
adreno_runtime_suspend+0x38/0x44 [msm]
pm_generic_runtime_suspend+0x30/0x44
__rpm_callback+0x4c/0x134
rpm_callback+0x78/0x7c
rpm_suspend+0x28c/0x44c
pm_runtime_work+0xa0/0xa4
process_one_work+0x288/0x3d8
worker_thread+0x1f0/0x260
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
other info that might help us debug this:
Chain exists of:
prepare_lock --> dma_fence_map --> &a6xx_gpu->gmu.lock
Possible unsafe locking scenario:
CPU0 CPU1
---- ----
lock(&a6xx_gpu->gmu.lock);
lock(dma_fence_map);
lock(&a6xx_gpu->gmu.lock);
lock(prepare_lock);
*** DEADLOCK ***
3 locks held by kworker/5:2/211:
#0: ffffff808091d138 ((wq_completion)pm){+.+.}-{0:0}, at: process_one_work+0x1a0/0x3d8
#1: ffffffc00aa73e00 ((work_completion)(&dev->power.work)){+.+.}-{0:0}, at: process_one_work+0x1a0/0x3d8
#2: ffffff809db316c0 (&a6xx_gpu->gmu.lock){+.+.}-{3:3}, at: a6xx_gmu_pm_suspend+0x4c/0xb4 [msm]
stack backtrace:
CPU: 5 PID: 211 Comm: kworker/5:2 Not tainted 6.4.3-debug+ #16
Hardware name: Google Villager (rev1+) with LTE (DT)
Workqueue: pm pm_runtime_work
Call trace:
dump_backtrace+0xb4/0xf0
show_stack+0x20/0x30
dump_stack_lvl+0x60/0x84
dump_stack+0x18/0x24
print_circular_bug+0x1cc/0x234
check_noncircular+0x78/0xac
__lock_acquire+0xdf8/0x109c
lock_acquire+0x234/0x284
__mutex_lock+0xc8/0x388
mutex_lock_nested+0x2c/0x38
clk_prepare_lock+0x70/0x98
clk_unprepare+0x2c/0x48
clk_bulk_unprepare+0x48/0x4c
a6xx_gmu_stop+0x94/0x260 [msm]
a6xx_gmu_pm_suspend+0x54/0xb4 [msm]
adreno_runtime_suspend+0x38/0x44 [msm]
pm_generic_runtime_suspend+0x30/0x44
__rpm_callback+0x4c/0x134
rpm_callback+0x78/0x7c
rpm_suspend+0x28c/0x44c
pm_runtime_work+0xa0/0xa4
process_one_work+0x288/0x3d8
worker_thread+0x1f0/0x260
kthread+0xf0/0x100
ret_from_fork+0x10/0x20
Signed-off-by: Rob Clark <robdclark@chromium.org>
---
drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
index 67dd2eeecf62..3993a5b0067b 100644
--- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
+++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c
@@ -1914,9 +1914,7 @@ static int a6xx_gmu_pm_resume(struct msm_gpu *gpu)
trace_msm_gpu_resume(0);
- mutex_lock(&a6xx_gpu->gmu.lock);
ret = a6xx_gmu_resume(a6xx_gpu);
- mutex_unlock(&a6xx_gpu->gmu.lock);
if (ret)
return ret;
@@ -1940,12 +1938,9 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)
trace_msm_gpu_resume(0);
- mutex_lock(&a6xx_gpu->gmu.lock);
-
opp = dev_pm_opp_find_freq_ceil(&gpu->pdev->dev, &freq);
if (IS_ERR(opp)) {
- ret = PTR_ERR(opp);
- goto err_set_opp;
+ return PTR_ERR(opp);
}
dev_pm_opp_put(opp);
@@ -1969,8 +1964,6 @@ static int a6xx_pm_resume(struct msm_gpu *gpu)
pm_runtime_put(gmu->dev);
dev_pm_opp_set_opp(&gpu->pdev->dev, NULL);
}
-err_set_opp:
- mutex_unlock(&a6xx_gpu->gmu.lock);
if (!ret)
msm_devfreq_resume(gpu);
@@ -1990,9 +1983,7 @@ static int a6xx_gmu_pm_suspend(struct msm_gpu *gpu)
msm_devfreq_suspend(gpu);
- mutex_lock(&a6xx_gpu->gmu.lock);
ret = a6xx_gmu_stop(a6xx_gpu);
- mutex_unlock(&a6xx_gpu->gmu.lock);
if (ret)
return ret;
@@ -2016,8 +2007,6 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
msm_devfreq_suspend(gpu);
- mutex_lock(&a6xx_gpu->gmu.lock);
-
/* Drain the outstanding traffic on memory buses */
a6xx_bus_clear_pending_transactions(adreno_gpu, true);
@@ -2030,8 +2019,6 @@ static int a6xx_pm_suspend(struct msm_gpu *gpu)
dev_pm_opp_set_opp(&gpu->pdev->dev, NULL);
pm_runtime_put_sync(gmu->dev);
- mutex_unlock(&a6xx_gpu->gmu.lock);
-
if (a6xx_gpu->shadow_bo)
for (i = 0; i < gpu->nr_rings; i++)
a6xx_gpu->shadow[i] = 0;
--
2.41.0
next prev parent reply other threads:[~2023-08-22 18:02 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-22 18:01 [PATCH v5 00/11] drm/msm+PM+icc: Make job_run() reclaim-safe Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 01/11] PM / devfreq: Drop unneed locking to appease lockdep Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 02/11] PM / devfreq: Teach lockdep about locking order Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 03/11] PM / QoS: Fix constraints alloc vs reclaim locking Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:47 ` Rafael J. Wysocki
2023-08-22 18:47 ` Rafael J. Wysocki
2023-08-22 19:41 ` Rob Clark
2023-08-22 19:41 ` Rob Clark
2023-08-23 21:01 ` Rob Clark
2023-08-23 21:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 04/11] PM / QoS: Decouple request alloc from dev_pm_qos_mtx Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-09-22 7:14 ` kernel test robot
2023-09-22 7:14 ` kernel test robot
2023-08-22 18:01 ` [PATCH v5 05/11] PM / QoS: Teach lockdep about dev_pm_qos_mtx locking order Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 06/11] interconnect: Fix locking for runpm vs reclaim Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 07/11] interconnect: Teach lockdep about icc_bw_lock order Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` Rob Clark [this message]
2023-08-22 18:01 ` [PATCH v5 08/11] drm/msm/a6xx: Remove GMU lock from runpm paths Rob Clark
2023-08-22 18:01 ` [PATCH v5 09/11] drm/msm: Move runpm enable in submit path Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 10/11] drm/sched: Add (optional) fence signaling annotation Rob Clark
2023-08-22 18:01 ` Rob Clark
2023-08-22 18:01 ` [PATCH v5 11/11] drm/msm: Enable fence signalling annotations Rob Clark
2023-08-22 18:01 ` Rob Clark
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230822180208.95556-9-robdclark@gmail.com \
--to=robdclark@gmail.com \
--cc=airlied@gmail.com \
--cc=andersson@kernel.org \
--cc=daniel@ffwll.ch \
--cc=dianders@chromium.org \
--cc=dmitry.baryshkov@linaro.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=freedreno@lists.freedesktop.org \
--cc=konrad.dybcio@linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=marijn.suijten@somainline.org \
--cc=quic_abhinavk@quicinc.com \
--cc=quic_akhilpo@quicinc.com \
--cc=robdclark@chromium.org \
--cc=sean@poorly.run \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.