mbox series

[v4,0/7] Introduce debugfs device-centered functions

Message ID 20221219120621.15086-1-mcanal@igalia.com (mailing list archive)
Headers show
Series Introduce debugfs device-centered functions | expand

Message

Maíra Canal Dec. 19, 2022, 12:06 p.m. UTC
This series introduces the initial structure to make DRM debugfs more
device-centered and it is the first step to drop the
drm_driver->debugfs_init hooks in the future [1].

Currently, DRM debugfs files are created using drm_debugfs_create_files()
on request. The first patch of this series makes it possible for DRM devices
for creating debugfs files during drm_dev_register(). For it, it introduces
two new functions that can be used by the drivers: drm_debugfs_add_files()
and drm_debugfs_add_file(). The requests are added to a list and are created
all at once during drm_dev_register(). Moreover, the first patch was based on
this RFC series [2].

The main difference between the RFC series and the current series is the
creation of a new fops structure to accommodate the new structs and, also,
the creation of a new drm_debugfs_open. Moreover, the new series uses
device-managed allocation, returns memory allocation errors, and converts
more drivers to the new structure.

Moreover, since v3, the ability to create debugfs files at late_register hooks was
added. In previous versions, modeset components weren't able to create debugfs
files at late_register hooks as the registration of drm_minor happens before the
registration of the modeset abstractions. So, the third patch fixes this problem
by adding a drm_debugfs_late_register() function. Thanks to Melissa Wen for
catching this problem!

Apart from the third patch, the series looks similiar from its last version.

[1] https://cgit.freedesktop.org/drm/drm/tree/Documentation/gpu/todo.rst#n506
[2] https://lore.kernel.org/dri-devel/20200513114130.28641-2-wambui.karugax@gmail.com/

Best Regards,
- Maíra Canal

---

v1 -> v2: https://lore.kernel.org/dri-devel/20221122190314.185015-1-mcanal@igalia.com/T/#t

- Fix compilation errors in the second patch (kernel test robot).
- Drop debugfs_init hook from vkms (Maíra Canal).
- Remove return values and error handling to debugfs related
functions (Jani Nikula).
- Remove entry from list after the file is created, so that drm_debugfs_init
can be called more than once (Maíra Canal).

v2 -> v3: https://lore.kernel.org/dri-devel/20221123220725.1272155-1-mcanal@igalia.com/

- Rebase on top of drm-misc-next

v3 -> v4: https://lore.kernel.org/dri-devel/20221207132325.140393-1-mcanal@igalia.com/

- Add Maxime's Reviewed-by tags
- Add the ability to create debugfs files at late_register hooks (Melissa Wen).

---

Maíra Canal (7):
  drm/debugfs: create device-centered debugfs functions
  drm: use new debugfs device-centered functions on DRM core files
  drm/debugfs: create debugfs late register functions
  drm/vc4: use new debugfs device-centered functions
  drm/v3d: use new debugfs device-centered functions
  drm/vkms: use new debugfs device-centered functions
  drm/todo: update the debugfs clean up task

 Documentation/gpu/todo.rst            |   9 +--
 drivers/gpu/drm/drm_atomic.c          |  11 ++-
 drivers/gpu/drm/drm_client.c          |  11 ++-
 drivers/gpu/drm/drm_debugfs.c         | 102 +++++++++++++++++++++++---
 drivers/gpu/drm/drm_drv.c             |   3 +
 drivers/gpu/drm/drm_framebuffer.c     |  11 ++-
 drivers/gpu/drm/drm_gem_vram_helper.c |  11 ++-
 drivers/gpu/drm/drm_internal.h        |   5 ++
 drivers/gpu/drm/drm_mode_config.c     |   2 +
 drivers/gpu/drm/v3d/v3d_debugfs.c     |  22 +++---
 drivers/gpu/drm/vc4/vc4_bo.c          |  10 +--
 drivers/gpu/drm/vc4/vc4_crtc.c        |   7 +-
 drivers/gpu/drm/vc4/vc4_debugfs.c     |  36 ++-------
 drivers/gpu/drm/vc4/vc4_dpi.c         |   5 +-
 drivers/gpu/drm/vc4/vc4_drv.c         |   1 -
 drivers/gpu/drm/vc4/vc4_drv.h         |  32 ++------
 drivers/gpu/drm/vc4/vc4_dsi.c         |   6 +-
 drivers/gpu/drm/vc4/vc4_hdmi.c        |  12 +--
 drivers/gpu/drm/vc4/vc4_hvs.c         |  24 ++----
 drivers/gpu/drm/vc4/vc4_v3d.c         |  14 +---
 drivers/gpu/drm/vc4/vc4_vec.c         |   6 +-
 drivers/gpu/drm/vkms/vkms_drv.c       |  17 ++---
 include/drm/drm_debugfs.h             |  41 +++++++++++
 include/drm/drm_device.h              |  15 ++++
 24 files changed, 233 insertions(+), 180 deletions(-)

