kernel/debug: Make use of KGDB_REASON_NMI
Currently kernel never set KGDB_REASON_NMI. We do now, when we enter KGDB/KDB from an NMI. This is not to be confused with kgdb_nmicallback(), NMI callback is an entry for the slave CPUs during CPUs roundup, but REASON_NMI is the entry for the master CPU. Signed-off-by: Anton Vorontsov <anton.vorontsov@linaro.org> Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
This commit is contained in:
Родитель
07cd27bbd4
Коммит
b10d22d6e8
|
@ -12,6 +12,7 @@
|
||||||
#include <linux/kdb.h>
|
#include <linux/kdb.h>
|
||||||
#include <linux/kdebug.h>
|
#include <linux/kdebug.h>
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
|
#include <linux/hardirq.h>
|
||||||
#include "kdb_private.h"
|
#include "kdb_private.h"
|
||||||
#include "../debug_core.h"
|
#include "../debug_core.h"
|
||||||
|
|
||||||
|
@ -52,6 +53,9 @@ int kdb_stub(struct kgdb_state *ks)
|
||||||
if (atomic_read(&kgdb_setting_breakpoint))
|
if (atomic_read(&kgdb_setting_breakpoint))
|
||||||
reason = KDB_REASON_KEYBOARD;
|
reason = KDB_REASON_KEYBOARD;
|
||||||
|
|
||||||
|
if (in_nmi())
|
||||||
|
reason = KDB_REASON_NMI;
|
||||||
|
|
||||||
for (i = 0, bp = kdb_breakpoints; i < KDB_MAXBPT; i++, bp++) {
|
for (i = 0, bp = kdb_breakpoints; i < KDB_MAXBPT; i++, bp++) {
|
||||||
if ((bp->bp_enabled) && (bp->bp_addr == addr)) {
|
if ((bp->bp_enabled) && (bp->bp_addr == addr)) {
|
||||||
reason = KDB_REASON_BREAK;
|
reason = KDB_REASON_BREAK;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче