diff mbox

video: ep93xx-fb: add missing include of linux/module.h

Message ID 1313937545.13671.5.camel@phoenix (mailing list archive)
State New, archived
Headers show

Commit Message

axel lin Aug. 21, 2011, 2:39 p.m. UTC
ep93xx-fb.c uses interfaces from linux/module.h,
so it should include that file.  This patch fixes below build errors.

  CC      drivers/video/ep93xx-fb.o
drivers/video/ep93xx-fb.c:120: error: expected ')' before 'int'
drivers/video/ep93xx-fb.c:122: error: expected ')' before string constant
drivers/video/ep93xx-fb.c:409: error: 'THIS_MODULE' undeclared here (not in a function)
drivers/video/ep93xx-fb.c:645: error: expected declaration specifiers or '...' before string constant
drivers/video/ep93xx-fb.c:645: warning: data definition has no type or storage class
drivers/video/ep93xx-fb.c:645: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION'
drivers/video/ep93xx-fb.c:645: warning: function declaration isn't a prototype
drivers/video/ep93xx-fb.c:646: error: expected declaration specifiers or '...' before string constant
drivers/video/ep93xx-fb.c:646: warning: data definition has no type or storage class
drivers/video/ep93xx-fb.c:646: warning: type defaults to 'int' in declaration of 'MODULE_ALIAS'
drivers/video/ep93xx-fb.c:646: warning: function declaration isn't a prototype
drivers/video/ep93xx-fb.c:647: error: expected declaration specifiers or '...' before string constant
drivers/video/ep93xx-fb.c:647: warning: data definition has no type or storage class
drivers/video/ep93xx-fb.c:647: warning: type defaults to 'int' in declaration of 'MODULE_AUTHOR'
drivers/video/ep93xx-fb.c:647: warning: function declaration isn't a prototype
drivers/video/ep93xx-fb.c:649: error: expected declaration specifiers or '...' before string constant
drivers/video/ep93xx-fb.c:649: warning: data definition has no type or storage class
drivers/video/ep93xx-fb.c:649: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE'
drivers/video/ep93xx-fb.c:649: warning: function declaration isn't a prototype
make[2]: *** [drivers/video/ep93xx-fb.o] Error 1
make[1]: *** [drivers/video] Error 2
make: *** [drivers] Error 2

Signed-off-by: Axel Lin <axel.lin@gmail.com>
---
 drivers/video/ep93xx-fb.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

Comments

Ryan Mallon Aug. 21, 2011, 11:41 p.m. UTC | #1
On 22/08/11 00:39, Axel Lin wrote:
> ep93xx-fb.c uses interfaces from linux/module.h,
> so it should include that file.  This patch fixes below build errors.

What actually changed to make these files broken? Did some other header 
previously include module.h for us? How many other drivers are broken?

Anyway, the change is okay.

Acked-by: Ryan Mallon <rmallon@gmail.com>

