All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Andi Kleen <andi@firstfloor.org>
Cc: tglx@linutronix.de, linux-kernel@vger.kernel.org,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: More breakage in native_rdtsc out of line in git-x86
Date: Wed, 9 Jan 2008 10:09:56 +0100	[thread overview]
Message-ID: <20080109090956.GA14274@elte.hu> (raw)
In-Reply-To: <20080109035534.GA30321@basil.nowhere.org>


* Andi Kleen <andi@firstfloor.org> wrote:

> Unfortunately simply adding __vsyscall_fn to native_read_tsc doesn't 
> work -- causes early kernel faults like
> 
> PANIC: early exception rip ffffffffff600105 error 10 cr2 ffffffffff600105
> Pid: 0, comm: swapper Not tainted 2.6.24-rc6 #58
> 
> Call Trace:
>  [<ffffffff80211dec>] native_sched_clock+0x9/0x3f
>  [<ffffffff8022b758>] init_idle+0x33/0xd1
>  [<ffffffff80825449>] sched_init+0x26d/0x283
>  [<ffffffff80815899>] start_kernel+0x10b/0x2bd
>  [<ffffffff80815114>] _sinittext+0x114/0x11b
> 
> Not sure why that is -- in theory the vsyscall functions should be 
> callable from the main kernel. Might be a binutils problem or another 
> code regression.

nope, it's a 64-bit setup/dependency bug/problem: the vsyscall mappings 
are installed via an __initcall, and that's too late for early use. The 
combo patch below fixed the crash for me, does it work on your box too?

	Ingo

Index: linux-x86.q/arch/x86/kernel/rtc.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/rtc.c
+++ linux-x86.q/arch/x86/kernel/rtc.c
@@ -195,7 +195,7 @@ int update_persistent_clock(struct times
 	return set_rtc_mmss(now.tv_sec);
 }
 
-unsigned long long native_read_tsc(void)
+unsigned long long __vsyscall_fn native_read_tsc(void)
 {
 	DECLARE_ARGS(val, low, high);
 
Index: linux-x86.q/arch/x86/kernel/setup_64.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/setup_64.c
+++ linux-x86.q/arch/x86/kernel/setup_64.c
@@ -46,6 +46,7 @@
 #include <asm/mtrr.h>
 #include <asm/uaccess.h>
 #include <asm/system.h>
+#include <asm/vsyscall.h>
 #include <asm/io.h>
 #include <asm/smp.h>
 #include <asm/msr.h>
@@ -464,6 +465,7 @@ void __init setup_arch(char **cmdline_p)
 #endif
 	reserve_crashkernel();
 	paging_init();
+	map_vsyscall();
 
 	early_quirks();
 
Index: linux-x86.q/arch/x86/kernel/vsyscall_64.c
===================================================================
--- linux-x86.q.orig/arch/x86/kernel/vsyscall_64.c
+++ linux-x86.q/arch/x86/kernel/vsyscall_64.c
@@ -319,7 +319,7 @@ cpu_vsyscall_notifier(struct notifier_bl
 	return NOTIFY_DONE;
 }
 
-static void __init map_vsyscall(void)
+void __init map_vsyscall(void)
 {
 	extern char __vsyscall_0;
 	unsigned long physaddr_page0 = __pa_symbol(&__vsyscall_0);
@@ -335,7 +335,6 @@ static int __init vsyscall_init(void)
 	BUG_ON((unsigned long) &vtime != VSYSCALL_ADDR(__NR_vtime));
 	BUG_ON((VSYSCALL_ADDR(0) != __fix_to_virt(VSYSCALL_FIRST_PAGE)));
 	BUG_ON((unsigned long) &vgetcpu != VSYSCALL_ADDR(__NR_vgetcpu));
-	map_vsyscall();
 #ifdef CONFIG_SYSCTL
 	register_sysctl_table(kernel_root_table2);
 #endif

  parent reply	other threads:[~2008-01-09  9:10 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-01-09  3:55 More breakage in native_rdtsc out of line in git-x86 Andi Kleen
2008-01-09  5:21 ` More breakage in native_rdtsc out of line in git-x86 II Andi Kleen
2008-01-09  9:09 ` Ingo Molnar [this message]
2008-01-09 14:19   ` More breakage in native_rdtsc out of line in git-x86 Andi Kleen
2008-01-09 15:22     ` Ingo Molnar
2008-01-09 15:51       ` Andi Kleen
2008-01-09 16:30         ` Ingo Molnar
2008-01-09 17:48           ` Andi Kleen
2008-01-09 20:25             ` Arjan van de Ven
2008-01-09 20:40               ` Andi Kleen
2008-01-09 20:57                 ` H. Peter Anvin
2008-01-09 22:09             ` Björn Steinbrink
2008-01-09 22:28               ` Andi Kleen
2008-01-09 22:35                 ` Harvey Harrison
2008-01-09 22:41                   ` Andi Kleen
2008-01-09 23:21                     ` Björn Steinbrink
2008-01-09 23:37                     ` Paolo Ciarrocchi
2008-01-11  5:21                       ` Cyrill Gorcunov

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=20080109090956.GA14274@elte.hu \
    --to=mingo@elte.hu \
    --cc=andi@firstfloor.org \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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.