Merge tag 'kgdb-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux
Pull kgdb updates from Daniel Thompson: "Mostly clean ups although while Doug's was chasing down a odd lockdep warning he also did some work to improved debugger resilience when some CPUs fail to respond to the round up request. The main changes are: - Fixing a lockdep warning on architectures that cannot use an NMI for the round up plus related changes to make CPU round up and all CPU backtrace more resilient. - Constify the arch ops tables - A couple of other small clean ups Two of the three patchsets here include changes that spill over into arch/. Changes in the arch space are relatively narrow in scope (and directly related to kgdb). Didn't get comprehensive acks but all impacted maintainers were Cc:ed in good time" * tag 'kgdb-4.21-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/danielt/linux: kgdb/treewide: constify struct kgdb_arch arch_kgdb_ops mips/kgdb: prepare arch_kgdb_ops for constness kdb: use bool for binary state indicators kdb: Don't back trace on a cpu that didn't round up kgdb: Don't round up a CPU that failed rounding up before kgdb: Fix kgdb_roundup_cpus() for arches who used smp_call_function() kgdb: Remove irq flags from roundup
This commit is contained in:
@@ -207,7 +207,7 @@ void arch_kgdb_breakpoint(void)
|
||||
".set\treorder");
|
||||
}
|
||||
|
||||
static void kgdb_call_nmi_hook(void *ignored)
|
||||
void kgdb_call_nmi_hook(void *ignored)
|
||||
{
|
||||
mm_segment_t old_fs;
|
||||
|
||||
@@ -219,13 +219,6 @@ static void kgdb_call_nmi_hook(void *ignored)
|
||||
set_fs(old_fs);
|
||||
}
|
||||
|
||||
void kgdb_roundup_cpus(unsigned long flags)
|
||||
{
|
||||
local_irq_enable();
|
||||
smp_call_function(kgdb_call_nmi_hook, NULL, 0);
|
||||
local_irq_disable();
|
||||
}
|
||||
|
||||
static int compute_signal(int tt)
|
||||
{
|
||||
struct hard_trap_info *ht;
|
||||
@@ -394,18 +387,16 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code,
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct kgdb_arch arch_kgdb_ops;
|
||||
const struct kgdb_arch arch_kgdb_ops = {
|
||||
#ifdef CONFIG_CPU_BIG_ENDIAN
|
||||
.gdb_bpt_instr = { spec_op << 2, 0x00, 0x00, break_op },
|
||||
#else
|
||||
.gdb_bpt_instr = { break_op, 0x00, 0x00, spec_op << 2 },
|
||||
#endif
|
||||
};
|
||||
|
||||
int kgdb_arch_init(void)
|
||||
{
|
||||
union mips_instruction insn = {
|
||||
.r_format = {
|
||||
.opcode = spec_op,
|
||||
.func = break_op,
|
||||
}
|
||||
};
|
||||
memcpy(arch_kgdb_ops.gdb_bpt_instr, insn.byte, BREAK_INSTR_SIZE);
|
||||
|
||||
register_die_notifier(&kgdb_notifier);
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user