mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: David Miller <davem@davemloft.net>
To: bunk@kernel.org
Cc: errandir_news@mph.eclipse.co.uk, m.kozlowski@tuxland.pl,
	akpm@linux-foundation.org, linux-kernel@vger.kernel.org,
	sparclinux@vger.kernel.org
Subject: Re: 2.6.24-rc6-mm1: some section mismatches on sparc64
Date: Sat, 29 Dec 2007 01:15:42 -0800 (PST)	[thread overview]
Message-ID: <20071229.011542.224506346.davem@davemloft.net> (raw)
In-Reply-To: <20071229.005408.76652528.davem@davemloft.net>

From: David Miller <davem@davemloft.net>
Date: Sat, 29 Dec 2007 00:54:08 -0800 (PST)

> 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.

At the end of this email is one idea I came up with but it still
results in:

WARNING: vmlinux.o(.text+0x19e52c): Section mismatch: reference to .init.text:sunserial_console_match (between 'hv_probe' and 'sunzilog_get_mctrl')
WARNING: vmlinux.o(.text+0x19fd1c): Section mismatch: reference to .init.text:sunserial_console_match (between 'zs_probe' and 'serial_in')
WARNING: vmlinux.o(.text+0x19fd5c): Section mismatch: reference to .init.text:sunserial_console_match (between 'zs_probe' and 'serial_in')
WARNING: vmlinux.o(.text+0x1a19e0): Section mismatch: reference to .init.text:sunserial_console_match (between 'su_probe' and 'sunsu_console_putchar')
WARNING: vmlinux.o(.text+0x1a307c): Section mismatch: reference to .init.text:sunserial_console_match (between 'sab_probe' and 'sunsab_send_xchar')
WARNING: vmlinux.o(.text+0x1a3090): Section mismatch: reference to .init.text:sunserial_console_match (between 'sab_probe' and 'sunsab_send_xchar')
WARNING: vmlinux.o(.sun4v_2insn_patch+0x4f8): Section mismatch: reference to .init.text:

if CONFIG_HOTPLUG is set because driver initialization code has to be
marked with __devinit and with HOTPLUG that isn't __init.

This means it's impossible to call add_preferred_console() (either
directly or indirectly via a helper like sunserial_console_match())
from a driver init routine.

The only way I can think of to "work around" this is to mark
sunserial_console_match() as __init_refok, and use some static
variable in suncore which starts as "0" gets set to "1" via a
late_initcall() to block the call to add_preferred_console().

But that's just gross.

Probably the thing to do to untangle this is to make
add_preferred_console() not be __init.  I just tested and that seems
to make everything happy.  Again, below is the first thing I
tried just for reference.

diff --git a/drivers/serial/suncore.c b/drivers/serial/suncore.c
index 707c5b0..a4cbd17 100644
--- a/drivers/serial/suncore.c
+++ b/drivers/serial/suncore.c
@@ -21,6 +21,8 @@
 
 #include <asm/prom.h>
 
+#define SUNCORE_CONSOLE
+
 #include "suncore.h"
 
 static int sunserial_current_minor = 64;
@@ -52,8 +54,9 @@ void sunserial_unregister_minors(struct uart_driver *drv, int count)
 }
 EXPORT_SYMBOL(sunserial_unregister_minors);
 
