Re: [v1][PATCH 3/6] book3e/kgdb: update thread's dbcr0
From: Kumar Gala <hidden>
Date: 2012-12-20 18:42:09
Also in:
lkml
On Dec 20, 2012, at 3:08 AM, Tiejun Chen wrote:
quoted hunk ↗ jump to hunk
gdb always need to generate a single step properly to invoke a kgdb state. But with lazy interrupt, book3e can't always trigger a debug exception with a single step since the current is blocked for handling those pending exception, then we miss that expected dbcr configuration at last to generate a debug exception. =20 So here we also update thread's dbcr0 to make sure the current can go back with that missed dbcr0 configuration. =20 Signed-off-by: Tiejun Chen <redacted> --- arch/powerpc/kernel/kgdb.c | 10 ++++++++++ 1 file changed, 10 insertions(+) =20diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c index c470a40..516b44b 100644 --- a/arch/powerpc/kernel/kgdb.c +++ b/arch/powerpc/kernel/kgdb.c@@ -426,8 +426,18 @@ int kgdb_arch_handle_exception(int vector, int =
signo, int err_code,
/* set the trace bit if we're stepping */
if (remcom_in_buffer[0] =3D=3D 's') {
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
+#ifdef CONFIG_PPC_BOOK3EShould this really be CONFIG_PPC64 or CONFIG_PPC_BOOK3E_64?
+ /* With lazy interrut we have to update thread =
dbcr0 here
+ * to make sure we can set debug properly at =
last to invoke
+ * kgdb again to work well. + */ + current->thread.dbcr0 =3D + mfspr(SPRN_DBCR0) | DBCR0_IC | =
DBCR0_IDM;
+ mtspr(SPRN_DBCR0, current->thread.dbcr0); +#else mtspr(SPRN_DBCR0, mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM); +#endif
Can we code this so we don't need the #else?
linux_regs->msr |=3D MSR_DE; #else linux_regs->msr |=3D MSR_SE; --=20 1.7.9.5 =20 -- To unsubscribe from this list: send the line "unsubscribe =
linux-kernel" in
the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/