>    CC      drivers/video/ep93xx-fb.o
> drivers/video/ep93xx-fb.c:120: error: expected ')' before 'int'
> drivers/video/ep93xx-fb.c:122: error: expected ')' before string constant
> drivers/video/ep93xx-fb.c:409: error: 'THIS_MODULE' undeclared here (not in a function)
> drivers/video/ep93xx-fb.c:645: error: expected declaration specifiers or '...' before string constant
> drivers/video/ep93xx-fb.c:645: warning: data definition has no type or storage class
> drivers/video/ep93xx-fb.c:645: warning: type defaults to 'int' in declaration of 'MODULE_DESCRIPTION'
> drivers/video/ep93xx-fb.c:645: warning: function declaration isn't a prototype
> drivers/video/ep93xx-fb.c:646: error: expected declaration specifiers or '...' before string constant
> drivers/video/ep93xx-fb.c:646: warning: data definition has no type or storage class
> drivers/video/ep93xx-fb.c:646: warning: type defaults to 'int' in declaration of 'MODULE_ALIAS'
> drivers/video/ep93xx-fb.c:646: warning: function declaration isn't a prototype
> drivers/video/ep93xx-fb.c:647: error: expected declaration specifiers or '...' before string constant
> drivers/video/ep93xx-fb.c:647: warning: data definition has no type or storage class
> drivers/video/ep93xx-fb.c:647: warning: type defaults to 'int' in declaration of 'MODULE_AUTHOR'
> drivers/video/ep93xx-fb.c:647: warning: function declaration isn't a prototype
> drivers/video/ep93xx-fb.c:649: error: expected declaration specifiers or '...' before string constant
> drivers/video/ep93xx-fb.c:649: warning: data definition has no type or storage class
> drivers/video/ep93xx-fb.c:649: warning: type defaults to 'int' in declaration of 'MODULE_LICENSE'
> drivers/video/ep93xx-fb.c:649: warning: function declaration isn't a prototype
> make[2]: *** [drivers/video/ep93xx-fb.o] Error 1
> make[1]: *** [drivers/video] Error 2
> make: *** [drivers] Error 2
>
> Signed-off-by: Axel Lin<axel.lin@gmail.com>
> ---
>   drivers/video/ep93xx-fb.c |    1 +
>   1 files changed, 1 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/video/ep93xx-fb.c b/drivers/video/ep93xx-fb.c
> index 40e5f17..8133a9d 100644
> --- a/drivers/video/ep93xx-fb.c
> +++ b/drivers/video/ep93xx-fb.c
> @@ -17,6 +17,7 @@
>    *
>    */
>
> +#include<linux/module.h>
>   #include<linux/platform_device.h>
>   #include<linux/dma-mapping.h>
>   #include<linux/slab.h>

--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ryan Mallon Aug. 21, 2011, 11:54 p.m. UTC | #2
On 22/08/11 09:41, Ryan Mallon wrote:
> On 22/08/11 00:39, Axel Lin wrote:
>> ep93xx-fb.c uses interfaces from linux/module.h,
>> so it should include that file.  This patch fixes below build errors.
>
> What actually changed to make these files broken? Did some other 
> header previously include module.h for us? How many other drivers are 
> broken?
>
> Anyway, the change is okay.
>
> Acked-by: Ryan Mallon <rmallon@gmail.com>

Actually, having a second look at this it does not look right.

drivers/video/ep93xx-fb.c includes linux/platform.h (as its first 
include), which includes linux/driver.h, which includes linux/module.h.

Just tested on Linus' latest tree and both this driver and the ep93xx 
backlight driver build fine. What kernel version are you using?

~Ryan