-int __init sunserial_console_match(struct console *con, struct device_node *dp,
-			    struct uart_driver *drv, int line)
+int __init sunserial_console_match(struct console *con,
+				   struct device_node *dp,
+				   struct uart_driver *drv, int line)
 {
 	int off;
 
@@ -74,7 +77,6 @@ int __init sunserial_console_match(struct console *con, struct device_node *dp,
 
 	return 1;
 }
-EXPORT_SYMBOL(sunserial_console_match);
 
 void
 sunserial_console_termios(struct console *con)
diff --git a/drivers/serial/suncore.h b/drivers/serial/suncore.h
index 042668a..de4dfb0 100644
--- a/drivers/serial/suncore.h
+++ b/drivers/serial/suncore.h
@@ -25,8 +25,17 @@ extern int suncore_mouse_baud_detection(unsigned char, int);
 extern int sunserial_register_minors(struct uart_driver *, int);
 extern void sunserial_unregister_minors(struct uart_driver *, int);
 
+#ifdef SUNCORE_CONSOLE
 extern int sunserial_console_match(struct console *, struct device_node *,
 				   struct uart_driver *, int);
 extern void sunserial_console_termios(struct console *);
+#else
+static inline int sunserial_console_match(struct console *con,
+					  struct device_node *dp,
+					  struct uart_driver *drv, int line)
+{
+	return 0;
+}
+#endif
 
 #endif /* !(_SERIAL_SUN_H) */
diff --git a/drivers/serial/sunhv.c b/drivers/serial/sunhv.c
index be0fe15..67a0b4c 100644
--- a/drivers/serial/sunhv.c
+++ b/drivers/serial/sunhv.c
@@ -24,6 +24,8 @@
 #include <asm/of_device.h>
 #include <asm/irq.h>
 
+#define SUNCORE_CONSOLE
+
 #if defined(CONFIG_MAGIC_SYSRQ)
 #define SUPPORT_SYSRQ
 #endif
diff --git a/drivers/serial/sunsab.c b/drivers/serial/sunsab.c
index 543f937..955d54b 100644
--- a/drivers/serial/sunsab.c
+++ b/drivers/serial/sunsab.c
@@ -38,9 +38,12 @@
 #include <asm/prom.h>
 #include <asm/of_device.h>
 
-#if defined(CONFIG_SERIAL_SUNSAB_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
+#ifdef CONFIG_SERIAL_SUNSAB_CONSOLE
+#define SUNCORE_CONSOLE
+#ifdef CONFIG_MAGIC_SYSRQ
 #define SUPPORT_SYSRQ
 #endif
+#endif
 
 #include <linux/serial_core.h>
 
diff --git a/drivers/serial/sunsu.c b/drivers/serial/sunsu.c
index 4e2302d..cbd97eb 100644
--- a/drivers/serial/sunsu.c
+++ b/drivers/serial/sunsu.c
@@ -41,9 +41,12 @@
 #include <asm/prom.h>
 #include <asm/of_device.h>
 
-#if defined(CONFIG_SERIAL_SUNSU_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
+#ifdef CONFIG_SERIAL_SUNSU_CONSOLE
+#define SUNCORE_CONSOLE
+#ifdef CONFIG_MAGIC_SYSRQ
 #define SUPPORT_SYSRQ
 #endif
+#endif
 
 #include <linux/serial_core.h>
 
diff --git a/drivers/serial/sunzilog.c b/drivers/serial/sunzilog.c
index cb2e405..d18d145 100644
--- a/drivers/serial/sunzilog.c
+++ b/drivers/serial/sunzilog.c
@@ -38,9 +38,12 @@
 #include <asm/prom.h>
 #include <asm/of_device.h>
 
-#if defined(CONFIG_SERIAL_SUNZILOG_CONSOLE) && defined(CONFIG_MAGIC_SYSRQ)
+#ifdef CONFIG_SERIAL_SUNZILOG_CONSOLE
+#define SUNCORE_CONSOLE
+#ifdef CONFIG_MAGIC_SYSRQ
 #define SUPPORT_SYSRQ
 #endif
+#endif
 
 #include <linux/serial_core.h>
 


  parent reply	other threads:[~2007-12-29  9:15 UTC|newest]

Thread overview: 135+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-12-23  7:30 2.6.24-rc6-mm1 Andrew Morton
2007-12-23 11:04 ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 11:10   ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 11:34     ` 2.6.24-rc6-mm1 Andrew Morton
2007-12-23 11:57       ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 12:12         ` 2.6.24-rc6-mm1 Christoph Hellwig
2007-12-23 12:35 ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2007-12-23 13:00   ` 2.6.24-rc6-mm1 Ingo Molnar
2007-12-23 13:48     ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2007-12-23 13:53       ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2007-12-23 20:09         ` 2.6.24-rc6-mm1 Sam Ravnborg
2007-12-23 22:44           ` 2.6.24-rc6-mm1 Rafael J. Wysocki
2008-01-02 20:05             ` [patch] x86 compat_binfmt_elf, Makefile fixes (was: Re: 2.6.24-rc6-mm1) Ingo Molnar
2008-01-02 20:32               ` Rafael J. Wysocki
2008-01-02 20:43                 ` Ingo Molnar
2007-12-23 23:09   ` 2.6.24-rc6-mm1 H. Peter Anvin
2007-12-23 16:27 ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-23 20:39   ` 2.6.24-rc6-mm1 Andrew Morton
2007-12-27 11:42     ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-27 14:30       ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-28 22:53   ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-28 23:07     ` 2.6.24-rc6-mm1 Andrew Morton
2007-12-29 16:51       ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-30  1:30         ` 2.6.24-rc6-mm1 Herbert Xu
2007-12-30  3:34           ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-30  5:41             ` 2.6.24-rc6-mm1 Randy Dunlap
2007-12-31 20:15             ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-01 12:04               ` 2.6.24-rc6-mm1 Herbert Xu
2008-01-01 12:59                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-01 18:29                   ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-02 18:29                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-02 21:51                   ` 2.6.24-rc6-mm1 Herbert Xu
2008-01-02 21:57                     ` 2.6.24-rc6-mm1 J. Bruce Fields
2008-01-03  5:02                       ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-03 15:37                       ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-03 18:52                         ` 2.6.24-rc6-mm1 J. Bruce Fields
2008-01-04 10:23                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-04 13:30                       ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-04 15:21                         ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-04 21:24                           ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-05  0:07                           ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-05  8:01                             ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-05 10:13                               ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-05 14:52                                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-05 22:10                                   ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06  1:25                                     ` 2.6.24-rc6-mm1 Andrew Morton
2008-01-06  3:28                                       ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-06 10:41                                         ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06 11:23                                           ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-06 11:35                                             ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06 13:33                                               ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-06 20:03                                                 ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-07  6:16                                                   ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-08 15:59                                                     ` 2.6.24-rc6-mm1 Ingo Molnar
2008-01-08 23:57                                                       ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-09  0:27                                                         ` 2.6.24-rc6-mm1 Andrew Morton
2008-01-09  0:54                                                           ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-09  1:07                                                             ` 2.6.24-rc6-mm1 Andrew Morton
2008-01-09  9:04                                                         ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-10  0:54                                                           ` 2.6.24-rc6-mm1 FUJITA Tomonori
2008-01-25 21:06                                                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06  3:16                                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06  8:27                                   ` 2.6.24-rc6-mm1 Jarek Poplawski
2008-01-06 10:30                                     ` 2.6.24-rc6-mm1 Torsten Kaiser
2008-01-06 14:52                                       ` 2.6.24-rc6-mm1 Jarek Poplawski
2007-12-30 21:24       ` 2.6.24-rc6-mm1 J. Bruce Fields
2007-12-30 21:35         ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-31 13:17           ` 2.6.24-rc6-mm1 Torsten Kaiser
2007-12-23 22:54 ` 2.6.24-rc6-mm1: suspend broken on HP nx6325 due to cpufreq changes Rafael J. Wysocki
2007-12-23 22:50   ` Andrew Morton
2007-12-23 22:56     ` Dave Jones
2007-12-24 11:21     ` Takashi Iwai
2007-12-24 14:13       ` Rafael J. Wysocki
2007-12-25 21:51 ` 2.6.24-rc6-mm1 Andreas Mohr
2007-12-26  5:43 ` 2.6.24-rc6-mm1 - git-lblnet.patch and networking horkage Valdis.Kletnieks
2007-12-26  7:34   ` James Morris
2007-12-26  8:25     ` Valdis.Kletnieks
2007-12-26  8:52       ` James Morris
2007-12-26 14:16         ` James Morris
2007-12-26 22:46           ` Andrew Morton
2007-12-26 23:39             ` 2.6.24-rc6-mm1 - e1000 breakage James Morris
2007-12-26 16:44         ` 2.6.24-rc6-mm1 - git-lblnet.patch and networking horkage Valdis.Kletnieks
2007-12-26  8:37 ` 2.6.24-rc6-mm1 Dave Young
2007-12-26 12:29 ` 2.6.24-rc6-mm1: some section mismatches on sparc64 Mariusz Kozlowski
2007-12-27  3:05   ` David Miller
2007-12-28 23:22     ` Adrian Bunk
2007-12-29  8:14       ` David Miller
2007-12-29  8:27         ` David Miller
2007-12-29  8:48         ` Adrian Bunk
2007-12-29  8:54           ` David Miller
2007-12-29  9:06             ` Adrian Bunk
2007-12-29  9:18               ` David Miller
2007-12-29  9:53                 ` Adrian Bunk
2007-12-29  9:15             ` David Miller [this message]
2007-12-27  2:21 ` 2.6.24-rc6-mm1: __raw_spin_is_contended undefined Joseph Fannin
2007-12-27  5:21   ` Nick Piggin
2007-12-27  6:04 ` 2.6.24-rc6-mm1 - drivers/char/tpm/tpm_bios.c oddness? Valdis.Kletnieks
2007-12-27  8:49 ` 2.6.24-rc6-mm1 Kernel panics at different functions () Kamalesh Babulal
2007-12-27  9:54   ` Andrew Morton
2007-12-27 10:25     ` Kamalesh Babulal
2007-12-28  9:11     ` Kamalesh Babulal
2007-12-28 13:03       ` Dhaval Giani
2007-12-27  9:16 ` 2.6.24-rc6-mm1 - power_supply driver dmesg weirdness? Valdis.Kletnieks
2007-12-27 17:54 ` 2.6.24-rc6-mm1 - crash in tick_sched_timer/update_process_times Valdis.Kletnieks
2007-12-28  7:34   ` Andrew Morton
2007-12-29 16:02   ` Valdis.Kletnieks
2007-12-31 18:05 ` [PATCH -mm] crypto: scatterwalk.h needs sched.h Randy Dunlap
2007-12-31 22:31   ` Herbert Xu
2007-12-31 18:05 ` [PATCH -mm] driver core: build with SYSFS=n Randy Dunlap
2007-12-31 18:18 ` 2.6.24-rc6-mm1 (build problem: v4l / i2c) Randy Dunlap
2007-12-31 19:01   ` [v4l-dvb-maintainer] " Michael Krufky
2007-12-31 19:08     ` Michael Krufky
2007-12-31 18:18 ` 2.6.24-rc6-mm1 (build problem: gpio_keys) Randy Dunlap
2007-12-31 18:40   ` David Brownell
2007-12-31 19:10     ` [PATCH -mm] gpio: fix x86 build problem: gpio_keys Randy Dunlap
2008-01-01 15:32       ` Ingo Molnar
2007-12-31 18:19 ` 2.6.24-rc6-mm1 (build problem: gpio/W1) Randy Dunlap
2008-01-05 15:29   ` Evgeniy Polyakov
2008-01-05 16:16     ` Ville Syrjälä
2008-01-05 17:18       ` Randy Dunlap
2007-12-31 20:11 ` 2.6.24-rc6-mm1 (driver core/sysfs) Randy Dunlap
2008-01-12  1:05   ` Greg KH
2008-01-14 16:11     ` [patch] auto-qa Kconfig Ingo Molnar
2008-01-15 22:13       ` Pavel Machek
2008-01-06 10:03 ` 2.6.24-rc6-mm1: sparc64: undefined reference to `vmemmap_table' Mariusz Kozlowski
2008-01-06 10:15   ` Andrew Morton
2008-01-07  1:18     ` David Miller
2008-01-07 13:50 ` [PATCH -mm/x86] revert i386: handle an initrd in highmem (Was Re: 2.6.24-rc6-mm1) Dhaval Giani
2008-01-07 13:53   ` Thomas Gleixner
2008-01-07 14:56     ` Ingo Molnar
2008-01-07 15:19       ` Dhaval Giani
2008-01-07 16:22       ` Randy Dunlap
2008-01-07 16:32         ` Dhaval Giani
2008-01-07 16:50         ` Thomas Gleixner
2008-01-07 22:15           ` Randy Dunlap

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071229.011542.224506346.davem@davemloft.net \
    --to=davem@davemloft.net \
    --cc=akpm@linux-foundation.org \
    --cc=bunk@kernel.org \
    --cc=errandir_news@mph.eclipse.co.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=m.kozlowski@tuxland.pl \
    --cc=sparclinux@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®