Messages in this thread | | | Date | Sat, 29 Dec 2007 01:18:02 -0800 (PST) | Subject | Re: 2.6.24-rc6-mm1: some section mismatches on sparc64 | From | David Miller <> |
| |
From: Adrian Bunk <bunk@kernel.org> Date: Sat, 29 Dec 2007 11:06:19 +0200
> On Sat, Dec 29, 2007 at 12:54:08AM -0800, David Miller wrote: > > From: Adrian Bunk <bunk@kernel.org> > > Date: Sat, 29 Dec 2007 10:48:46 +0200 > > > > > On Sat, Dec 29, 2007 at 12:14:11AM -0800, David Miller wrote: > > > > That's why I'm not worried about this issue and it's not critical at > > > > all. > > > > > > If a module calls sunserial_console_match() that's an Oops. > > > > That's true. > > > > I'm trying to figure out a way to fix this. > > #ifdef FOO_CONSOLE around the sunserial_console_match() calls in the > drivers should work.
It absolutely doesn't work, I tried this, see my other reply.
The issue is add_preferred_console() is __init, driver probe calls are __devinit which are either __init or not __init.
So even with the FOO_CONSOLE ifdef (or something similar like the patch I posted) we'll still get section mismatch warnings.
> If you consider this too many #ifdef's, an alternative solution would be > doing the following in drivers/serial/suncore.h: > > #ifndef MODULE > extern int sunserial_console_match(struct console *, struct device_node *, > struct uart_driver *, int); > #else > static inline int sunserial_console_match(struct console *, struct device_node *, > struct uart_driver *, int); > { return 0; } > #endif
Just removing the __init tag from add_preferred_console() (and subsequently sunserial_console_match()) is probably the easiest way to fix all of this.
| |