Comments

Melissa Wen Dec. 19, 2022, 12:49 p.m. UTC | #1
On 12/19, Maíra Canal wrote:
> This series introduces the initial structure to make DRM debugfs more
> device-centered and it is the first step to drop the
> drm_driver->debugfs_init hooks in the future [1].
> 
> Currently, DRM debugfs files are created using drm_debugfs_create_files()
> on request. The first patch of this series makes it possible for DRM devices
> for creating debugfs files during drm_dev_register(). For it, it introduces
> two new functions that can be used by the drivers: drm_debugfs_add_files()
> and drm_debugfs_add_file(). The requests are added to a list and are created
> all at once during drm_dev_register(). Moreover, the first patch was based on
> this RFC series [2].
> 
> The main difference between the RFC series and the current series is the
> creation of a new fops structure to accommodate the new structs and, also,
> the creation of a new drm_debugfs_open. Moreover, the new series uses
> device-managed allocation, returns memory allocation errors, and converts
> more drivers to the new structure.
> 
> Moreover, since v3, the ability to create debugfs files at late_register hooks was
> added. In previous versions, modeset components weren't able to create debugfs
> files at late_register hooks as the registration of drm_minor happens before the
> registration of the modeset abstractions. So, the third patch fixes this problem
> by adding a drm_debugfs_late_register() function. Thanks to Melissa Wen for
> catching this problem!
> 
> Apart from the third patch, the series looks similiar from its last version.
> 
> [1] https://cgit.freedesktop.org/drm/drm/tree/Documentation/gpu/todo.rst#n506
> [2] https://lore.kernel.org/dri-devel/20200513114130.28641-2-wambui.karugax@gmail.com/
> 
> Best Regards,
> - Maíra Canal
> 
> ---
> 
> v1 -> v2: https://lore.kernel.org/dri-devel/20221122190314.185015-1-mcanal@igalia.com/T/#t
> 
> - Fix compilation errors in the second patch (kernel test robot).
> - Drop debugfs_init hook from vkms (Maíra Canal).
> - Remove return values and error handling to debugfs related
> functions (Jani Nikula).
> - Remove entry from list after the file is created, so that drm_debugfs_init
> can be called more than once (Maíra Canal).
> 
> v2 -> v3: https://lore.kernel.org/dri-devel/20221123220725.1272155-1-mcanal@igalia.com/
> 
> - Rebase on top of drm-misc-next
> 
> v3 -> v4: https://lore.kernel.org/dri-devel/20221207132325.140393-1-mcanal@igalia.com/
> 
> - Add Maxime's Reviewed-by tags
> - Add the ability to create debugfs files at late_register hooks (Melissa Wen).

Hi Maíra,

Thanks for addressing all comments.

Maybe Danvet has some inputs for the late_register approach.

