mbox series

[v2,0/9] DRM scheduler changes for Xe

Message ID 20230811023137.659037-1-matthew.brost@intel.com (mailing list archive)
Headers show
Series DRM scheduler changes for Xe | expand

Message

Matthew Brost Aug. 11, 2023, 2:31 a.m. UTC
As a prerequisite to merging the new Intel Xe DRM driver [1] [2], we
have been asked to merge our common DRM scheduler patches first.

This a continuation of a RFC [3] with all comments addressed, ready for
a full review, and hopefully in state which can merged in the near
future. More details of this series can found in the cover letter of the
RFC [3].

These changes have been tested with the Xe driver.

v2:
 - Break run job, free job, and process message in own work items
 - This might break other drivers as run job and free job now can run in
   parallel, can fix up if needed

Matt

Matthew Brost (9):
  drm/sched: Convert drm scheduler to use a work queue  rather than
    kthread
  drm/sched: Move schedule policy to scheduler / entity
  drm/sched: Add DRM_SCHED_POLICY_SINGLE_ENTITY scheduling policy
  drm/sched: Split free_job into own work item
  drm/sched: Add generic scheduler message interface
  drm/sched: Add drm_sched_start_timeout_unlocked helper
  drm/sched: Start run wq before TDR in drm_sched_start
  drm/sched: Submit job before starting TDR
  drm/sched: Add helper to set TDR timeout

 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |   3 +-
 drivers/gpu/drm/etnaviv/etnaviv_sched.c    |   5 +-
 drivers/gpu/drm/lima/lima_sched.c          |   5 +-
 drivers/gpu/drm/msm/msm_ringbuffer.c       |   5 +-
 drivers/gpu/drm/nouveau/nouveau_sched.c    |   5 +-
 drivers/gpu/drm/panfrost/panfrost_job.c    |   5 +-
 drivers/gpu/drm/scheduler/sched_entity.c   |  85 ++++-
 drivers/gpu/drm/scheduler/sched_fence.c    |   2 +-
 drivers/gpu/drm/scheduler/sched_main.c     | 408 ++++++++++++++++-----
 drivers/gpu/drm/v3d/v3d_sched.c            |  25 +-
 include/drm/gpu_scheduler.h                |  75 +++-
 11 files changed, 487 insertions(+), 136 deletions(-)

Comments

Danilo Krummrich Aug. 24, 2023, 12:08 a.m. UTC | #1
Hi Matt,

On 8/11/23 04:31, Matthew Brost wrote:
> As a prerequisite to merging the new Intel Xe DRM driver [1] [2], we
> have been asked to merge our common DRM scheduler patches first.
> 
> This a continuation of a RFC [3] with all comments addressed, ready for
> a full review, and hopefully in state which can merged in the near
> future. More details of this series can found in the cover letter of the
> RFC [3].
> 
> These changes have been tested with the Xe driver.

Do you keep a branch with these patches somewhere?

- Danilo

> 
> v2:
>   - Break run job, free job, and process message in own work items
>   - This might break other drivers as run job and free job now can run in
>     parallel, can fix up if needed
> 
> Matt
> 
> Matthew Brost (9):
>    drm/sched: Convert drm scheduler to use a work queue  rather than
>      kthread
>    drm/sched: Move schedule policy to scheduler / entity
>    drm/sched: Add DRM_SCHED_POLICY_SINGLE_ENTITY scheduling policy
>    drm/sched: Split free_job into own work item
>    drm/sched: Add generic scheduler message interface
>    drm/sched: Add drm_sched_start_timeout_unlocked helper
>    drm/sched: Start run wq before TDR in drm_sched_start
>    drm/sched: Submit job before starting TDR
>    drm/sched: Add helper to set TDR timeout
> 
>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |   3 +-
>   drivers/gpu/drm/etnaviv/etnaviv_sched.c    |   5 +-
>   drivers/gpu/drm/lima/lima_sched.c          |   5 +-
>   drivers/gpu/drm/msm/msm_ringbuffer.c       |   5 +-
>   drivers/gpu/drm/nouveau/nouveau_sched.c    |   5 +-
>   drivers/gpu/drm/panfrost/panfrost_job.c    |   5 +-
>   drivers/gpu/drm/scheduler/sched_entity.c   |  85 ++++-
>   drivers/gpu/drm/scheduler/sched_fence.c    |   2 +-
>   drivers/gpu/drm/scheduler/sched_main.c     | 408 ++++++++++++++++-----
>   drivers/gpu/drm/v3d/v3d_sched.c            |  25 +-
>   include/drm/gpu_scheduler.h                |  75 +++-
>   11 files changed, 487 insertions(+), 136 deletions(-)
>
Matthew Brost Aug. 24, 2023, 3:23 a.m. UTC | #2
On Thu, Aug 24, 2023 at 02:08:59AM +0200, Danilo Krummrich wrote:
> Hi Matt,
> 
> On 8/11/23 04:31, Matthew Brost wrote:
> > As a prerequisite to merging the new Intel Xe DRM driver [1] [2], we
> > have been asked to merge our common DRM scheduler patches first.
> > 
> > This a continuation of a RFC [3] with all comments addressed, ready for
> > a full review, and hopefully in state which can merged in the near
> > future. More details of this series can found in the cover letter of the
> > RFC [3].
> > 
> > These changes have been tested with the Xe driver.
> 
> Do you keep a branch with these patches somewhere?
> 

