[PATCH v3 00/12] drm: Introduce DRM client library

Thomas Zimmermann tzimmermann at suse.de
Tue Oct 8 11:59:19 UTC 2024


With the next DRM client coming soon (drm_log) and most of DRM's
fbdev emulation consolidated in a few places, it is time to provide
a single place for the clients.

The base client code and client event handling is now optional. It
still remains in the DRM core, which simplifies module dependencies.
The new module drm_client_lib.ko stores most of the in-kernel client
code. Drivers can opt into client support, but the presence of the
client module depends on the user's kernel configuration. Without
selected clients, no client module will be build.

DRM now forwards suspend and resume events to client helpers instead
of calling fbdev emulation directly. This breaks a cyclic dependency
among the involved modules. It also allows any client to process suspend
and resume events.

v3:
- fix more corner Kconfig cases (kernel test robot)
v2:
- rework of the overall design
- keep base client code in DRM core

Thomas Zimmermann (12):
  drm/i915: Select DRM_CLIENT_SELECTION
  drm/xe: Select DRM_CLIENT_SELECTION
  drm/fbdev-dma: Select FB_DEFERRED_IO
  drm/fbdev: Select fbdev I/O helpers from modules that require them
  drm/fbdev: Store fbdev module parameters in separate file
  drm/client: Move client event handlers to drm_client_event.c
  drm/client: Move suspend/resume into DRM client callbacks
  drm/amdgpu: Suspend and resume internal clients with client helpers
  drm/nouveau: Suspend and resume clients with client helpers
  drm/radeon: Suspend and resume clients with client helpers
  drm/client: Make client support optional
  drm/client: Add client-lib module

 Documentation/gpu/drm-client.rst              |   3 +
 drivers/gpu/drm/Kconfig                       |  41 +++-
 drivers/gpu/drm/Makefile                      |  20 +-
 drivers/gpu/drm/amd/amdgpu/Kconfig            |   1 +
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c    |  22 +-
 drivers/gpu/drm/drm_client.c                  | 121 -----------
 drivers/gpu/drm/drm_client_event.c            | 197 ++++++++++++++++++
 drivers/gpu/drm/drm_client_setup.c            |   3 +
 drivers/gpu/drm/drm_debugfs.c                 |   1 -
 drivers/gpu/drm/drm_drv.c                     |   2 +-
 drivers/gpu/drm/drm_fb_helper.c               |  31 ---
 drivers/gpu/drm/drm_fbdev_client.c            |  30 ++-
 drivers/gpu/drm/drm_file.c                    |   2 +-
 drivers/gpu/drm/drm_internal.h                |  15 ++
 drivers/gpu/drm/drm_kms_helper_common.c       |  38 ++++
 drivers/gpu/drm/drm_modeset_helper.c          |  14 +-
 drivers/gpu/drm/drm_probe_helper.c            |   2 +-
 drivers/gpu/drm/i915/Kconfig                  |   1 +
 .../drm/i915/display/intel_display_driver.c   |   2 +-
 drivers/gpu/drm/nouveau/nouveau_display.c     |   8 +-
 drivers/gpu/drm/nouveau/nouveau_vga.c         |   2 +-
 drivers/gpu/drm/radeon/radeon_device.c        |  19 +-
 drivers/gpu/drm/radeon/radeon_fbdev.c         |   6 -
 drivers/gpu/drm/radeon/radeon_mode.h          |   3 -
 drivers/gpu/drm/xe/Kconfig                    |   1 +
 include/drm/drm_client.h                      |  41 +++-
 include/drm/drm_client_event.h                |  27 +++
 27 files changed, 434 insertions(+), 219 deletions(-)
 create mode 100644 drivers/gpu/drm/drm_client_event.c
 create mode 100644 include/drm/drm_client_event.h

-- 
2.46.0



More information about the dri-devel mailing list