>
>>    CC      drivers/video/ep93xx-fb.o
>> drivers/video/ep93xx-fb.c:120: error: expected ')' before 'int'
>> drivers/video/ep93xx-fb.c:122: error: expected ')' before string 
>> constant
>> drivers/video/ep93xx-fb.c:409: error: 'THIS_MODULE' undeclared here 
>> (not in a function)
>> drivers/video/ep93xx-fb.c:645: error: expected declaration specifiers 
>> or '...' before string constant
>> drivers/video/ep93xx-fb.c:645: warning: data definition has no type 
>> or storage class
>> drivers/video/ep93xx-fb.c:645: warning: type defaults to 'int' in 
>> declaration of 'MODULE_DESCRIPTION'
>> drivers/video/ep93xx-fb.c:645: warning: function declaration isn't a 
>> prototype
>> drivers/video/ep93xx-fb.c:646: error: expected declaration specifiers 
>> or '...' before string constant
>> drivers/video/ep93xx-fb.c:646: warning: data definition has no type 
>> or storage class
>> drivers/video/ep93xx-fb.c:646: warning: type defaults to 'int' in 
>> declaration of 'MODULE_ALIAS'
>> drivers/video/ep93xx-fb.c:646: warning: function declaration isn't a 
>> prototype
>> drivers/video/ep93xx-fb.c:647: error: expected declaration specifiers 
>> or '...' before string constant
>> drivers/video/ep93xx-fb.c:647: warning: data definition has no type 
>> or storage class
>> drivers/video/ep93xx-fb.c:647: warning: type defaults to 'int' in 
>> declaration of 'MODULE_AUTHOR'
>> drivers/video/ep93xx-fb.c:647: warning: function declaration isn't a 
>> prototype
>> drivers/video/ep93xx-fb.c:649: error: expected declaration specifiers 
>> or '...' before string constant
>> drivers/video/ep93xx-fb.c:649: warning: data definition has no type 
>> or storage class
>> drivers/video/ep93xx-fb.c:649: warning: type defaults to 'int' in 
>> declaration of 'MODULE_LICENSE'
>> drivers/video/ep93xx-fb.c:649: warning: function declaration isn't a 
>> prototype
>> make[2]: *** [drivers/video/ep93xx-fb.o] Error 1
>> make[1]: *** [drivers/video] Error 2
>> make: *** [drivers] Error 2
>>
>> Signed-off-by: Axel Lin<axel.lin@gmail.com>
>> ---
>>   drivers/video/ep93xx-fb.c |    1 +
>>   1 files changed, 1 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/video/ep93xx-fb.c b/drivers/video/ep93xx-fb.c
>> index 40e5f17..8133a9d 100644
>> --- a/drivers/video/ep93xx-fb.c
>> +++ b/drivers/video/ep93xx-fb.c
>> @@ -17,6 +17,7 @@
>>    *
>>    */
>>
>> +#include<linux/module.h>
>>   #include<linux/platform_device.h>
>>   #include<linux/dma-mapping.h>
>>   #include<linux/slab.h>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
axel lin Aug. 22, 2011, 12:06 a.m. UTC | #3
2011/8/22 Ryan Mallon <rmallon@gmail.com>:
> On 22/08/11 09:41, Ryan Mallon wrote:
>>
>> On 22/08/11 00:39, Axel Lin wrote:
>>>
>>> ep93xx-fb.c uses interfaces from linux/module.h,
>>> so it should include that file.  This patch fixes below build errors.
>>
>> What actually changed to make these files broken? Did some other header
>> previously include module.h for us? How many other drivers are broken?
>>
>> Anyway, the change is okay.
>>
>> Acked-by: Ryan Mallon <rmallon@gmail.com>
>
> Actually, having a second look at this it does not look right.
>
> drivers/video/ep93xx-fb.c includes linux/platform.h (as its first include),
> which includes linux/driver.h, which includes linux/module.h.
>
> Just tested on Linus' latest tree and both this driver and the ep93xx
> backlight driver build fine. What kernel version are you using?
>
> ~Ryan

hi Ryan,

The patch is against linux-next tree.
I got build error for ep93xx-fb.c and ep93xx_bl.c on linux-next tree.
( next-20110819 )

Regards,
Axel

