* [PATCH] drm/print: Include drm_device.h
@ 2025-01-21 21:09 Gustavo Sousa
2025-01-22 11:11 ` Simona Vetter
2025-01-25 21:00 ` Lucas De Marchi
0 siblings, 2 replies; 8+ messages in thread
From: Gustavo Sousa @ 2025-01-21 21:09 UTC (permalink / raw)
To: dri-devel
The header drm_print.h uses members of struct drm_device pointers, as
such, it should include drm_device.h to let the compiler know the full
type definition.
Without such include, users of drm_print.h that don't explicitly need
drm_device.h would bump into build errors and be forced to include the
latter.
Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
---
include/drm/drm_print.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
index f77fe1531cf8..9732f514566d 100644
--- a/include/drm/drm_print.h
+++ b/include/drm/drm_print.h
@@ -32,6 +32,7 @@
#include <linux/dynamic_debug.h>
#include <drm/drm.h>
+#include <drm/drm_device.h>
struct debugfs_regset32;
struct drm_device;
--
2.48.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/print: Include drm_device.h
2025-01-21 21:09 [PATCH] drm/print: Include drm_device.h Gustavo Sousa
@ 2025-01-22 11:11 ` Simona Vetter
2025-01-22 13:02 ` Gustavo Sousa
2025-01-25 21:00 ` Lucas De Marchi
1 sibling, 1 reply; 8+ messages in thread
From: Simona Vetter @ 2025-01-22 11:11 UTC (permalink / raw)
To: Gustavo Sousa; +Cc: dri-devel
On Tue, Jan 21, 2025 at 06:09:25PM -0300, Gustavo Sousa wrote:
> The header drm_print.h uses members of struct drm_device pointers, as
> such, it should include drm_device.h to let the compiler know the full
> type definition.
>
> Without such include, users of drm_print.h that don't explicitly need
> drm_device.h would bump into build errors and be forced to include the
> latter.
>
> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> ---
> include/drm/drm_print.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
> index f77fe1531cf8..9732f514566d 100644
> --- a/include/drm/drm_print.h
> +++ b/include/drm/drm_print.h
> @@ -32,6 +32,7 @@
> #include <linux/dynamic_debug.h>
>
> #include <drm/drm.h>
> +#include <drm/drm_device.h>
We much prefer just a struct device forward decl to avoid monster headers.
Is that not doable here? Worst case I'd convert the drm_info_printer()
static inline to a macro, not sure about the exact rules here if you
never deref a pointer.
-Sima
>
> struct debugfs_regset32;
> struct drm_device;
> --
> 2.48.1
>
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/print: Include drm_device.h
2025-01-22 11:11 ` Simona Vetter
@ 2025-01-22 13:02 ` Gustavo Sousa
2025-01-22 14:02 ` Jani Nikula
0 siblings, 1 reply; 8+ messages in thread
From: Gustavo Sousa @ 2025-01-22 13:02 UTC (permalink / raw)
To: Simona Vetter; +Cc: dri-devel
Quoting Simona Vetter (2025-01-22 08:11:53-03:00)
>On Tue, Jan 21, 2025 at 06:09:25PM -0300, Gustavo Sousa wrote:
>> The header drm_print.h uses members of struct drm_device pointers, as
>> such, it should include drm_device.h to let the compiler know the full
>> type definition.
>>
>> Without such include, users of drm_print.h that don't explicitly need
>> drm_device.h would bump into build errors and be forced to include the
>> latter.
>>
>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>> ---
>> include/drm/drm_print.h | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
>> index f77fe1531cf8..9732f514566d 100644
>> --- a/include/drm/drm_print.h
>> +++ b/include/drm/drm_print.h
>> @@ -32,6 +32,7 @@
>> #include <linux/dynamic_debug.h>
>>
>> #include <drm/drm.h>
>> +#include <drm/drm_device.h>
>
>We much prefer just a struct device forward decl to avoid monster headers.
>Is that not doable here?
I don't think so. This header explicitly uses members of struct
drm_device, so the compiler needs to know the full type definition. As
an example see the definition of drm_WARN(), it uses (drm)->dev.
--
Gustavo Sousa
> Worst case I'd convert the drm_info_printer()
>static inline to a macro, not sure about the exact rules here if you
>never deref a pointer.
>-Sima
>
>>
>> struct debugfs_regset32;
>> struct drm_device;
>> --
>> 2.48.1
>>
>
>--
>Simona Vetter
>Software Engineer, Intel Corporation
>http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/print: Include drm_device.h
2025-01-22 13:02 ` Gustavo Sousa
@ 2025-01-22 14:02 ` Jani Nikula
2025-01-22 14:30 ` Gustavo Sousa
0 siblings, 1 reply; 8+ messages in thread
From: Jani Nikula @ 2025-01-22 14:02 UTC (permalink / raw)
To: Gustavo Sousa, Simona Vetter; +Cc: dri-devel
On Wed, 22 Jan 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> Quoting Simona Vetter (2025-01-22 08:11:53-03:00)
>>On Tue, Jan 21, 2025 at 06:09:25PM -0300, Gustavo Sousa wrote:
>>> The header drm_print.h uses members of struct drm_device pointers, as
>>> such, it should include drm_device.h to let the compiler know the full
>>> type definition.
>>>
>>> Without such include, users of drm_print.h that don't explicitly need
>>> drm_device.h would bump into build errors and be forced to include the
>>> latter.
>>>
>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>> ---
>>> include/drm/drm_print.h | 1 +
>>> 1 file changed, 1 insertion(+)
>>>
>>> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
>>> index f77fe1531cf8..9732f514566d 100644
>>> --- a/include/drm/drm_print.h
>>> +++ b/include/drm/drm_print.h
>>> @@ -32,6 +32,7 @@
>>> #include <linux/dynamic_debug.h>
>>>
>>> #include <drm/drm.h>
>>> +#include <drm/drm_device.h>
>>
>>We much prefer just a struct device forward decl to avoid monster headers.
>>Is that not doable here?
>
> I don't think so. This header explicitly uses members of struct
> drm_device, so the compiler needs to know the full type definition. As
> an example see the definition of drm_WARN(), it uses (drm)->dev.
I grudgingly agree. I don't think there are actual cases where this
happens, but I can imagine you could create one.
>> Worst case I'd convert the drm_info_printer() static inline to a
>> macro, not sure about the exact rules here if you never deref a
>> pointer.
The forward declaration is enough for passing pointers around without
dereferencing. It's the dereferencing in the macros that could fail the
build if the .c using them doesn't include drm_device.h.
To balance things out, I think we could probably drop drm/drm.h if we
inlined one use of DRM_NAME to just "drm".
BR,
Jani.
>>-Sima
>>
>>>
>>> struct debugfs_regset32;
>>> struct drm_device;
>>> --
>>> 2.48.1
>>>
>>
>>--
>>Simona Vetter
>>Software Engineer, Intel Corporation
>>http://blog.ffwll.ch
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/print: Include drm_device.h
2025-01-22 14:02 ` Jani Nikula
@ 2025-01-22 14:30 ` Gustavo Sousa
2025-01-22 14:49 ` Jani Nikula
0 siblings, 1 reply; 8+ messages in thread
From: Gustavo Sousa @ 2025-01-22 14:30 UTC (permalink / raw)
To: Jani Nikula, Simona Vetter; +Cc: dri-devel
Quoting Jani Nikula (2025-01-22 11:02:31-03:00)
>On Wed, 22 Jan 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>> Quoting Simona Vetter (2025-01-22 08:11:53-03:00)
>>>On Tue, Jan 21, 2025 at 06:09:25PM -0300, Gustavo Sousa wrote:
>>>> The header drm_print.h uses members of struct drm_device pointers, as
>>>> such, it should include drm_device.h to let the compiler know the full
>>>> type definition.
>>>>
>>>> Without such include, users of drm_print.h that don't explicitly need
>>>> drm_device.h would bump into build errors and be forced to include the
>>>> latter.
>>>>
>>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>>> ---
>>>> include/drm/drm_print.h | 1 +
>>>> 1 file changed, 1 insertion(+)
>>>>
>>>> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
>>>> index f77fe1531cf8..9732f514566d 100644
>>>> --- a/include/drm/drm_print.h
>>>> +++ b/include/drm/drm_print.h
>>>> @@ -32,6 +32,7 @@
>>>> #include <linux/dynamic_debug.h>
>>>>
>>>> #include <drm/drm.h>
>>>> +#include <drm/drm_device.h>
>>>
>>>We much prefer just a struct device forward decl to avoid monster headers.
>>>Is that not doable here?
>>
>> I don't think so. This header explicitly uses members of struct
>> drm_device, so the compiler needs to know the full type definition. As
>> an example see the definition of drm_WARN(), it uses (drm)->dev.
>
>I grudgingly agree. I don't think there are actual cases where this
>happens, but I can imagine you could create one.
It happened to me, and that motivated me to send this patch.
I had a local patch where I just needed the drm_print.h header, but I
ended up having to include drm_device.h in my .c file.
>
>>> Worst case I'd convert the drm_info_printer() static inline to a
>>> macro, not sure about the exact rules here if you never deref a
>>> pointer.
>
>The forward declaration is enough for passing pointers around without
>dereferencing. It's the dereferencing in the macros that could fail the
>build if the .c using them doesn't include drm_device.h.
>
>To balance things out, I think we could probably drop drm/drm.h if we
>inlined one use of DRM_NAME to just "drm".
>
>
>BR,
>Jani.
>
>
>>>-Sima
>>>
>>>>
>>>> struct debugfs_regset32;
>>>> struct drm_device;
>>>> --
>>>> 2.48.1
>>>>
>>>
>>>--
>>>Simona Vetter
>>>Software Engineer, Intel Corporation
>>>http://blog.ffwll.ch
>
>--
>Jani Nikula, Intel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/print: Include drm_device.h
2025-01-22 14:30 ` Gustavo Sousa
@ 2025-01-22 14:49 ` Jani Nikula
2025-01-23 12:29 ` Simona Vetter
0 siblings, 1 reply; 8+ messages in thread
From: Jani Nikula @ 2025-01-22 14:49 UTC (permalink / raw)
To: Gustavo Sousa, Simona Vetter; +Cc: dri-devel
On Wed, 22 Jan 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> Quoting Jani Nikula (2025-01-22 11:02:31-03:00)
>>On Wed, 22 Jan 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
>>> Quoting Simona Vetter (2025-01-22 08:11:53-03:00)
>>>>On Tue, Jan 21, 2025 at 06:09:25PM -0300, Gustavo Sousa wrote:
>>>>> The header drm_print.h uses members of struct drm_device pointers, as
>>>>> such, it should include drm_device.h to let the compiler know the full
>>>>> type definition.
>>>>>
>>>>> Without such include, users of drm_print.h that don't explicitly need
>>>>> drm_device.h would bump into build errors and be forced to include the
>>>>> latter.
>>>>>
>>>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
>>>>> ---
>>>>> include/drm/drm_print.h | 1 +
>>>>> 1 file changed, 1 insertion(+)
>>>>>
>>>>> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
>>>>> index f77fe1531cf8..9732f514566d 100644
>>>>> --- a/include/drm/drm_print.h
>>>>> +++ b/include/drm/drm_print.h
>>>>> @@ -32,6 +32,7 @@
>>>>> #include <linux/dynamic_debug.h>
>>>>>
>>>>> #include <drm/drm.h>
>>>>> +#include <drm/drm_device.h>
>>>>
>>>>We much prefer just a struct device forward decl to avoid monster headers.
>>>>Is that not doable here?
>>>
>>> I don't think so. This header explicitly uses members of struct
>>> drm_device, so the compiler needs to know the full type definition. As
>>> an example see the definition of drm_WARN(), it uses (drm)->dev.
>>
>>I grudgingly agree. I don't think there are actual cases where this
>>happens, but I can imagine you could create one.
>
> It happened to me, and that motivated me to send this patch.
>
> I had a local patch where I just needed the drm_print.h header, but I
> ended up having to include drm_device.h in my .c file.
Right.
Reviewed-by: Jani Nikula <jani.nikula@intel.com>
>
>>
>>>> Worst case I'd convert the drm_info_printer() static inline to a
>>>> macro, not sure about the exact rules here if you never deref a
>>>> pointer.
>>
>>The forward declaration is enough for passing pointers around without
>>dereferencing. It's the dereferencing in the macros that could fail the
>>build if the .c using them doesn't include drm_device.h.
>>
>>To balance things out, I think we could probably drop drm/drm.h if we
>>inlined one use of DRM_NAME to just "drm".
>>
>>
>>BR,
>>Jani.
>>
>>
>>>>-Sima
>>>>
>>>>>
>>>>> struct debugfs_regset32;
>>>>> struct drm_device;
>>>>> --
>>>>> 2.48.1
>>>>>
>>>>
>>>>--
>>>>Simona Vetter
>>>>Software Engineer, Intel Corporation
>>>>http://blog.ffwll.ch
>>
>>--
>>Jani Nikula, Intel
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/print: Include drm_device.h
2025-01-22 14:49 ` Jani Nikula
@ 2025-01-23 12:29 ` Simona Vetter
0 siblings, 0 replies; 8+ messages in thread
From: Simona Vetter @ 2025-01-23 12:29 UTC (permalink / raw)
To: Jani Nikula; +Cc: Gustavo Sousa, Simona Vetter, dri-devel
On Wed, Jan 22, 2025 at 04:49:21PM +0200, Jani Nikula wrote:
> On Wed, 22 Jan 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> > Quoting Jani Nikula (2025-01-22 11:02:31-03:00)
> >>On Wed, 22 Jan 2025, Gustavo Sousa <gustavo.sousa@intel.com> wrote:
> >>> Quoting Simona Vetter (2025-01-22 08:11:53-03:00)
> >>>>On Tue, Jan 21, 2025 at 06:09:25PM -0300, Gustavo Sousa wrote:
> >>>>> The header drm_print.h uses members of struct drm_device pointers, as
> >>>>> such, it should include drm_device.h to let the compiler know the full
> >>>>> type definition.
> >>>>>
> >>>>> Without such include, users of drm_print.h that don't explicitly need
> >>>>> drm_device.h would bump into build errors and be forced to include the
> >>>>> latter.
> >>>>>
> >>>>> Signed-off-by: Gustavo Sousa <gustavo.sousa@intel.com>
> >>>>> ---
> >>>>> include/drm/drm_print.h | 1 +
> >>>>> 1 file changed, 1 insertion(+)
> >>>>>
> >>>>> diff --git a/include/drm/drm_print.h b/include/drm/drm_print.h
> >>>>> index f77fe1531cf8..9732f514566d 100644
> >>>>> --- a/include/drm/drm_print.h
> >>>>> +++ b/include/drm/drm_print.h
> >>>>> @@ -32,6 +32,7 @@
> >>>>> #include <linux/dynamic_debug.h>
> >>>>>
> >>>>> #include <drm/drm.h>
> >>>>> +#include <drm/drm_device.h>
> >>>>
> >>>>We much prefer just a struct device forward decl to avoid monster headers.
> >>>>Is that not doable here?
> >>>
> >>> I don't think so. This header explicitly uses members of struct
> >>> drm_device, so the compiler needs to know the full type definition. As
> >>> an example see the definition of drm_WARN(), it uses (drm)->dev.
> >>
> >>I grudgingly agree. I don't think there are actual cases where this
> >>happens, but I can imagine you could create one.
> >
> > It happened to me, and that motivated me to send this patch.
> >
> > I had a local patch where I just needed the drm_print.h header, but I
> > ended up having to include drm_device.h in my .c file.
>
> Right.
>
> Reviewed-by: Jani Nikula <jani.nikula@intel.com>
So at least in the past we sometimes intentionally used macros instead of
static inline functions, so that we could avoid pulling in headers from
headers all over the place. That's why I only looked at the one static
inline functions, which treats the pointer as opaque so should work.
I don't mind either way, just bringing this in so that we're consistent
here.
-Sima
>
> >
> >>
> >>>> Worst case I'd convert the drm_info_printer() static inline to a
> >>>> macro, not sure about the exact rules here if you never deref a
> >>>> pointer.
> >>
> >>The forward declaration is enough for passing pointers around without
> >>dereferencing. It's the dereferencing in the macros that could fail the
> >>build if the .c using them doesn't include drm_device.h.
> >>
> >>To balance things out, I think we could probably drop drm/drm.h if we
> >>inlined one use of DRM_NAME to just "drm".
> >>
> >>
> >>BR,
> >>Jani.
> >>
> >>
> >>>>-Sima
> >>>>
> >>>>>
> >>>>> struct debugfs_regset32;
> >>>>> struct drm_device;
> >>>>> --
> >>>>> 2.48.1
> >>>>>
> >>>>
> >>>>--
> >>>>Simona Vetter
> >>>>Software Engineer, Intel Corporation
> >>>>http://blog.ffwll.ch
> >>
> >>--
> >>Jani Nikula, Intel
>
> --
> Jani Nikula, Intel
--
Simona Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH] drm/print: Include drm_device.h
2025-01-21 21:09 [PATCH] drm/print: Include drm_device.h Gustavo Sousa
2025-01-22 11:11 ` Simona Vetter
@ 2025-01-25 21:00 ` Lucas De Marchi
1 sibling, 0 replies; 8+ messages in thread
From: Lucas De Marchi @ 2025-01-25 21:00 UTC (permalink / raw)
To: dri-devel, Gustavo Sousa; +Cc: Jani Nikula, Simona Vetter, Lucas De Marchi
On Tue, 21 Jan 2025 18:09:25 -0300, Gustavo Sousa wrote:
> The header drm_print.h uses members of struct drm_device pointers, as
> such, it should include drm_device.h to let the compiler know the full
> type definition.
>
> Without such include, users of drm_print.h that don't explicitly need
> drm_device.h would bump into build errors and be forced to include the
> latter.
>
> [...]
Applied to drm-misc-fixes, thanks!
[1/1] drm/print: Include drm_device.h
commit: e0f63bc68f59d281e2d06e596f6c1bd9382a15cd
Best regards,
--
Lucas De Marchi <lucas.demarchi@intel.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-01-25 21:00 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-21 21:09 [PATCH] drm/print: Include drm_device.h Gustavo Sousa
2025-01-22 11:11 ` Simona Vetter
2025-01-22 13:02 ` Gustavo Sousa
2025-01-22 14:02 ` Jani Nikula
2025-01-22 14:30 ` Gustavo Sousa
2025-01-22 14:49 ` Jani Nikula
2025-01-23 12:29 ` Simona Vetter
2025-01-25 21:00 ` Lucas De Marchi
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.