Displaying 20 results from an estimated 35 matches for "ttm_eu_reserve_buffers".
2019 Sep 06
4
Xorg indefinitely hangs in kernelspace
...hedule+0x2ba/0x650
> [354073.738342] schedule+0x2d/0x90
> [354073.738343] schedule_preempt_disabled+0xe/0x10
> [354073.738345] __ww_mutex_lock.isra.11+0x3e0/0x750
> [354073.738346] __ww_mutex_lock_slowpath+0x16/0x20
> [354073.738347] ww_mutex_lock+0x34/0x50
> [354073.738352] ttm_eu_reserve_buffers+0x1f9/0x2e0 [ttm]
> [354073.738356] qxl_release_reserve_list+0x67/0x150 [qxl]
> [354073.738358] ? qxl_bo_pin+0xaa/0x190 [qxl]
> [354073.738359] qxl_cursor_atomic_update+0x1b0/0x2e0 [qxl]
> [354073.738367] drm_atomic_helper_commit_planes+0xb9/0x220 [drm_kms_helper]
> [354073.73837...
2019 Sep 06
4
Xorg indefinitely hangs in kernelspace
...hedule+0x2ba/0x650
> [354073.738342] schedule+0x2d/0x90
> [354073.738343] schedule_preempt_disabled+0xe/0x10
> [354073.738345] __ww_mutex_lock.isra.11+0x3e0/0x750
> [354073.738346] __ww_mutex_lock_slowpath+0x16/0x20
> [354073.738347] ww_mutex_lock+0x34/0x50
> [354073.738352] ttm_eu_reserve_buffers+0x1f9/0x2e0 [ttm]
> [354073.738356] qxl_release_reserve_list+0x67/0x150 [qxl]
> [354073.738358] ? qxl_bo_pin+0xaa/0x190 [qxl]
> [354073.738359] qxl_cursor_atomic_update+0x1b0/0x2e0 [qxl]
> [354073.738367] drm_atomic_helper_commit_planes+0xb9/0x220 [drm_kms_helper]
> [354073.73837...
2019 Sep 06
0
[Spice-devel] Xorg indefinitely hangs in kernelspace
...354073.738342] schedule+0x2d/0x90
> > [354073.738343] schedule_preempt_disabled+0xe/0x10
> > [354073.738345] __ww_mutex_lock.isra.11+0x3e0/0x750
> > [354073.738346] __ww_mutex_lock_slowpath+0x16/0x20
> > [354073.738347] ww_mutex_lock+0x34/0x50
> > [354073.738352] ttm_eu_reserve_buffers+0x1f9/0x2e0 [ttm]
> > [354073.738356] qxl_release_reserve_list+0x67/0x150 [qxl]
> > [354073.738358] ? qxl_bo_pin+0xaa/0x190 [qxl]
> > [354073.738359] qxl_cursor_atomic_update+0x1b0/0x2e0 [qxl]
> > [354073.738367] drm_atomic_helper_commit_planes+0xb9/0x220
> > [drm_...
2019 Sep 30
2
[Spice-devel] Xorg indefinitely hangs in kernelspace
...42/0xb0
> [124212.551338] schedule_preempt_disabled+0xe/0x10
> [124212.551340] __ww_mutex_lock.isra.0+0x261/0x7f0
> [124212.551345] ? ttm_bo_init+0x6b/0x100 [ttm]
> [124212.551346] __ww_mutex_lock_slowpath+0x16/0x20
> [124212.551347] ww_mutex_lock+0x38/0x90
> [124212.551352] ttm_eu_reserve_buffers+0x1cc/0x2f0 [ttm]
> [124212.551371] qxl_release_reserve_list+0x6d/0x150 [qxl]
> [124212.551373] ? qxl_bo_pin+0xf4/0x190 [qxl]
> [124212.551375] qxl_cursor_atomic_update+0x1ab/0x2e0 [qxl]
> [124212.551376] ? qxl_bo_pin+0xf4/0x190 [qxl]
> [124212.551384] drm_atomic_helper_commit_p...
2019 Sep 09
0
Xorg indefinitely hangs in kernelspace
Hi,
--verbose please. Do you see the same hang? Does the patch fix it?
> --- a/drivers/gpu/drm/ttm/ttm_execbuf_util.c
> +++ b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
> @@ -97,8 +97,9 @@ int ttm_eu_reserve_buffers(struct ww_acq
> struct list_head *dups, bool del_lru)
[ ... ]
> + if (locked)
> + ttm_eu_backoff_reservation_reverse(list, entry);
Hmm, I think the patch is wrong. As far I know it is the qxl drivers's
job to call ttm_eu_backoff_reservation(). Doing that automatically i...
2019 Sep 09
0
Xorg indefinitely hangs in kernelspace
...hat automatically in
> ttm will most likely break other ttm users.
>
You are right. They are responsible for doing backoff if error happens
while validating buffers afterwards.
--- a/drivers/gpu/drm/ttm/ttm_execbuf_util.c
+++ b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
@@ -111,8 +111,10 @@ int ttm_eu_reserve_buffers(struct ww_acq
list_for_each_entry(entry, list, head) {
struct ttm_buffer_object *bo = entry->bo;
+ bool lockon;
ret = __ttm_bo_reserve(bo, intr, (ticket == NULL), ticket);
+ lockon = !ret;
if (!ret && unlikely(atomic_read(&bo->cpu_writers) > 0)) {
reservati...
2019 Aug 06
2
Xorg indefinitely hangs in kernelspace
...l Trace:
[354073.738340] __schedule+0x2ba/0x650
[354073.738342] schedule+0x2d/0x90
[354073.738343] schedule_preempt_disabled+0xe/0x10
[354073.738345] __ww_mutex_lock.isra.11+0x3e0/0x750
[354073.738346] __ww_mutex_lock_slowpath+0x16/0x20
[354073.738347] ww_mutex_lock+0x34/0x50
[354073.738352] ttm_eu_reserve_buffers+0x1f9/0x2e0 [ttm]
[354073.738356] qxl_release_reserve_list+0x67/0x150 [qxl]
[354073.738358] ? qxl_bo_pin+0xaa/0x190 [qxl]
[354073.738359] qxl_cursor_atomic_update+0x1b0/0x2e0 [qxl]
[354073.738367] drm_atomic_helper_commit_planes+0xb9/0x220 [drm_kms_helper]
[354073.738371] drm_atomic_helper_com...
2019 Aug 06
2
Xorg indefinitely hangs in kernelspace
...l Trace:
[354073.738340] __schedule+0x2ba/0x650
[354073.738342] schedule+0x2d/0x90
[354073.738343] schedule_preempt_disabled+0xe/0x10
[354073.738345] __ww_mutex_lock.isra.11+0x3e0/0x750
[354073.738346] __ww_mutex_lock_slowpath+0x16/0x20
[354073.738347] ww_mutex_lock+0x34/0x50
[354073.738352] ttm_eu_reserve_buffers+0x1f9/0x2e0 [ttm]
[354073.738356] qxl_release_reserve_list+0x67/0x150 [qxl]
[354073.738358] ? qxl_bo_pin+0xaa/0x190 [qxl]
[354073.738359] qxl_cursor_atomic_update+0x1b0/0x2e0 [qxl]
[354073.738367] drm_atomic_helper_commit_planes+0xb9/0x220 [drm_kms_helper]
[354073.738371] drm_atomic_helper_com...
2019 Sep 05
2
Xorg indefinitely hangs in kernelspace
On 05.09.19 10:14, Gerd Hoffmann wrote:
> On Tue, Aug 06, 2019 at 09:00:10PM +0300, Jaak Ristioja wrote:
>> Hello!
>>
>> I'm writing to report a crash in the QXL / DRM code in the Linux kernel.
>> I originally filed the issue on LaunchPad and more details can be found
>> there, although I doubt whether these details are useful.
>
> Any change with kernel
2019 Sep 05
2
Xorg indefinitely hangs in kernelspace
On 05.09.19 10:14, Gerd Hoffmann wrote:
> On Tue, Aug 06, 2019 at 09:00:10PM +0300, Jaak Ristioja wrote:
>> Hello!
>>
>> I'm writing to report a crash in the QXL / DRM code in the Linux kernel.
>> I originally filed the issue on LaunchPad and more details can be found
>> there, although I doubt whether these details are useful.
>
> Any change with kernel
2019 Apr 30
2
Xorg hangs in kernelspace with qxl
...ys/kernel/hung_task_timeout_secs" disables this message.
Xorg D 0 879 790 0x00400004
Call Trace:
__schedule+0x2d0/0x840
schedule+0x2c/0x70
schedule_preempt_disabled+0xe/0x10
__ww_mutex_lock.isra.11+0x3e0/0x750
__ww_mutex_lock_slowpath+0x16/0x20
ww_mutex_lock+0x34/0x50
ttm_eu_reserve_buffers+0x1f9/0x2e0 [ttm]
qxl_release_reserve_list+0x67/0x150 [qxl]
? qxl_bo_pin+0x11d/0x200 [qxl]
qxl_cursor_atomic_update+0x1b0/0x2e0 [qxl]
drm_atomic_helper_commit_planes+0xb9/0x220 [drm_kms_helper]
drm_atomic_helper_commit_tail+0x2b/0x70 [drm_kms_helper]
commit_tail+0x67/0x70 [drm_kms_helper]
dr...
2019 Apr 30
2
Xorg hangs in kernelspace with qxl
...ys/kernel/hung_task_timeout_secs" disables this message.
Xorg D 0 879 790 0x00400004
Call Trace:
__schedule+0x2d0/0x840
schedule+0x2c/0x70
schedule_preempt_disabled+0xe/0x10
__ww_mutex_lock.isra.11+0x3e0/0x750
__ww_mutex_lock_slowpath+0x16/0x20
ww_mutex_lock+0x34/0x50
ttm_eu_reserve_buffers+0x1f9/0x2e0 [ttm]
qxl_release_reserve_list+0x67/0x150 [qxl]
? qxl_bo_pin+0x11d/0x200 [qxl]
qxl_cursor_atomic_update+0x1b0/0x2e0 [qxl]
drm_atomic_helper_commit_planes+0xb9/0x220 [drm_kms_helper]
drm_atomic_helper_commit_tail+0x2b/0x70 [drm_kms_helper]
commit_tail+0x67/0x70 [drm_kms_helper]
dr...
2019 Sep 24
0
Xorg indefinitely hangs in kernelspace
...0
[124212.551337] schedule+0x42/0xb0
[124212.551338] schedule_preempt_disabled+0xe/0x10
[124212.551340] __ww_mutex_lock.isra.0+0x261/0x7f0
[124212.551345] ? ttm_bo_init+0x6b/0x100 [ttm]
[124212.551346] __ww_mutex_lock_slowpath+0x16/0x20
[124212.551347] ww_mutex_lock+0x38/0x90
[124212.551352] ttm_eu_reserve_buffers+0x1cc/0x2f0 [ttm]
[124212.551371] qxl_release_reserve_list+0x6d/0x150 [qxl]
[124212.551373] ? qxl_bo_pin+0xf4/0x190 [qxl]
[124212.551375] qxl_cursor_atomic_update+0x1ab/0x2e0 [qxl]
[124212.551376] ? qxl_bo_pin+0xf4/0x190 [qxl]
[124212.551384] drm_atomic_helper_commit_planes+0xd5/0x220 [drm_kms...
2014 May 14
0
[RFC PATCH v1 02/16] drm/ttm: kill off some members to ttm_validate_buffer
...truct ttm_buffer_object *bo = entry->bo;
+
+ ttm_bo_add_to_lru(bo);
+ __ttm_bo_unreserve(bo);
+ }
+ spin_unlock(&glob->lru_lock);
+
if (ticket)
ww_acquire_fini(ticket);
- spin_unlock(&glob->lru_lock);
}
EXPORT_SYMBOL(ttm_eu_backoff_reservation);
@@ -121,64 +102,55 @@ int ttm_eu_reserve_buffers(struct ww_acquire_ctx *ticket,
if (list_empty(list))
return 0;
- list_for_each_entry(entry, list, head) {
- entry->reserved = false;
- entry->put_count = 0;
- entry->removed = false;
- }
-
entry = list_first_entry(list, struct ttm_validate_buffer, head);
glob = entry->bo-&...
2014 May 14
17
[RFC PATCH v1 00/16] Convert all ttm drivers to use the new reservation interface
...used in its place.
qxl is the first driver to use shared fence slots, but when these patches
are applied it's easy to convert nouveau too. I've done it as part of the
cross-device gpu synchronization patch series.
---
Maarten Lankhorst (16):
drm/ttm: add interruptible parameter to ttm_eu_reserve_buffers
drm/ttm: kill off some members to ttm_validate_buffer
drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prep
drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fence
drm/ttm: call ttm_bo_wait while inside a reservation
drm/ttm: kill fence_lock...
2014 Jul 09
22
[PATCH 00/17] Convert TTM to the new fence interface.
...switch RCU becomes available instead, and
the extra reservations can be dropped again. :-)
I've done at least basic testing on all the drivers I've converted
at some point, but more testing is definitely welcomed!
---
Maarten Lankhorst (17):
drm/ttm: add interruptible parameter to ttm_eu_reserve_buffers
drm/ttm: kill off some members to ttm_validate_buffer
drm/nouveau: add reservation to nouveau_gem_ioctl_cpu_prep
drm/nouveau: require reservations for nouveau_fence_sync and nouveau_bo_fence
drm/ttm: call ttm_bo_wait while inside a reservation
drm/ttm: kill fence_lock...
2014 Jul 31
19
[PATCH 01/19] fence: add debugging lines to fence_is_signaled for the callback
fence_is_signaled callback should support being run in
atomic context, but not in irq context.
Signed-off-by: Maarten Lankhorst <maarten.lankhorst at canonical.com>
---
include/linux/fence.h | 23 +++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git a/include/linux/fence.h b/include/linux/fence.h
index d174585b874b..c1a4519ba2f5 100644
---
2019 Jun 18
0
[PATCH v2 09/12] drm/virtio: drop virtio_gpu_object_list_validate/virtio_gpu_unref_list
..._map->offset);
}
-int virtio_gpu_object_list_validate(struct ww_acquire_ctx *ticket,
- struct list_head *head)
-{
- struct ttm_operation_ctx ctx = { false, false };
- struct ttm_validate_buffer *buf;
- struct ttm_buffer_object *bo;
- struct virtio_gpu_object *qobj;
- int ret;
-
- ret = ttm_eu_reserve_buffers(ticket, head, true, NULL, true);
- if (ret != 0)
- return ret;
-
- list_for_each_entry(buf, head, head) {
- bo = buf->bo;
- qobj = container_of(bo, struct virtio_gpu_object, tbo);
- ret = ttm_bo_validate(bo, &qobj->placement, &ctx);
- if (ret) {
- ttm_eu_backoff_reservation(tic...
2019 Jun 19
0
[PATCH v3 10/12] drm/virtio: drop virtio_gpu_object_list_validate/virtio_gpu_unref_list
..._map->offset);
}
-int virtio_gpu_object_list_validate(struct ww_acquire_ctx *ticket,
- struct list_head *head)
-{
- struct ttm_operation_ctx ctx = { false, false };
- struct ttm_validate_buffer *buf;
- struct ttm_buffer_object *bo;
- struct virtio_gpu_object *qobj;
- int ret;
-
- ret = ttm_eu_reserve_buffers(ticket, head, true, NULL, true);
- if (ret != 0)
- return ret;
-
- list_for_each_entry(buf, head, head) {
- bo = buf->bo;
- qobj = container_of(bo, struct virtio_gpu_object, tbo);
- ret = ttm_bo_validate(bo, &qobj->placement, &ctx);
- if (ret) {
- ttm_eu_backoff_reservation(tic...
2019 Jun 20
0
[PATCH v4 10/12] drm/virtio: drop virtio_gpu_object_list_validate/virtio_gpu_unref_list
..._map->offset);
}
-int virtio_gpu_object_list_validate(struct ww_acquire_ctx *ticket,
- struct list_head *head)
-{
- struct ttm_operation_ctx ctx = { false, false };
- struct ttm_validate_buffer *buf;
- struct ttm_buffer_object *bo;
- struct virtio_gpu_object *qobj;
- int ret;
-
- ret = ttm_eu_reserve_buffers(ticket, head, true, NULL, true);
- if (ret != 0)
- return ret;
-
- list_for_each_entry(buf, head, head) {
- bo = buf->bo;
- qobj = container_of(bo, struct virtio_gpu_object, tbo);
- ret = ttm_bo_validate(bo, &qobj->placement, &ctx);
- if (ret) {
- ttm_eu_backoff_reservation(tic...