>
>
>>
>>>   CC      drivers/video/ep93xx-fb.o
>>> drivers/video/ep93xx-fb.c:120: error: expected ')' before 'int'
>>> drivers/video/ep93xx-fb.c:122: error: expected ')' before string constant
>>> drivers/video/ep93xx-fb.c:409: error: 'THIS_MODULE' undeclared here (not
>>> in a function)
>>> drivers/video/ep93xx-fb.c:645: error: expected declaration specifiers or
>>> '...' before string constant
>>> drivers/video/ep93xx-fb.c:645: warning: data definition has no type or
>>> storage class
>>> drivers/video/ep93xx-fb.c:645: warning: type defaults to 'int' in
>>> declaration of 'MODULE_DESCRIPTION'
>>> drivers/video/ep93xx-fb.c:645: warning: function declaration isn't a
>>> prototype
>>> drivers/video/ep93xx-fb.c:646: error: expected declaration specifiers or
>>> '...' before string constant
>>> drivers/video/ep93xx-fb.c:646: warning: data definition has no type or
>>> storage class
>>> drivers/video/ep93xx-fb.c:646: warning: type defaults to 'int' in
>>> declaration of 'MODULE_ALIAS'
>>> drivers/video/ep93xx-fb.c:646: warning: function declaration isn't a
>>> prototype
>>> drivers/video/ep93xx-fb.c:647: error: expected declaration specifiers or
>>> '...' before string constant
>>> drivers/video/ep93xx-fb.c:647: warning: data definition has no type or
>>> storage class
>>> drivers/video/ep93xx-fb.c:647: warning: type defaults to 'int' in
>>> declaration of 'MODULE_AUTHOR'
>>> drivers/video/ep93xx-fb.c:647: warning: function declaration isn't a
>>> prototype
>>> drivers/video/ep93xx-fb.c:649: error: expected declaration specifiers or
>>> '...' before string constant
>>> drivers/video/ep93xx-fb.c:649: warning: data definition has no type or
>>> storage class
>>> drivers/video/ep93xx-fb.c:649: warning: type defaults to 'int' in
>>> declaration of 'MODULE_LICENSE'
>>> drivers/video/ep93xx-fb.c:649: warning: function declaration isn't a
>>> prototype
>>> make[2]: *** [drivers/video/ep93xx-fb.o] Error 1
>>> make[1]: *** [drivers/video] Error 2
>>> make: *** [drivers] Error 2
>>>
>>> Signed-off-by: Axel Lin<axel.lin@gmail.com>
>>> ---
>>>  drivers/video/ep93xx-fb.c |    1 +
>>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/drivers/video/ep93xx-fb.c b/drivers/video/ep93xx-fb.c
>>> index 40e5f17..8133a9d 100644
>>> --- a/drivers/video/ep93xx-fb.c
>>> +++ b/drivers/video/ep93xx-fb.c
>>> @@ -17,6 +17,7 @@
>>>   *
>>>   */
>>>
>>> +#include<linux/module.h>
>>>  #include<linux/platform_device.h>
>>>  #include<linux/dma-mapping.h>
>>>  #include<linux/slab.h>
>>
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ryan Mallon Aug. 22, 2011, 12:31 a.m. UTC | #4
On 22/08/11 10:06, Axel Lin wrote:
> 2011/8/22 Ryan Mallon<rmallon@gmail.com>:
>> On 22/08/11 09:41, Ryan Mallon wrote:
>>> On 22/08/11 00:39, Axel Lin wrote:
>>>> ep93xx-fb.c uses interfaces from linux/module.h,
>>>> so it should include that file.  This patch fixes below build errors.
>>> What actually changed to make these files broken? Did some other header
>>> previously include module.h for us? How many other drivers are broken?
>>>
>>> Anyway, the change is okay.
>>>
>>> Acked-by: Ryan Mallon<rmallon@gmail.com>
>> Actually, having a second look at this it does not look right.
>>
>> drivers/video/ep93xx-fb.c includes linux/platform.h (as its first include),
>> which includes linux/driver.h, which includes linux/module.h.
>>
>> Just tested on Linus' latest tree and both this driver and the ep93xx
>> backlight driver build fine. What kernel version are you using?
>>
>> ~Ryan
> hi Ryan,
>
> The patch is against linux-next tree.
> I got build error for ep93xx-fb.c and ep93xx_bl.c on linux-next tree.
> ( next-20110819 )

Ok, I see now. The change which caused the breakage is fdb697c: 
"include: replace linux/module.h with "struct module" wherever 
possible". How many other drivers got broken now that device.h does not 
include module.h?

~Ryan


