A sync-only job is meant to provide a synchronization point on a queue, so we can't return a NULL fence there, we have to add a signal operation to the command stream which executes after all other previously submitted jobs are done. v2: - Fixed a UAF bug - Added R-bs
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -802,6 +802,9 @@ struct drm_panthor_queue_submit { · 801 unmodified lines | |||
| 802 | * Must be 64-bit/8-byte aligned (the size of a CS instruction) | 802 | * Must be 64-bit/8-byte aligned (the size of a CS instruction) |
| 803 | * | 803 | * |
| 804 | * Can be zero if stream_addr is zero too. | 804 | * Can be zero if stream_addr is zero too. |
| 805 | * | ||
| 806 | * When the stream size is zero, the queue submit serves as a | ||
| 807 | * synchronization point. | ||
| 805 | */ | 808 | */ |
| 806 | __u32 stream_size; | 809 | __u32 stream_size; |
| 807 | 810 | ||
| @@ -822,6 +825,8 @@ struct drm_panthor_queue_submit { · 14 unmodified lines | |||
| 822 | * ensure the GPU doesn't get garbage when reading the indirect command | 825 | * ensure the GPU doesn't get garbage when reading the indirect command |
| 823 | * stream buffers. If you want the cache flush to happen | 826 | * stream buffers. If you want the cache flush to happen |
| 824 | * unconditionally, pass a zero here. | 827 | * unconditionally, pass a zero here. |
| 828 | * | ||
| 829 | * Ignored when stream_size is zero. | ||
| 825 | */ | 830 | */ |
| 826 | __u32 latest_flush; | 831 | __u32 latest_flush; |
| 827 | 832 | ||