Re: [PATCH 2/2] drm/scheduler: avoid infinite loop if entity's dependency is a scheduled error fence

2023-05-30 Thread Christian König

Am 17.05.23 um 23:01 schrieb Alex Deucher:

On Wed, May 17, 2023 at 11:02 AM Alex Deucher  wrote:

+ dri-devel for scheduler

On Tue, May 9, 2023 at 6:23 AM ZhenGuo Yin  wrote:

[Why]
drm_sched_entity_add_dependency_cb ignores the scheduled fence and return false.
If entity's dependency is a schedulerd error fence and drm_sched_stop is called

typo: schedulerd -> scheduler


due to TDR, drm_sched_entity_pop_job will wait for the dependency infinitely.

[How]
Do not wait or ignore the scheduled error fence, add drm_sched_entity_wakeup
callback for the dependency with scheduled error fence.

Signed-off-by: ZhenGuo Yin 

The series looks good to me, but it would be good to have Christian
take a look as well.  Series is:
Acked-by: Alex Deucher 


With Alex comments fixes Reviewed-by: Christian König 
.


But Luben should probably push the patches upstream through drm-misc-next.

Christian.




---
  drivers/gpu/drm/scheduler/sched_entity.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/scheduler/sched_entity.c 
b/drivers/gpu/drm/scheduler/sched_entity.c
index d3f4ada6a68e..96e173b0a6c6 100644
--- a/drivers/gpu/drm/scheduler/sched_entity.c
+++ b/drivers/gpu/drm/scheduler/sched_entity.c
@@ -384,7 +384,7 @@ static bool drm_sched_entity_add_dependency_cb(struct 
drm_sched_entity *entity)
 }

 s_fence = to_drm_sched_fence(fence);
-   if (s_fence && s_fence->sched == sched &&
+   if (!fence->error && s_fence && s_fence->sched == sched &&
 !test_bit(DRM_SCHED_FENCE_DONT_PIPELINE, >flags)) {

 /*
--
2.35.1





Re: [PATCH 2/2] drm/scheduler: avoid infinite loop if entity's dependency is a scheduled error fence

2023-05-17 Thread Alex Deucher
On Wed, May 17, 2023 at 11:02 AM Alex Deucher  wrote:
>
> + dri-devel for scheduler
>
> On Tue, May 9, 2023 at 6:23 AM ZhenGuo Yin  wrote:
> >
> > [Why]
> > drm_sched_entity_add_dependency_cb ignores the scheduled fence and return 
> > false.
> > If entity's dependency is a schedulerd error fence and drm_sched_stop is 
> > called

typo: schedulerd -> scheduler

> > due to TDR, drm_sched_entity_pop_job will wait for the dependency 
> > infinitely.
> >
> > [How]
> > Do not wait or ignore the scheduled error fence, add drm_sched_entity_wakeup
> > callback for the dependency with scheduled error fence.
> >
> > Signed-off-by: ZhenGuo Yin 

The series looks good to me, but it would be good to have Christian
take a look as well.  Series is:
Acked-by: Alex Deucher 

> > ---
> >  drivers/gpu/drm/scheduler/sched_entity.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/drivers/gpu/drm/scheduler/sched_entity.c 
> > b/drivers/gpu/drm/scheduler/sched_entity.c
> > index d3f4ada6a68e..96e173b0a6c6 100644
> > --- a/drivers/gpu/drm/scheduler/sched_entity.c
> > +++ b/drivers/gpu/drm/scheduler/sched_entity.c
> > @@ -384,7 +384,7 @@ static bool drm_sched_entity_add_dependency_cb(struct 
> > drm_sched_entity *entity)
> > }
> >
> > s_fence = to_drm_sched_fence(fence);
> > -   if (s_fence && s_fence->sched == sched &&
> > +   if (!fence->error && s_fence && s_fence->sched == sched &&
> > !test_bit(DRM_SCHED_FENCE_DONT_PIPELINE, >flags)) {
> >
> > /*
> > --
> > 2.35.1
> >


Re: [PATCH 2/2] drm/scheduler: avoid infinite loop if entity's dependency is a scheduled error fence

2023-05-17 Thread Alex Deucher
+ dri-devel for scheduler

On Tue, May 9, 2023 at 6:23 AM ZhenGuo Yin  wrote:
>
> [Why]
> drm_sched_entity_add_dependency_cb ignores the scheduled fence and return 
> false.
> If entity's dependency is a schedulerd error fence and drm_sched_stop is 
> called
> due to TDR, drm_sched_entity_pop_job will wait for the dependency infinitely.
>
> [How]
> Do not wait or ignore the scheduled error fence, add drm_sched_entity_wakeup
> callback for the dependency with scheduled error fence.
>
> Signed-off-by: ZhenGuo Yin 
> ---
>  drivers/gpu/drm/scheduler/sched_entity.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/gpu/drm/scheduler/sched_entity.c 
> b/drivers/gpu/drm/scheduler/sched_entity.c
> index d3f4ada6a68e..96e173b0a6c6 100644
> --- a/drivers/gpu/drm/scheduler/sched_entity.c
> +++ b/drivers/gpu/drm/scheduler/sched_entity.c
> @@ -384,7 +384,7 @@ static bool drm_sched_entity_add_dependency_cb(struct 
> drm_sched_entity *entity)
> }
>
> s_fence = to_drm_sched_fence(fence);
> -   if (s_fence && s_fence->sched == sched &&
> +   if (!fence->error && s_fence && s_fence->sched == sched &&
> !test_bit(DRM_SCHED_FENCE_DONT_PIPELINE, >flags)) {
>
> /*
> --
> 2.35.1
>