>>>>    CC      drivers/video/ep93xx-fb.o
>>>> drivers/video/ep93xx-fb.c:120: error: expected ')' before 'int'
>>>> drivers/video/ep93xx-fb.c:122: error: expected ')' before string constant
>>>> drivers/video/ep93xx-fb.c:409: error: 'THIS_MODULE' undeclared here (not
>>>> in a function)
>>>> drivers/video/ep93xx-fb.c:645: error: expected declaration specifiers or
>>>> '...' before string constant
>>>> drivers/video/ep93xx-fb.c:645: warning: data definition has no type or
>>>> storage class
>>>> drivers/video/ep93xx-fb.c:645: warning: type defaults to 'int' in
>>>> declaration of 'MODULE_DESCRIPTION'
>>>> drivers/video/ep93xx-fb.c:645: warning: function declaration isn't a
>>>> prototype
>>>> drivers/video/ep93xx-fb.c:646: error: expected declaration specifiers or
>>>> '...' before string constant
>>>> drivers/video/ep93xx-fb.c:646: warning: data definition has no type or
>>>> storage class
>>>> drivers/video/ep93xx-fb.c:646: warning: type defaults to 'int' in
>>>> declaration of 'MODULE_ALIAS'
>>>> drivers/video/ep93xx-fb.c:646: warning: function declaration isn't a
>>>> prototype
>>>> drivers/video/ep93xx-fb.c:647: error: expected declaration specifiers or
>>>> '...' before string constant
>>>> drivers/video/ep93xx-fb.c:647: warning: data definition has no type or
>>>> storage class
>>>> drivers/video/ep93xx-fb.c:647: warning: type defaults to 'int' in
>>>> declaration of 'MODULE_AUTHOR'
>>>> drivers/video/ep93xx-fb.c:647: warning: function declaration isn't a
>>>> prototype
>>>> drivers/video/ep93xx-fb.c:649: error: expected declaration specifiers or
>>>> '...' before string constant
>>>> drivers/video/ep93xx-fb.c:649: warning: data definition has no type or
>>>> storage class
>>>> drivers/video/ep93xx-fb.c:649: warning: type defaults to 'int' in
>>>> declaration of 'MODULE_LICENSE'
>>>> drivers/video/ep93xx-fb.c:649: warning: function declaration isn't a
>>>> prototype
>>>> make[2]: *** [drivers/video/ep93xx-fb.o] Error 1
>>>> make[1]: *** [drivers/video] Error 2
>>>> make: *** [drivers] Error 2
>>>>
>>>> Signed-off-by: Axel Lin<axel.lin@gmail.com>
>>>> ---
>>>>   drivers/video/ep93xx-fb.c |    1 +
>>>>   1 files changed, 1 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/drivers/video/ep93xx-fb.c b/drivers/video/ep93xx-fb.c
>>>> index 40e5f17..8133a9d 100644
>>>> --- a/drivers/video/ep93xx-fb.c
>>>> +++ b/drivers/video/ep93xx-fb.c
>>>> @@ -17,6 +17,7 @@
>>>>    *
>>>>    */
>>>>
>>>> +#include<linux/module.h>
>>>>   #include<linux/platform_device.h>
>>>>   #include<linux/dma-mapping.h>
>>>>   #include<linux/slab.h>
>>

--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hartley Sweeten Aug. 22, 2011, 4:40 p.m. UTC | #5
On Sunday, August 21, 2011 5:31 PM, Ryan Mallon wrote:
> On 22/08/11 10:06, Axel Lin wrote:
>> 2011/8/22 Ryan Mallon<rmallon@gmail.com>:
>>> On 22/08/11 09:41, Ryan Mallon wrote:
>>>> On 22/08/11 00:39, Axel Lin wrote:
>>>>> ep93xx-fb.c uses interfaces from linux/module.h,
>>>>> so it should include that file.  This patch fixes below build errors.
>>>> What actually changed to make these files broken? Did some other header
>>>> previously include module.h for us? How many other drivers are broken?
>>>>
>>>> Anyway, the change is okay.
>>>>
>>>> Acked-by: Ryan Mallon<rmallon@gmail.com>
>>> Actually, having a second look at this it does not look right.
>>>
>>> drivers/video/ep93xx-fb.c includes linux/platform.h (as its first include),
>>> which includes linux/driver.h, which includes linux/module.h.
>>>
>>> Just tested on Linus' latest tree and both this driver and the ep93xx
>>> backlight driver build fine. What kernel version are you using?
>>>
>>> ~Ryan
>> hi Ryan,
>>
>> The patch is against linux-next tree.
>> I got build error for ep93xx-fb.c and ep93xx_bl.c on linux-next tree.
>> ( next-20110819 )
>
> Ok, I see now. The change which caused the breakage is fdb697c: 
> "include: replace linux/module.h with "struct module" wherever 
> possible". How many other drivers got broken now that device.h does not 
> include module.h?

Probably a lot...  Which is one of the reasons linux-next exists.. . ;-)

Actually, Paul Gortmaker caused this breakage with the commit.  He should
take a deeper look and see what it broke.  From his commit:

    Most of the implicit dependencies on module.h being present by
    these headers pulling it in have been now weeded out, so we can
    finally make this change with hopefully minimal breakage.

