linux/arch/x86_64/kernel
Andi Kleen daeeafecf0 [PATCH] x86_64: Keep only a single debug notifier chain
Calling a notifier three times in the debug handler does not make much sense,
because a debugger can figure out the various conditions by itself.  Remove
the additional calls to DIE_DEBUG and DIE_DEBUGSTEP completely.

This matches what i386 does now.

This also makes sure interrupts are always still disabled when calling a
debugger, which prevents:

BUG: using smp_processor_id() in preemptible [00000001] code: tpopf/1470
caller is post_kprobe_handler+0x9/0x70

Call Trace:<ffffffff8024f10f>{smp_processor_id+191} <ffffffff80120e69>{post_kpro
be_handler+9} 
<ffffffff80120f7a>{kprobe_exceptions_notify+58} 
<ffffffff80144fc0>{notifier_call_chain+32} <ffffffff80110daf>{do_debug+335} 
<ffffffff8010f513>{debug+127}  <EOE> 

on preemptible debug kernels with kprobes when single stepping in user space.

This was probably a bug even on non preempt kernels, this function was
supposed to be running with interrupts off according to a comment there.

Note to third part debugger maintainers: please double check your debugger can
still single step.

Cc: <prasanna@in.ibm.com>
Cc: <jbeulich@novell.com>
Cc: <kaos@sgi.com>
Cc: <jim.houston@ccur.com>
Cc: <jfv@bluesong.net>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-04-16 15:25:13 -07:00
..
acpi Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpufreq Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
aperture.c [PATCH] x86_64: Use the e820 hole to map the IOMMU/AGP aperture 2005-04-16 15:25:13 -07:00
apic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
asm-offsets.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
e820.c [PATCH] x86_64: Port over e820 gap detection from i386 2005-04-16 15:25:12 -07:00
early_printk.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [PATCH] x86_64: Remove unused macro in preempt support 2005-04-16 15:25:05 -07:00
genapic_cluster.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
genapic_flat.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
genapic.c [PATCH] x86_64 genapic update 2005-04-16 15:24:53 -07:00
head64.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
head.S [PATCH] x86_64: Dump stack and prevent recursion on early fault 2005-04-16 15:25:00 -07:00
i387.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
i8259.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
io_apic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioport.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kprobes.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ldt.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mce_intel.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mce.c [PATCH] x86_64: Remove excessive stack allocation in MCE code with large NR_CPUS 2005-04-16 15:25:10 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
mpparse.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
msr.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
nmi.c [PATCH] x86_64: Don't assume future AMD CPUs have K8 compatible performance counters 2005-04-16 15:25:07 -07:00
pci-dma.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci-gart.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci-nommu.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
process.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ptrace.c [PATCH] x86_64: Handle programs that set TF in user space using popf while single stepping 2005-04-16 15:24:58 -07:00
reboot.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
semaphore.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup64.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
setup.c [PATCH] x86_64: Port over e820 gap detection from i386 2005-04-16 15:25:12 -07:00
signal.c [PATCH] x86_64: Fix interaction of single stepping with debuggers 2005-04-16 15:25:00 -07:00
smp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
smpboot.c [PATCH] x86_64: disable interrupts during SMP bogomips checking 2005-04-16 15:24:52 -07:00
suspend_asm.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
suspend.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sys_x86_64.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
syscall.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
time.c [PATCH] x86_64: Support constantly ticking TSCs 2005-04-16 15:25:05 -07:00
trampoline.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
traps.c [PATCH] x86_64: Keep only a single debug notifier chain 2005-04-16 15:25:13 -07:00
vmlinux.lds.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
vsyscall.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
x8664_ksyms.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00