2006-12-15 23:58:32

by Pavel Machek

[permalink] [raw]
Subject: Nasty warnings on arm (+ one compile problem -- INIT_WORK related)

Hi!

I get nasty warning for each file compiled:

CC drivers/video/sa1100fb.o
In file included from include/asm/bitops.h:23,
from include/linux/bitops.h:9,
from include/linux/thread_info.h:20,
from include/linux/preempt.h:9,
from include/linux/spinlock.h:49,
from include/linux/module.h:9,
from drivers/video/sa1100fb.c:163:
include/asm/system.h: In function `adjust_cr':
include/asm/system.h:185: warning: implicit declaration of function
`local_irq_save'
include/asm/system.h:192: warning: implicit declaration of function
`local_irq_restore'
include/asm/system.h:179: warning: unused variable `cr'

Plus compile error. It should be some search&replace I should do, but
which one?

drivers/video/sa1100fb.c:1447:49: macro "INIT_WORK" passed 3
arguments, but takes just 2
drivers/video/sa1100fb.c: In function `sa1100fb_init_fbinfo':
drivers/video/sa1100fb.c:1447: error: `INIT_WORK' undeclared (first
use in this function)
drivers/video/sa1100fb.c:1447: error: (Each undeclared identifier is
reported only once
drivers/video/sa1100fb.c:1447: error: for each function it appears
in.)
drivers/video/sa1100fb.c: At top level:
drivers/video/sa1100fb.c:1204: warning: `sa1100fb_task' defined but
not used
make[2]: *** [drivers/video/sa1100fb.o] Error 1
make[1]: *** [drivers/video] Error 2
make: *** [drivers] Error 2

INIT_WORK(&fbi->task, sa1100fb_task, fbi);

...

/*
* Our LCD controller task (which is called when we blank or unblank)
* via keventd.
*/
static void sa1100fb_task(void *dummy)
{
struct sa1100fb_info *fbi = dummy;
u_int state = xchg(&fbi->task_state, -1);

set_ctrlr_state(fbi, state);
}

(Or will I need to play with container_of or something? I guess I did
not pay attetion to workqueue stuff).
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html


2006-12-16 01:07:27

by Al Viro

[permalink] [raw]
Subject: Re: Nasty warnings on arm (+ one compile problem -- INIT_WORK related)

On Sat, Dec 16, 2006 at 12:58:18AM +0100, Pavel Machek wrote:
> Hi!
>
> I get nasty warning for each file compiled:
>
> CC drivers/video/sa1100fb.o
> In file included from include/asm/bitops.h:23,
> from include/linux/bitops.h:9,
> from include/linux/thread_info.h:20,
> from include/linux/preempt.h:9,
> from include/linux/spinlock.h:49,
> from include/linux/module.h:9,
> from drivers/video/sa1100fb.c:163:
> include/asm/system.h: In function `adjust_cr':
> include/asm/system.h:185: warning: implicit declaration of function
> `local_irq_save'
> include/asm/system.h:192: warning: implicit declaration of function
> `local_irq_restore'
> include/asm/system.h:179: warning: unused variable `cr'

That's dealt with by the following:

Signed-off-by: Al Viro <[email protected]>
---
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h
index e160aeb..bf44782 100644
--- a/include/asm-arm/system.h
+++ b/include/asm-arm/system.h
@@ -173,10 +173,12 @@ static inline void set_copro_access(unsi
extern unsigned long cr_no_alignment; /* defined in entry-armv.S */
extern unsigned long cr_alignment; /* defined in entry-armv.S */

+#include <linux/irqflags.h>
+
#ifndef CONFIG_SMP
static inline void adjust_cr(unsigned long mask, unsigned long set)
{
- unsigned long flags, cr;
+ unsigned long flags;

mask &= ~CR_A;

@@ -248,8 +250,6 @@ static inline void sched_cacheflush(void
{
}

-#include <linux/irqflags.h>
-
#ifdef CONFIG_SMP

#define smp_mb() mb()

2006-12-16 01:09:09

by Al Viro

[permalink] [raw]
Subject: Re: Nasty warnings on arm (+ one compile problem -- INIT_WORK related)


> Plus compile error. It should be some search&replace I should do, but
> which one?
>
> drivers/video/sa1100fb.c:1447:49: macro "INIT_WORK" passed 3
> arguments, but takes just 2
> drivers/video/sa1100fb.c: In function `sa1100fb_init_fbinfo':
> drivers/video/sa1100fb.c:1447: error: `INIT_WORK' undeclared (first
> use in this function)
> drivers/video/sa1100fb.c:1447: error: (Each undeclared identifier is
> reported only once
> drivers/video/sa1100fb.c:1447: error: for each function it appears
> in.)
> drivers/video/sa1100fb.c: At top level:
> drivers/video/sa1100fb.c:1204: warning: `sa1100fb_task' defined but
> not used
> make[2]: *** [drivers/video/sa1100fb.o] Error 1
> make[1]: *** [drivers/video] Error 2
> make: *** [drivers] Error 2
>
> INIT_WORK(&fbi->task, sa1100fb_task, fbi);
>
> ...
>
> /*
> * Our LCD controller task (which is called when we blank or unblank)
> * via keventd.
> */
> static void sa1100fb_task(void *dummy)
> {
> struct sa1100fb_info *fbi = dummy;
> u_int state = xchg(&fbi->task_state, -1);
>
> set_ctrlr_state(fbi, state);
> }
>
> (Or will I need to play with container_of or something? I guess I did
> not pay attetion to workqueue stuff).

... and that's

static void sa1100fb_task(struct work_struct *ucking_fugly)
{
struct sa1100fb_info *fbi = container_of(ucking_fugly,
struct sa1100fb_info,
task);

2006-12-16 12:10:45

by Russell King

[permalink] [raw]
Subject: Re: Nasty warnings on arm (+ one compile problem -- INIT_WORK related)

On Sat, Dec 16, 2006 at 12:58:18AM +0100, Pavel Machek wrote:
> I get nasty warning for each file compiled:
>
> CC drivers/video/sa1100fb.o
> In file included from include/asm/bitops.h:23,
> from include/linux/bitops.h:9,
> from include/linux/thread_info.h:20,
> from include/linux/preempt.h:9,
> from include/linux/spinlock.h:49,
> from include/linux/module.h:9,
> from drivers/video/sa1100fb.c:163:
> include/asm/system.h: In function `adjust_cr':
> include/asm/system.h:185: warning: implicit declaration of function
> `local_irq_save'
> include/asm/system.h:192: warning: implicit declaration of function
> `local_irq_restore'
> include/asm/system.h:179: warning: unused variable `cr'

I know of these. When I come around to merging next week I'll fix it
(probably by reverting the two commits.) Until then, you'll have to
put up with it.

--
Russell King
Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/
maintainer of:

2006-12-17 12:33:38

by Pavel Machek

[permalink] [raw]
Subject: Re: Nasty warnings on arm (+ one compile problem -- INIT_WORK related)


> > (Or will I need to play with container_of or something? I guess I did
> > not pay attetion to workqueue stuff).
>
> ... and that's
>
> static void sa1100fb_task(struct work_struct *ucking_fugly)
> {
> struct sa1100fb_info *fbi = container_of(ucking_fugly,
> struct sa1100fb_info,
> task);

Thanks, fixed and sent patch to rmk. I made the variable name shorter,
I hope that's okay with you ;-).
Pavel

--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html