2020-04-17 19:47:13

by Lyude Paul

[permalink] [raw]
Subject: [RFC v3 00/11] drm/nouveau: Introduce CRC support for gf119+

Nvidia released some documentation on how CRC support works on their
GPUs, hooray!

So: this patch series implements said CRC support in nouveau, along with
adding some special debugfs interfaces for some relevant igt-gpu-tools
tests that we'll be sending in just a short bit.

This additionally adds a feature that Ville Syrjälä came up with: vblank
works. Basically, this is just a generic DRM interface that allows for
scheduling high-priority workers that start on a given vblank interrupt.
Note that while we're currently only using this in nouveau, Intel has
plans to use this for i915 as well (hence why they came up with it!).

And finally: in order to implement the last feature, we expose some new
functions in the kernel's kthread_worker infrastructure so that we can
de-complicate our implementation of this.

Anyway-welcome to the future! :)

Major changes since v2:
* Use kthread_worker instead of kthreadd for vblank workers
* Don't check debugfs return values

Lyude Paul (11):
drm/vblank: Register drmm cleanup action once per drm_vblank_crtc
kthread: Introduce __kthread_queue_work()
drm/vblank: Add vblank works
drm/nouveau/kms/nv50-: Unroll error cleanup in nv50_head_create()
drm/nouveau/kms/nv140-: Don't modify depth in state during atomic
commit
drm/nouveau/kms/nv50-: Fix disabling dithering
drm/nouveau/kms/nv50-: s/harm/armh/g
drm/nouveau/kms/nv140-: Track wndw mappings in nv50_head_atom
drm/nouveau/kms/nv50-: Expose nv50_outp_atom in disp.h
drm/nouveau/kms/nv50-: Move hard-coded object handles into header
drm/nouveau/kms/nvd9-: Add CRC support

drivers/gpu/drm/drm_vblank.c | 314 ++++++++-
drivers/gpu/drm/nouveau/dispnv04/crtc.c | 25 +-
drivers/gpu/drm/nouveau/dispnv50/Kbuild | 4 +
drivers/gpu/drm/nouveau/dispnv50/atom.h | 21 +
drivers/gpu/drm/nouveau/dispnv50/core.h | 4 +
drivers/gpu/drm/nouveau/dispnv50/core907d.c | 3 +
drivers/gpu/drm/nouveau/dispnv50/core917d.c | 3 +
drivers/gpu/drm/nouveau/dispnv50/corec37d.c | 3 +
drivers/gpu/drm/nouveau/dispnv50/corec57d.c | 3 +
drivers/gpu/drm/nouveau/dispnv50/crc.c | 715 ++++++++++++++++++++
drivers/gpu/drm/nouveau/dispnv50/crc.h | 125 ++++
drivers/gpu/drm/nouveau/dispnv50/crc907d.c | 139 ++++
drivers/gpu/drm/nouveau/dispnv50/crcc37d.c | 153 +++++
drivers/gpu/drm/nouveau/dispnv50/disp.c | 65 +-
drivers/gpu/drm/nouveau/dispnv50/disp.h | 24 +
drivers/gpu/drm/nouveau/dispnv50/handles.h | 16 +
drivers/gpu/drm/nouveau/dispnv50/head.c | 142 +++-
drivers/gpu/drm/nouveau/dispnv50/head.h | 13 +-
drivers/gpu/drm/nouveau/dispnv50/head907d.c | 14 +-
drivers/gpu/drm/nouveau/dispnv50/headc37d.c | 27 +-
drivers/gpu/drm/nouveau/dispnv50/headc57d.c | 20 +-
drivers/gpu/drm/nouveau/dispnv50/wndw.c | 15 +-
drivers/gpu/drm/nouveau/nouveau_display.c | 60 +-
include/drm/drm_vblank.h | 31 +
include/linux/kthread.h | 3 +
kernel/kthread.c | 34 +-
26 files changed, 1831 insertions(+), 145 deletions(-)
create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crc.c
create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crc.h
create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crc907d.c
create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crcc37d.c
create mode 100644 drivers/gpu/drm/nouveau/dispnv50/handles.h

--
2.25.1


2020-04-20 23:21:29

by Ben Skeggs

[permalink] [raw]
Subject: Re: [RFC v3 00/11] drm/nouveau: Introduce CRC support for gf119+