Regards,
Hartley--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ryan Mallon Aug. 22, 2011, 11:48 p.m. UTC | #6
On 23/08/11 02:40, H Hartley Sweeten wrote:
> On Sunday, August 21, 2011 5:31 PM, Ryan Mallon wrote:
>> On 22/08/11 10:06, Axel Lin wrote:
>>> 2011/8/22 Ryan Mallon<rmallon@gmail.com>:
>>>> On 22/08/11 09:41, Ryan Mallon wrote:
>>>>> On 22/08/11 00:39, Axel Lin wrote:
>>>>>> ep93xx-fb.c uses interfaces from linux/module.h,
>>>>>> so it should include that file.  This patch fixes below build errors.
>>>>> What actually changed to make these files broken? Did some other header
>>>>> previously include module.h for us? How many other drivers are broken?
>>>>>
>>>>> Anyway, the change is okay.
>>>>>
>>>>> Acked-by: Ryan Mallon<rmallon@gmail.com>
>>>> Actually, having a second look at this it does not look right.
>>>>
>>>> drivers/video/ep93xx-fb.c includes linux/platform.h (as its first include),
>>>> which includes linux/driver.h, which includes linux/module.h.
>>>>
>>>> Just tested on Linus' latest tree and both this driver and the ep93xx
>>>> backlight driver build fine. What kernel version are you using?
>>>>
>>>> ~Ryan
>>> hi Ryan,
>>>
>>> The patch is against linux-next tree.
>>> I got build error for ep93xx-fb.c and ep93xx_bl.c on linux-next tree.
>>> ( next-20110819 )
>> Ok, I see now. The change which caused the breakage is fdb697c:
>> "include: replace linux/module.h with "struct module" wherever
>> possible". How many other drivers got broken now that device.h does not
>> include module.h?
> Probably a lot...  Which is one of the reasons linux-next exists.. . ;-)

Does anybody know how we can quickly determine which drivers are broken 
short of doing an allyesconfig? I tried to do some quick tricks by 
passing files which contain THIS_MODULE/MODULE_* through cpp, but I get 
loads of errors in headers files because I'm missing some config 
includes. Is there an easy way to get the kbuild arguments for the 
current .config so I can pass them to cpp?

> Actually, Paul Gortmaker caused this breakage with the commit.  He should
> take a deeper look and see what it broke.  From his commit:
>
>      Most of the implicit dependencies on module.h being present by
>      these headers pulling it in have been now weeded out, so we can
>      finally make this change with hopefully minimal breakage.

Quick glance:

ryanm@kiwi:linux-2.6$ grep -lR "^MODULE_" drivers/  | xargs grep -L 
"linux/module.h\|linux/moduleloader.h\|linux/miscdevice.h\|linux/regmap.h\|linux/irq.h"  
| wc -l
579

ryanm@kiwi:linux-2.6$ grep -lR "THIS_MODULE" drivers/ | xargs grep -L 
"linux/module.h\|linux/moduleloader.h\|linux/miscdevice.h\|linux/regmap.h\|linux/irq.h\|linux/export.h\|acpi/platform/aclinux.h\|xen/xenbus.h"   
| wc -l
399

Not sure how many of those are really broken though since there may be a 
few other ways to include module.h/export.h. I would also think there 
would be a lot more build failure reports if all of those were broken :-).

~Ryan



--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Paul Gortmaker Aug. 24, 2011, 1:39 p.m. UTC | #7
On 11-08-22 07:48 PM, Ryan Mallon wrote:
> On 23/08/11 02:40, H Hartley Sweeten wrote:
>> On Sunday, August 21, 2011 5:31 PM, Ryan Mallon wrote:
>>> On 22/08/11 10:06, Axel Lin wrote:
>>>> 2011/8/22 Ryan Mallon<rmallon@gmail.com>:
>>>>> On 22/08/11 09:41, Ryan Mallon wrote:
>>>>>> On 22/08/11 00:39, Axel Lin wrote:
>>>>>>> ep93xx-fb.c uses interfaces from linux/module.h,
>>>>>>> so it should include that file.  This patch fixes below build errors.
>>>>>> What actually changed to make these files broken? Did some other header
>>>>>> previously include module.h for us? How many other drivers are broken?
>>>>>>
>>>>>> Anyway, the change is okay.
>>>>>>
>>>>>> Acked-by: Ryan Mallon<rmallon@gmail.com>
>>>>> Actually, having a second look at this it does not look right.
>>>>>
>>>>> drivers/video/ep93xx-fb.c includes linux/platform.h (as its first include),
>>>>> which includes linux/driver.h, which includes linux/module.h.

