diff options
| author | Ingo Molnar <mingo@kernel.org> | 2024-11-13 03:41:59 +0100 | 
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2024-11-13 03:42:14 +0100 | 
| commit | abe949ce0f9be943d8762f91e04b8588255f2f70 (patch) | |
| tree | d479865f75acaa95fefbb20dccc502ca3cbd5d8d /drivers/gpu/drm/panthor/panthor_sched.c | |
| parent | 035c5e2143f3edceeede1e99ff9cf8979c548dd5 (diff) | |
| parent | 2d5404caa8c7bb5c4e0435f94b28834ae5456623 (diff) | |
Merge tag 'v6.12-rc7' into x86/mm, to pick up fixes before applying new patches
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'drivers/gpu/drm/panthor/panthor_sched.c')
| -rw-r--r-- | drivers/gpu/drm/panthor/panthor_sched.c | 20 | 
1 files changed, 16 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/panthor/panthor_sched.c b/drivers/gpu/drm/panthor/panthor_sched.c index aee362abb710..9929e22f4d8d 100644 --- a/drivers/gpu/drm/panthor/panthor_sched.c +++ b/drivers/gpu/drm/panthor/panthor_sched.c @@ -589,10 +589,11 @@ struct panthor_group {  	 * @timedout: True when a timeout occurred on any of the queues owned by  	 * this group.  	 * -	 * Timeouts can be reported by drm_sched or by the FW. In any case, any -	 * timeout situation is unrecoverable, and the group becomes useless. -	 * We simply wait for all references to be dropped so we can release the -	 * group object. +	 * Timeouts can be reported by drm_sched or by the FW. If a reset is required, +	 * and the group can't be suspended, this also leads to a timeout. In any case, +	 * any timeout situation is unrecoverable, and the group becomes useless. We +	 * simply wait for all references to be dropped so we can release the group +	 * object.  	 */  	bool timedout; @@ -2640,6 +2641,12 @@ void panthor_sched_suspend(struct panthor_device *ptdev)  		csgs_upd_ctx_init(&upd_ctx);  		while (slot_mask) {  			u32 csg_id = ffs(slot_mask) - 1; +			struct panthor_csg_slot *csg_slot = &sched->csg_slots[csg_id]; + +			/* We consider group suspension failures as fatal and flag the +			 * group as unusable by setting timedout=true. +			 */ +			csg_slot->group->timedout = true;  			csgs_upd_ctx_queue_reqs(ptdev, &upd_ctx, csg_id,  						CSG_STATE_TERMINATE, @@ -3409,6 +3416,11 @@ panthor_job_create(struct panthor_file *pfile,  		goto err_put_job;  	} +	if (!group_can_run(job->group)) { +		ret = -EINVAL; +		goto err_put_job; +	} +  	if (job->queue_idx >= job->group->queue_count ||  	    !job->group->queues[job->queue_idx]) {  		ret = -EINVAL; | 