Anyway, LGTM and the entire series is:

Reviewed-by: Melissa Wen <mwen@igalia.com>

> 
> ---
> 
> Maíra Canal (7):
>   drm/debugfs: create device-centered debugfs functions
>   drm: use new debugfs device-centered functions on DRM core files
>   drm/debugfs: create debugfs late register functions
>   drm/vc4: use new debugfs device-centered functions
>   drm/v3d: use new debugfs device-centered functions
>   drm/vkms: use new debugfs device-centered functions
>   drm/todo: update the debugfs clean up task
> 
>  Documentation/gpu/todo.rst            |   9 +--
>  drivers/gpu/drm/drm_atomic.c          |  11 ++-
>  drivers/gpu/drm/drm_client.c          |  11 ++-
>  drivers/gpu/drm/drm_debugfs.c         | 102 +++++++++++++++++++++++---
>  drivers/gpu/drm/drm_drv.c             |   3 +
>  drivers/gpu/drm/drm_framebuffer.c     |  11 ++-
>  drivers/gpu/drm/drm_gem_vram_helper.c |  11 ++-
>  drivers/gpu/drm/drm_internal.h        |   5 ++
>  drivers/gpu/drm/drm_mode_config.c     |   2 +
>  drivers/gpu/drm/v3d/v3d_debugfs.c     |  22 +++---
>  drivers/gpu/drm/vc4/vc4_bo.c          |  10 +--
>  drivers/gpu/drm/vc4/vc4_crtc.c        |   7 +-
>  drivers/gpu/drm/vc4/vc4_debugfs.c     |  36 ++-------
>  drivers/gpu/drm/vc4/vc4_dpi.c         |   5 +-
>  drivers/gpu/drm/vc4/vc4_drv.c         |   1 -
>  drivers/gpu/drm/vc4/vc4_drv.h         |  32 ++------
>  drivers/gpu/drm/vc4/vc4_dsi.c         |   6 +-
>  drivers/gpu/drm/vc4/vc4_hdmi.c        |  12 +--
>  drivers/gpu/drm/vc4/vc4_hvs.c         |  24 ++----
>  drivers/gpu/drm/vc4/vc4_v3d.c         |  14 +---
>  drivers/gpu/drm/vc4/vc4_vec.c         |   6 +-
>  drivers/gpu/drm/vkms/vkms_drv.c       |  17 ++---
>  include/drm/drm_debugfs.h             |  41 +++++++++++
>  include/drm/drm_device.h              |  15 ++++
>  24 files changed, 233 insertions(+), 180 deletions(-)
> 
> -- 
> 2.38.1
>
Daniel Vetter Dec. 22, 2022, 5:20 p.m. UTC | #2
On Mon, Dec 19, 2022 at 11:49:47AM -0100, Melissa Wen wrote:
> On 12/19, Maíra Canal wrote:
> > This series introduces the initial structure to make DRM debugfs more
> > device-centered and it is the first step to drop the
> > drm_driver->debugfs_init hooks in the future [1].
> > 
> > Currently, DRM debugfs files are created using drm_debugfs_create_files()
> > on request. The first patch of this series makes it possible for DRM devices
> > for creating debugfs files during drm_dev_register(). For it, it introduces
> > two new functions that can be used by the drivers: drm_debugfs_add_files()
> > and drm_debugfs_add_file(). The requests are added to a list and are created
> > all at once during drm_dev_register(). Moreover, the first patch was based on
> > this RFC series [2].
> > 
> > The main difference between the RFC series and the current series is the
> > creation of a new fops structure to accommodate the new structs and, also,
> > the creation of a new drm_debugfs_open. Moreover, the new series uses
> > device-managed allocation, returns memory allocation errors, and converts
> > more drivers to the new structure.
> > 
> > Moreover, since v3, the ability to create debugfs files at late_register hooks was
> > added. In previous versions, modeset components weren't able to create debugfs
> > files at late_register hooks as the registration of drm_minor happens before the
> > registration of the modeset abstractions. So, the third patch fixes this problem
> > by adding a drm_debugfs_late_register() function. Thanks to Melissa Wen for
> > catching this problem!
> > 
> > Apart from the third patch, the series looks similiar from its last version.
> > 
> > [1] https://cgit.freedesktop.org/drm/drm/tree/Documentation/gpu/todo.rst#n506
> > [2] https://lore.kernel.org/dri-devel/20200513114130.28641-2-wambui.karugax@gmail.com/
> > 
> > Best Regards,
> > - Maíra Canal
> > 
> > ---
> > 
> > v1 -> v2: https://lore.kernel.org/dri-devel/20221122190314.185015-1-mcanal@igalia.com/T/#t
> > 
> > - Fix compilation errors in the second patch (kernel test robot).
> > - Drop debugfs_init hook from vkms (Maíra Canal).
> > - Remove return values and error handling to debugfs related
> > functions (Jani Nikula).
> > - Remove entry from list after the file is created, so that drm_debugfs_init
> > can be called more than once (Maíra Canal).
> > 
> > v2 -> v3: https://lore.kernel.org/dri-devel/20221123220725.1272155-1-mcanal@igalia.com/
> > 
> > - Rebase on top of drm-misc-next
> > 
> > v3 -> v4: https://lore.kernel.org/dri-devel/20221207132325.140393-1-mcanal@igalia.com/
> > 
> > - Add Maxime's Reviewed-by tags
> > - Add the ability to create debugfs files at late_register hooks (Melissa Wen).
> 
> Hi Maíra,
> 
> Thanks for addressing all comments.
> 
> Maybe Danvet has some inputs for the late_register approach.