Pushed a branch for you:
https://gitlab.freedesktop.org/mbrost/nouveau-drm-scheduler/-/tree/xe-sched-changes?ref_type=heads

Matt

> - Danilo
> 
> > 
> > v2:
> >   - Break run job, free job, and process message in own work items
> >   - This might break other drivers as run job and free job now can run in
> >     parallel, can fix up if needed
> > 
> > Matt
> > 
> > Matthew Brost (9):
> >    drm/sched: Convert drm scheduler to use a work queue  rather than
> >      kthread
> >    drm/sched: Move schedule policy to scheduler / entity
> >    drm/sched: Add DRM_SCHED_POLICY_SINGLE_ENTITY scheduling policy
> >    drm/sched: Split free_job into own work item
> >    drm/sched: Add generic scheduler message interface
> >    drm/sched: Add drm_sched_start_timeout_unlocked helper
> >    drm/sched: Start run wq before TDR in drm_sched_start
> >    drm/sched: Submit job before starting TDR
> >    drm/sched: Add helper to set TDR timeout
> > 
> >   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |   3 +-
> >   drivers/gpu/drm/etnaviv/etnaviv_sched.c    |   5 +-
> >   drivers/gpu/drm/lima/lima_sched.c          |   5 +-
> >   drivers/gpu/drm/msm/msm_ringbuffer.c       |   5 +-
> >   drivers/gpu/drm/nouveau/nouveau_sched.c    |   5 +-
> >   drivers/gpu/drm/panfrost/panfrost_job.c    |   5 +-
> >   drivers/gpu/drm/scheduler/sched_entity.c   |  85 ++++-
> >   drivers/gpu/drm/scheduler/sched_fence.c    |   2 +-
> >   drivers/gpu/drm/scheduler/sched_main.c     | 408 ++++++++++++++++-----
> >   drivers/gpu/drm/v3d/v3d_sched.c            |  25 +-
> >   include/drm/gpu_scheduler.h                |  75 +++-
> >   11 files changed, 487 insertions(+), 136 deletions(-)
> > 
>
Danilo Krummrich Aug. 24, 2023, 2:51 p.m. UTC | #3
On 8/24/23 05:23, Matthew Brost wrote:
> On Thu, Aug 24, 2023 at 02:08:59AM +0200, Danilo Krummrich wrote:
>> Hi Matt,
>>
>> On 8/11/23 04:31, Matthew Brost wrote:
>>> As a prerequisite to merging the new Intel Xe DRM driver [1] [2], we
>>> have been asked to merge our common DRM scheduler patches first.
>>>
>>> This a continuation of a RFC [3] with all comments addressed, ready for
>>> a full review, and hopefully in state which can merged in the near
>>> future. More details of this series can found in the cover letter of the
>>> RFC [3].
>>>
>>> These changes have been tested with the Xe driver.
>>
>> Do you keep a branch with these patches somewhere?
>>
> 
> Pushed a branch for you:
> https://gitlab.freedesktop.org/mbrost/nouveau-drm-scheduler/-/tree/xe-sched-changes?ref_type=heads

Great - gonna pick this up to work on making use of DRM_SCHED_POLICY_SINGLE_ENTITY in Nouveau.

- Danilo

> 
> Matt
> 
>> - Danilo
>>
>>>
>>> v2:
>>>    - Break run job, free job, and process message in own work items
>>>    - This might break other drivers as run job and free job now can run in
>>>      parallel, can fix up if needed
>>>
>>> Matt
>>>
>>> Matthew Brost (9):
>>>     drm/sched: Convert drm scheduler to use a work queue  rather than
>>>       kthread
>>>     drm/sched: Move schedule policy to scheduler / entity
>>>     drm/sched: Add DRM_SCHED_POLICY_SINGLE_ENTITY scheduling policy
>>>     drm/sched: Split free_job into own work item
>>>     drm/sched: Add generic scheduler message interface
>>>     drm/sched: Add drm_sched_start_timeout_unlocked helper
>>>     drm/sched: Start run wq before TDR in drm_sched_start
>>>     drm/sched: Submit job before starting TDR
>>>     drm/sched: Add helper to set TDR timeout
>>>
>>>    drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |   3 +-
>>>    drivers/gpu/drm/etnaviv/etnaviv_sched.c    |   5 +-
>>>    drivers/gpu/drm/lima/lima_sched.c          |   5 +-
>>>    drivers/gpu/drm/msm/msm_ringbuffer.c       |   5 +-
>>>    drivers/gpu/drm/nouveau/nouveau_sched.c    |   5 +-
>>>    drivers/gpu/drm/panfrost/panfrost_job.c    |   5 +-
>>>    drivers/gpu/drm/scheduler/sched_entity.c   |  85 ++++-
>>>    drivers/gpu/drm/scheduler/sched_fence.c    |   2 +-
>>>    drivers/gpu/drm/scheduler/sched_main.c     | 408 ++++++++++++++++-----
>>>    drivers/gpu/drm/v3d/v3d_sched.c            |  25 +-
>>>    include/drm/gpu_scheduler.h                |  75 +++-
>>>    11 files changed, 487 insertions(+), 136 deletions(-)
>>>
>>
>