For the record, this is exactly what we are trying to fix -- relying on
implicit and non-obvious include chaining.  If you are writing a modular
driver, you should include module.h explicitly.

>>>>>
>>>>> Just tested on Linus' latest tree and both this driver and the ep93xx
>>>>> backlight driver build fine. What kernel version are you using?
>>>>>
>>>>> ~Ryan
>>>> hi Ryan,
>>>>
>>>> The patch is against linux-next tree.
>>>> I got build error for ep93xx-fb.c and ep93xx_bl.c on linux-next tree.
>>>> ( next-20110819 )
>>> Ok, I see now. The change which caused the breakage is fdb697c:
>>> "include: replace linux/module.h with "struct module" wherever
>>> possible". How many other drivers got broken now that device.h does not
>>> include module.h?
>> Probably a lot...  Which is one of the reasons linux-next exists.. . ;-)
> 
> Does anybody know how we can quickly determine which drivers are broken 
> short of doing an allyesconfig? I tried to do some quick tricks by 
> passing files which contain THIS_MODULE/MODULE_* through cpp, but I get 
> loads of errors in headers files because I'm missing some config 
> includes. Is there an easy way to get the kbuild arguments for the 
> current .config so I can pass them to cpp?
> 
>> Actually, Paul Gortmaker caused this breakage with the commit.  He should
>> take a deeper look and see what it broke.  From his commit:
>>
>>      Most of the implicit dependencies on module.h being present by
>>      these headers pulling it in have been now weeded out, so we can
>>      finally make this change with hopefully minimal breakage.
> 
> Quick glance:
> 
> ryanm@kiwi:linux-2.6$ grep -lR "^MODULE_" drivers/  | xargs grep -L 
> "linux/module.h\|linux/moduleloader.h\|linux/miscdevice.h\|linux/regmap.h\|linux/irq.h"  
> | wc -l
> 579

This can be misleading because subsystems may have a common header that
includes module.h, and then all the C files include that common header.
I think the e1000 network driver is one example.

> 
> ryanm@kiwi:linux-2.6$ grep -lR "THIS_MODULE" drivers/ | xargs grep -L 
> "linux/module.h\|linux/moduleloader.h\|linux/miscdevice.h\|linux/regmap.h\|linux/irq.h\|linux/export.h\|acpi/platform/aclinux.h\|xen/xenbus.h"   
> | wc -l
> 399
> 
> Not sure how many of those are really broken though since there may be a 
> few other ways to include module.h/export.h. I would also think there 
> would be a lot more build failure reports if all of those were broken :-).

Exactly.  I've done allyesconfig, allnoconfig, allmodconfig builds for all
the common arch and even half a dozen or so uncommon arch.  Plus in the case
of things like arm and powerpc with board specific config files that are in
arch/*/configs, I've built all those.  So a couple of odd cases like this
which don't get build coverage through any of the above was expected, and
hence the value of being in linux-next for a while.

Thanks all for the report, I'll make sure these files get the proper
include header they need.

Paul.

> 
> ~Ryan
> 
> 
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-fbdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/video/ep93xx-fb.c b/drivers/video/ep93xx-fb.c
index 40e5f17..8133a9d 100644
--- a/drivers/video/ep93xx-fb.c
+++ b/drivers/video/ep93xx-fb.c
@@ -17,6 +17,7 @@ 
  *
  */
 
+#include <linux/module.h>
 #include <linux/platform_device.h>
 #include <linux/dma-mapping.h>
 #include <linux/slab.h>