perf,hw_breakpoint: Initialize hardware api earlier
authorJason Wessel <jason.wessel@windriver.com>
Thu, 4 Nov 2010 22:33:01 +0000 (17:33 -0500)
committerFrederic Weisbecker <fweisbec@gmail.com>
Fri, 12 Nov 2010 13:51:55 +0000 (14:51 +0100)
commit3c502e7a0255d82621ff25d60cc816624830497e
tree1f30638f22ef9ed748fac1f73cb18169efe49ae7
parent6c0aca288e726405b01dacb12cac556454d34b2a
perf,hw_breakpoint: Initialize hardware api earlier

When using early debugging, the kernel does not initialize the
hw_breakpoint API early enough and causes the late initialization of
the kernel debugger to fail. The boot arguments are:

    earlyprintk=vga ekgdboc=kbd kgdbwait

Then simply type "go" at the kdb prompt and boot. The kernel will
later emit the message:

    kgdb: Could not allocate hwbreakpoints

And at that point the kernel debugger will cease to work correctly.

The solution is to initialize the hw_breakpoint at the same time that
all the other perf call backs are initialized instead of using a
core_initcall() initialization which happens well after the kernel
debugger can make use of hardware breakpoints.

Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
CC: Frederic Weisbecker <fweisbec@gmail.com>
CC: Ingo Molnar <mingo@elte.hu>
CC: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <4CD3396D.1090308@windriver.com>
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
include/linux/hw_breakpoint.h
kernel/hw_breakpoint.c
kernel/perf_event.c