diff options
author | Tony Luck <tony.luck@intel.com> | 2005-08-22 14:31:36 -0700 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-08-22 14:31:36 -0700 |
commit | 729c80c6ffd7633210a09d4b55fdfab3c8d1866b (patch) | |
tree | a8fe47dfa3da91b9902e61c55a811d3a66614fc8 /arch/x86_64 | |
parent | 4eaefb39528b3a78fb6a784162200b198d3e16ee (diff) | |
parent | f6fdd7d9c273bb2a20ab467cb57067494f932fa3 (diff) | |
download | linux-729c80c6ffd7633210a09d4b55fdfab3c8d1866b.tar.gz linux-729c80c6ffd7633210a09d4b55fdfab3c8d1866b.tar.bz2 linux-729c80c6ffd7633210a09d4b55fdfab3c8d1866b.zip |
Auto-update from upstream
Diffstat (limited to 'arch/x86_64')
-rw-r--r-- | arch/x86_64/kernel/smpboot.c | 15 | ||||
-rw-r--r-- | arch/x86_64/mm/fault.c | 4 |
2 files changed, 9 insertions, 10 deletions
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c index b15761ff4101..fa25e39fe54d 100644 --- a/arch/x86_64/kernel/smpboot.c +++ b/arch/x86_64/kernel/smpboot.c @@ -492,6 +492,14 @@ void __cpuinit start_secondary(void) */ set_cpu_sibling_map(smp_processor_id()); + /* + * Wait for TSC sync to not schedule things before. + * We still process interrupts, which could see an inconsistent + * time in that window unfortunately. + * Do this here because TSC sync has global unprotected state. + */ + tsc_sync_wait(); + /* * We need to hold call_lock, so there is no inconsistency * between the time smp_call_function() determines number of @@ -509,13 +517,6 @@ void __cpuinit start_secondary(void) per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE; unlock_ipi_call_lock(); - mb(); - - /* Wait for TSC sync to not schedule things before. - We still process interrupts, which could see an inconsistent - time in that window unfortunately. */ - tsc_sync_wait(); - cpu_idle(); } diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index 493819e543a5..ca914c3bd49c 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c @@ -211,9 +211,7 @@ int unhandled_signal(struct task_struct *tsk, int sig) { if (tsk->pid == 1) return 1; - /* Warn for strace, but not for gdb */ - if (!test_ti_thread_flag(tsk->thread_info, TIF_SYSCALL_TRACE) && - (tsk->ptrace & PT_PTRACED)) + if (tsk->ptrace & PT_PTRACED) return 0; return (tsk->sighand->action[sig-1].sa.sa_handler == SIG_IGN) || (tsk->sighand->action[sig-1].sa.sa_handler == SIG_DFL); |