I think as a stop-gap (really need to get this stuff landed so people can
start to use it) this is ok, but long term I think the right fix is to
roll out the same pre-register infrastructure for connector and crtc too.
That way drivers don't need to split their setup code into init and
register anymore, which is the point of this entire rework.

If you want, you can adjust the todo accordingly, but we do already have
the paragraph about connector/crtc.

But we can do that later on, because this is definitely a great way
forward. Thanks a lot for pushing this forward!

> Anyway, LGTM and the entire series is:
> 
> Reviewed-by: Melissa Wen <mwen@igalia.com>

On the series: Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
> 
> > 
> > ---
> > 
> > Maíra Canal (7):
> >   drm/debugfs: create device-centered debugfs functions
> >   drm: use new debugfs device-centered functions on DRM core files
> >   drm/debugfs: create debugfs late register functions
> >   drm/vc4: use new debugfs device-centered functions
> >   drm/v3d: use new debugfs device-centered functions
> >   drm/vkms: use new debugfs device-centered functions
> >   drm/todo: update the debugfs clean up task
> > 
> >  Documentation/gpu/todo.rst            |   9 +--
> >  drivers/gpu/drm/drm_atomic.c          |  11 ++-
> >  drivers/gpu/drm/drm_client.c          |  11 ++-
> >  drivers/gpu/drm/drm_debugfs.c         | 102 +++++++++++++++++++++++---
> >  drivers/gpu/drm/drm_drv.c             |   3 +
> >  drivers/gpu/drm/drm_framebuffer.c     |  11 ++-
> >  drivers/gpu/drm/drm_gem_vram_helper.c |  11 ++-
> >  drivers/gpu/drm/drm_internal.h        |   5 ++
> >  drivers/gpu/drm/drm_mode_config.c     |   2 +
> >  drivers/gpu/drm/v3d/v3d_debugfs.c     |  22 +++---
> >  drivers/gpu/drm/vc4/vc4_bo.c          |  10 +--
> >  drivers/gpu/drm/vc4/vc4_crtc.c        |   7 +-
> >  drivers/gpu/drm/vc4/vc4_debugfs.c     |  36 ++-------
> >  drivers/gpu/drm/vc4/vc4_dpi.c         |   5 +-
> >  drivers/gpu/drm/vc4/vc4_drv.c         |   1 -
> >  drivers/gpu/drm/vc4/vc4_drv.h         |  32 ++------
> >  drivers/gpu/drm/vc4/vc4_dsi.c         |   6 +-
> >  drivers/gpu/drm/vc4/vc4_hdmi.c        |  12 +--
> >  drivers/gpu/drm/vc4/vc4_hvs.c         |  24 ++----
> >  drivers/gpu/drm/vc4/vc4_v3d.c         |  14 +---
> >  drivers/gpu/drm/vc4/vc4_vec.c         |   6 +-
> >  drivers/gpu/drm/vkms/vkms_drv.c       |  17 ++---
> >  include/drm/drm_debugfs.h             |  41 +++++++++++
> >  include/drm/drm_device.h              |  15 ++++
> >  24 files changed, 233 insertions(+), 180 deletions(-)
> > 
> > -- 
> > 2.38.1
> >
Maíra Canal Dec. 23, 2022, 6:12 p.m. UTC | #3
On 12/22/22 14:20, Daniel Vetter wrote:
> On Mon, Dec 19, 2022 at 11:49:47AM -0100, Melissa Wen wrote:
>> On 12/19, Maíra Canal wrote:
>>> This series introduces the initial structure to make DRM debugfs more
>>> device-centered and it is the first step to drop the
>>> drm_driver->debugfs_init hooks in the future [1].
>>>
>>> Currently, DRM debugfs files are created using drm_debugfs_create_files()
>>> on request. The first patch of this series makes it possible for DRM devices
>>> for creating debugfs files during drm_dev_register(). For it, it introduces
>>> two new functions that can be used by the drivers: drm_debugfs_add_files()
>>> and drm_debugfs_add_file(). The requests are added to a list and are created
>>> all at once during drm_dev_register(). Moreover, the first patch was based on
>>> this RFC series [2].
>>>
>>> The main difference between the RFC series and the current series is the
>>> creation of a new fops structure to accommodate the new structs and, also,
>>> the creation of a new drm_debugfs_open. Moreover, the new series uses
>>> device-managed allocation, returns memory allocation errors, and converts
>>> more drivers to the new structure.
>>>
>>> Moreover, since v3, the ability to create debugfs files at late_register hooks was
>>> added. In previous versions, modeset components weren't able to create debugfs
>>> files at late_register hooks as the registration of drm_minor happens before the
>>> registration of the modeset abstractions. So, the third patch fixes this problem
>>> by adding a drm_debugfs_late_register() function. Thanks to Melissa Wen for
>>> catching this problem!
>>>
>>> Apart from the third patch, the series looks similiar from its last version.
>>>
>>> [1] https://cgit.freedesktop.org/drm/drm/tree/Documentation/gpu/todo.rst#n506
>>> [2] https://lore.kernel.org/dri-devel/20200513114130.28641-2-wambui.karugax@gmail.com/
>>>
>>> Best Regards,
>>> - Maíra Canal
>>>
>>> ---
>>>
>>> v1 -> v2: https://lore.kernel.org/dri-devel/20221122190314.185015-1-mcanal@igalia.com/T/#t
>>>
>>> - Fix compilation errors in the second patch (kernel test robot).
>>> - Drop debugfs_init hook from vkms (Maíra Canal).
>>> - Remove return values and error handling to debugfs related
>>> functions (Jani Nikula).
>>> - Remove entry from list after the file is created, so that drm_debugfs_init
>>> can be called more than once (Maíra Canal).
>>>
>>> v2 -> v3: https://lore.kernel.org/dri-devel/20221123220725.1272155-1-mcanal@igalia.com/
>>>
>>> - Rebase on top of drm-misc-next
>>>
>>> v3 -> v4: https://lore.kernel.org/dri-devel/20221207132325.140393-1-mcanal@igalia.com/
>>>
>>> - Add Maxime's Reviewed-by tags
>>> - Add the ability to create debugfs files at late_register hooks (Melissa Wen).
>>
>> Hi Maíra,
>>
>> Thanks for addressing all comments.
>>
>> Maybe Danvet has some inputs for the late_register approach.
> 
> I think as a stop-gap (really need to get this stuff landed so people can
> start to use it) this is ok, but long term I think the right fix is to
> roll out the same pre-register infrastructure for connector and crtc too.
> That way drivers don't need to split their setup code into init and
> register anymore, which is the point of this entire rework.
> 
> If you want, you can adjust the todo accordingly, but we do already have
> the paragraph about connector/crtc.
> 
> But we can do that later on, because this is definitely a great way
> forward. Thanks a lot for pushing this forward!
> 
>> Anyway, LGTM and the entire series is:
>>
>> Reviewed-by: Melissa Wen <mwen@igalia.com>
> 
> On the series: Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>

