All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Jeff Dike <jdike@addtoit.com>,
	akpm@linuxfoundation.org, linux-kernel@vger.kernel.org,
	Peter Oberparleiter <oberparleiter@googlemail.com>
Subject: Re: 2.6.26-rc5-mm1: uml link error
Date: Tue, 10 Jun 2008 16:21:06 +0200	[thread overview]
Message-ID: <484E8DD2.5050603@de.ibm.com> (raw)
In-Reply-To: <OF61F32674.CE1F9CB0-ONC1257464.004D17DC-C1257464.004DB50E@de.ibm.com>

Peter 1 Oberparleiter wrote:
> Jeff Dike <jdike@addtoit.com> wrote on 10.06.2008 15:57:29:
> 
>> On Tue, Jun 10, 2008 at 01:19:27PM +0200, Miklos Szeredi wrote:
>> > Hmm, uml still doesn't boot with this patch, it dies while calling the
>> > constructors.  So maybe that SORT contruct is still needed?
>> > 
>> > #17 0x08049793 in do_ctors () at init/main.c:706
>> > #18 0x080499cc in do_basic_setup () at init/main.c:789
>> > #19 0x08049a43 in kernel_init (unused=0x0) at init/main.c:897
>> 
>> This doesn't look like it's in do_initcalls.  What happens with
>> "initcall_debug"?
> 
> Constructor calls inside the kernel happen just before any other
> initcall. The problem here is that constructors are called from both
> the host run-time environment as well as from the kernel. I'm
> working on a patch that disables kernel constructor calling for UML.

New try: should be fixed with the patch below (applies on top of
kernel-call-constructors.patch):

--
Subject: kernel: disable constructor calling for uml

From: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>

Disable calling of constructor functions from within the kernel for uml
as they are already called by the host run-time environment.

Found-by: Miklos Szeredi <miklos@szeredi.hu>
Signed-off-by: Peter Oberparleiter <peter.oberparleiter@de.ibm.com>
---
 include/asm-generic/vmlinux.lds.h |    2 ++
 init/main.c                       |    2 ++
 kernel/module.c                   |    2 ++
 3 files changed, 6 insertions(+)

Index: linux-2.6.26-rc5-mm2/include/asm-generic/vmlinux.lds.h
===================================================================
--- linux-2.6.26-rc5-mm2.orig/include/asm-generic/vmlinux.lds.h
+++ linux-2.6.26-rc5-mm2/include/asm-generic/vmlinux.lds.h
@@ -381,7 +381,9 @@
 	}								\
 	__per_cpu_end = .;
 
+#ifndef CONFIG_UML
 #define CONSTRUCTORS							\
 		VMLINUX_SYMBOL(__ctor_start) = .;			\
 		*(.ctors)						\
 		VMLINUX_SYMBOL(__ctor_end) = .;
+#endif /* !CONFIG_UML */
Index: linux-2.6.26-rc5-mm2/init/main.c
===================================================================
--- linux-2.6.26-rc5-mm2.orig/init/main.c
+++ linux-2.6.26-rc5-mm2/init/main.c
@@ -699,11 +699,13 @@ asmlinkage void __init start_kernel(void
 
 static void __init do_ctors(void)
 {
+#ifndef CONFIG_UML
 	ctorcall_t *call;
 
 	for (call = (ctorcall_t *) __ctor_start;
 	     call < (ctorcall_t *) __ctor_end; call++)
 		(*call)();
+#endif /* !CONFIG_UML */
 }
 
 static int __initdata initcall_debug;
Index: linux-2.6.26-rc5-mm2/kernel/module.c
===================================================================
--- linux-2.6.26-rc5-mm2.orig/kernel/module.c
+++ linux-2.6.26-rc5-mm2/kernel/module.c
@@ -2194,10 +2194,12 @@ static struct module *load_module(void _
 
 static void do_mod_ctors(struct module *mod)
 {
+#ifndef CONFIG_UML
 	unsigned long i;
 
 	for (i = 0; i < mod->num_ctors; i++)
 		mod->ctors[i]();
+#endif /* !CONFIG_UML */
 }
 
 /* This is where the real work happens */

  reply	other threads:[~2008-06-10 14:22 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-09 20:42 2.6.26-rc5-mm1: uml link error Miklos Szeredi
2008-06-10 10:51 ` Peter Oberparleiter
2008-06-10 11:19   ` Miklos Szeredi
2008-06-10 13:57     ` Jeff Dike
2008-06-10 14:08       ` Miklos Szeredi
2008-06-10 14:08       ` Peter 1 Oberparleiter
2008-06-10 14:21         ` Peter Oberparleiter [this message]
2008-06-10 15:27           ` Jeff Dike
2008-06-10 16:54           ` Jeff Dike
2008-06-10 17:21           ` Sam Ravnborg
2008-06-11 12:18             ` Peter Oberparleiter
2008-06-11 12:38               ` Miklos Szeredi

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=484E8DD2.5050603@de.ibm.com \
    --to=peter.oberparleiter@de.ibm.com \
    --cc=akpm@linuxfoundation.org \
    --cc=jdike@addtoit.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miklos@szeredi.hu \
    --cc=oberparleiter@googlemail.com \
    /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 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.