On Sat, 18 Apr 2020 at 05:42, Lyude Paul <[email protected]> wrote:
>
> Nvidia released some documentation on how CRC support works on their
> GPUs, hooray!
>
> So: this patch series implements said CRC support in nouveau, along with
> adding some special debugfs interfaces for some relevant igt-gpu-tools
> tests that we'll be sending in just a short bit.
>
> This additionally adds a feature that Ville Syrjälä came up with: vblank
> works. Basically, this is just a generic DRM interface that allows for
> scheduling high-priority workers that start on a given vblank interrupt.
> Note that while we're currently only using this in nouveau, Intel has
> plans to use this for i915 as well (hence why they came up with it!).
>
> And finally: in order to implement the last feature, we expose some new
> functions in the kernel's kthread_worker infrastructure so that we can
> de-complicate our implementation of this.
>
> Anyway-welcome to the future! :)
The Nouveau bits look alright to me, I'll take them once the patches
it depends on have been acked.

Ben.

>
> Major changes since v2:
> * Use kthread_worker instead of kthreadd for vblank workers
> * Don't check debugfs return values
>
> Lyude Paul (11):
> drm/vblank: Register drmm cleanup action once per drm_vblank_crtc
> kthread: Introduce __kthread_queue_work()
> drm/vblank: Add vblank works
> drm/nouveau/kms/nv50-: Unroll error cleanup in nv50_head_create()
> drm/nouveau/kms/nv140-: Don't modify depth in state during atomic
> commit
> drm/nouveau/kms/nv50-: Fix disabling dithering
> drm/nouveau/kms/nv50-: s/harm/armh/g
> drm/nouveau/kms/nv140-: Track wndw mappings in nv50_head_atom
> drm/nouveau/kms/nv50-: Expose nv50_outp_atom in disp.h
> drm/nouveau/kms/nv50-: Move hard-coded object handles into header
> drm/nouveau/kms/nvd9-: Add CRC support
>
> drivers/gpu/drm/drm_vblank.c | 314 ++++++++-
> drivers/gpu/drm/nouveau/dispnv04/crtc.c | 25 +-
> drivers/gpu/drm/nouveau/dispnv50/Kbuild | 4 +
> drivers/gpu/drm/nouveau/dispnv50/atom.h | 21 +
> drivers/gpu/drm/nouveau/dispnv50/core.h | 4 +
> drivers/gpu/drm/nouveau/dispnv50/core907d.c | 3 +
> drivers/gpu/drm/nouveau/dispnv50/core917d.c | 3 +
> drivers/gpu/drm/nouveau/dispnv50/corec37d.c | 3 +
> drivers/gpu/drm/nouveau/dispnv50/corec57d.c | 3 +
> drivers/gpu/drm/nouveau/dispnv50/crc.c | 715 ++++++++++++++++++++
> drivers/gpu/drm/nouveau/dispnv50/crc.h | 125 ++++
> drivers/gpu/drm/nouveau/dispnv50/crc907d.c | 139 ++++
> drivers/gpu/drm/nouveau/dispnv50/crcc37d.c | 153 +++++
> drivers/gpu/drm/nouveau/dispnv50/disp.c | 65 +-
> drivers/gpu/drm/nouveau/dispnv50/disp.h | 24 +
> drivers/gpu/drm/nouveau/dispnv50/handles.h | 16 +
> drivers/gpu/drm/nouveau/dispnv50/head.c | 142 +++-
> drivers/gpu/drm/nouveau/dispnv50/head.h | 13 +-
> drivers/gpu/drm/nouveau/dispnv50/head907d.c | 14 +-
> drivers/gpu/drm/nouveau/dispnv50/headc37d.c | 27 +-
> drivers/gpu/drm/nouveau/dispnv50/headc57d.c | 20 +-
> drivers/gpu/drm/nouveau/dispnv50/wndw.c | 15 +-
> drivers/gpu/drm/nouveau/nouveau_display.c | 60 +-
> include/drm/drm_vblank.h | 31 +
> include/linux/kthread.h | 3 +
> kernel/kthread.c | 34 +-
> 26 files changed, 1831 insertions(+), 145 deletions(-)
> create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crc.c
> create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crc.h
> create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crc907d.c
> create mode 100644 drivers/gpu/drm/nouveau/dispnv50/crcc37d.c
> create mode 100644 drivers/gpu/drm/nouveau/dispnv50/handles.h
>
> --
> 2.25.1
>
> _______________________________________________
> dri-devel mailing list
> [email protected]
> https://lists.freedesktop.org/mailman/listinfo/dri-devel