Applied this series to drm-misc-next.

Best Regards,
- Maíra Canal

>>
>>>
>>> ---
>>>
>>> Maíra Canal (7):
>>>    drm/debugfs: create device-centered debugfs functions
>>>    drm: use new debugfs device-centered functions on DRM core files
>>>    drm/debugfs: create debugfs late register functions
>>>    drm/vc4: use new debugfs device-centered functions
>>>    drm/v3d: use new debugfs device-centered functions
>>>    drm/vkms: use new debugfs device-centered functions
>>>    drm/todo: update the debugfs clean up task
>>>
>>>   Documentation/gpu/todo.rst            |   9 +--
>>>   drivers/gpu/drm/drm_atomic.c          |  11 ++-
>>>   drivers/gpu/drm/drm_client.c          |  11 ++-
>>>   drivers/gpu/drm/drm_debugfs.c         | 102 +++++++++++++++++++++++---
>>>   drivers/gpu/drm/drm_drv.c             |   3 +
>>>   drivers/gpu/drm/drm_framebuffer.c     |  11 ++-
>>>   drivers/gpu/drm/drm_gem_vram_helper.c |  11 ++-
>>>   drivers/gpu/drm/drm_internal.h        |   5 ++
>>>   drivers/gpu/drm/drm_mode_config.c     |   2 +
>>>   drivers/gpu/drm/v3d/v3d_debugfs.c     |  22 +++---
>>>   drivers/gpu/drm/vc4/vc4_bo.c          |  10 +--
>>>   drivers/gpu/drm/vc4/vc4_crtc.c        |   7 +-
>>>   drivers/gpu/drm/vc4/vc4_debugfs.c     |  36 ++-------
>>>   drivers/gpu/drm/vc4/vc4_dpi.c         |   5 +-
>>>   drivers/gpu/drm/vc4/vc4_drv.c         |   1 -
>>>   drivers/gpu/drm/vc4/vc4_drv.h         |  32 ++------
>>>   drivers/gpu/drm/vc4/vc4_dsi.c         |   6 +-
>>>   drivers/gpu/drm/vc4/vc4_hdmi.c        |  12 +--
>>>   drivers/gpu/drm/vc4/vc4_hvs.c         |  24 ++----
>>>   drivers/gpu/drm/vc4/vc4_v3d.c         |  14 +---
>>>   drivers/gpu/drm/vc4/vc4_vec.c         |   6 +-
>>>   drivers/gpu/drm/vkms/vkms_drv.c       |  17 ++---
>>>   include/drm/drm_debugfs.h             |  41 +++++++++++
>>>   include/drm/drm_device.h              |  15 ++++
>>>   24 files changed, 233 insertions(+), 180 deletions(-)
>>>
>>> -- 
>>> 2.38.1
>>>
> 
> 
>