* [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well
@ 2013-02-27 3:04 Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 1/6] powerpc/book3e: load critical/machine/debug exception stack Tiejun Chen
` (6 more replies)
0 siblings, 7 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:04 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev
This patchset is used to support kgdb/gdb on book3e.
Validated on p4080ds and p5040ds with test single step and breakpoint
v3:
* make work when enable CONFIG_RELOCATABLE
* fix one typo in patch,
"powerpc/book3e: store critical/machine/debug exception thread info":
ld r1,PACAKSAVE(r13);
-> ld r14,PACAKSAVE(r13);
* remove copying the thread_info since booke and book3e always copy
the thead_info now when we enter the debug exception, and so drop
the v2 patch, "book3e/kgdb: Fix a single stgep case of lazy IRQ"
v2:
* Make sure we cover CONFIG_PPC_BOOK3E_64 safely
* Use LOAD_REG_IMMEDIATE() to load properly
the value of the constant expression in load debug exception stack
* Copy thread infor form the kernel stack coming from usr
* Rebase latest powerpc git tree
v1:
* Copy thread info only when we are from !user mode since we'll get kernel stack
coming from usr directly.
* remove save/restore EX_R14/EX_R15 since DBG_EXCEPTION_PROLOG already covered
this.
* use CURRENT_THREAD_INFO() conveniently to get thread.
* fix some typos
* add a patch to make sure gdb can generate a single step properly to invoke a
kgdb state.
* add a patch to if we need to replay an interrupt, we shouldn't restore that
previous backup thread info to make sure we can replay an interrupt lately
with a proper thread info.
* rebase latest powerpc git tree
v0:
This patchset is used to support kgdb for book3e.
------
Tiejun Chen (6):
powerpc/book3e: load critical/machine/debug exception stack
powerpc/book3e: store critical/machine/debug exception thread info
book3e/kgdb: update thread's dbcr0
powerpc/book3e: support kgdb for kernel space
kgdb/kgdbts: support ppc64
powerpc/kgdb: remove copying the thread_info
arch/powerpc/kernel/exceptions-64e.S | 69 ++++++++++++++++++++++++++++++++--
arch/powerpc/kernel/kgdb.c | 41 +++++---------------
drivers/misc/kgdbts.c | 2 +
3 files changed, 77 insertions(+), 35 deletions(-)
Tiejun
^ permalink raw reply [flat|nested] 9+ messages in thread
* [v3][PATCH 1/6] powerpc/book3e: load critical/machine/debug exception stack
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
@ 2013-02-27 3:04 ` Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 2/6] powerpc/book3e: store critical/machine/debug exception thread info Tiejun Chen
` (5 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:04 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev
We always alloc critical/machine/debug check exceptions. This is
different from the normal exception. So we should load these exception
stack properly like we did for booke.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
arch/powerpc/kernel/exceptions-64e.S | 49 +++++++++++++++++++++++++++++++---
1 file changed, 46 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
index 1e7782b..7fd6af0 100644
--- a/arch/powerpc/kernel/exceptions-64e.S
+++ b/arch/powerpc/kernel/exceptions-64e.S
@@ -36,6 +36,37 @@
*/
#define SPECIAL_EXC_FRAME_SIZE INT_FRAME_SIZE
+/* only on book3e */
+#define DBG_STACK_BASE dbgirq_ctx
+#define MC_STACK_BASE mcheckirq_ctx
+#define CRIT_STACK_BASE critirq_ctx
+
+#ifdef CONFIG_RELOCATABLE
+#define LOAD_STACK_BASE(reg, level) \
+ tovirt(r2,r2); \
+ LOAD_REG_ADDR(reg, level##_STACK_BASE);
+#else
+#define LOAD_STACK_BASE(reg, level) \
+ LOAD_REG_IMMEDIATE(reg, level##_STACK_BASE);
+#endif
+
+#ifdef CONFIG_SMP
+#define BOOK3E_LOAD_EXC_LEVEL_STACK(level) \
+ mfspr r14,SPRN_PIR; \
+ slwi r14,r14,3; \
+ LOAD_STACK_BASE(r10, level); \
+ add r10,r10,r14; \
+ ld r10,0(r10); \
+ addi r10,r10,THREAD_SIZE; \
+ std r10,PACA_##level##_STACK(r13);
+#else
+#define BOOK3E_LOAD_EXC_LEVEL_STACK(level) \
+ LOAD_STACK_BASE(r10, level); \
+ ld r10,0(r10); \
+ addi r10,r10,THREAD_SIZE; \
+ std r10,PACA_##level##_STACK(r13);
+#endif
+
/* Exception prolog code for all exceptions */
#define EXCEPTION_PROLOG(n, intnum, type, addition) \
mtspr SPRN_SPRG_##type##_SCRATCH,r13; /* get spare registers */ \
@@ -68,20 +99,32 @@
#define SPRN_GDBELL_SRR1 SPRN_GSRR1
#define CRIT_SET_KSTACK \
+ andi. r10,r11,MSR_PR; \
+ bne 1f; \
+ BOOK3E_LOAD_EXC_LEVEL_STACK(CRIT); \
ld r1,PACA_CRIT_STACK(r13); \
- subi r1,r1,SPECIAL_EXC_FRAME_SIZE;
+ subi r1,r1,SPECIAL_EXC_FRAME_SIZE; \
+1:
#define SPRN_CRIT_SRR0 SPRN_CSRR0
#define SPRN_CRIT_SRR1 SPRN_CSRR1
#define DBG_SET_KSTACK \
+ andi. r10,r11,MSR_PR; \
+ bne 1f; \
+ BOOK3E_LOAD_EXC_LEVEL_STACK(DBG); \
ld r1,PACA_DBG_STACK(r13); \
- subi r1,r1,SPECIAL_EXC_FRAME_SIZE;
+ subi r1,r1,SPECIAL_EXC_FRAME_SIZE; \
+1:
#define SPRN_DBG_SRR0 SPRN_DSRR0
#define SPRN_DBG_SRR1 SPRN_DSRR1
#define MC_SET_KSTACK \
+ andi. r10,r11,MSR_PR; \
+ bne 1f; \
+ BOOK3E_LOAD_EXC_LEVEL_STACK(MC); \
ld r1,PACA_MC_STACK(r13); \
- subi r1,r1,SPECIAL_EXC_FRAME_SIZE;
+ subi r1,r1,SPECIAL_EXC_FRAME_SIZE; \
+1:
#define SPRN_MC_SRR0 SPRN_MCSRR0
#define SPRN_MC_SRR1 SPRN_MCSRR1
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [v3][PATCH 2/6] powerpc/book3e: store critical/machine/debug exception thread info
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 1/6] powerpc/book3e: load critical/machine/debug exception stack Tiejun Chen
@ 2013-02-27 3:04 ` Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 3/6] book3e/kgdb: update thread's dbcr0 Tiejun Chen
` (4 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:04 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev
We need to store thread info to these exception thread info like something
we already did for PPC32.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
arch/powerpc/kernel/exceptions-64e.S | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
index 7fd6af0..7df9a1f 100644
--- a/arch/powerpc/kernel/exceptions-64e.S
+++ b/arch/powerpc/kernel/exceptions-64e.S
@@ -67,6 +67,18 @@
std r10,PACA_##level##_STACK(r13);
#endif
+/* Store something to exception thread info */
+#define BOOK3E_STORE_EXC_LEVEL_THEAD_INFO(type) \
+ ld r14,PACAKSAVE(r13); \
+ CURRENT_THREAD_INFO(r14, r14); \
+ CURRENT_THREAD_INFO(r15, r1); \
+ ld r10,TI_FLAGS(r14); \
+ std r10,TI_FLAGS(r15); \
+ ld r10,TI_PREEMPT(r14); \
+ std r10,TI_PREEMPT(r15); \
+ ld r10,TI_TASK(r14); \
+ std r10,TI_TASK(r15);
+
/* Exception prolog code for all exceptions */
#define EXCEPTION_PROLOG(n, intnum, type, addition) \
mtspr SPRN_SPRG_##type##_SCRATCH,r13; /* get spare registers */ \
@@ -104,6 +116,7 @@
BOOK3E_LOAD_EXC_LEVEL_STACK(CRIT); \
ld r1,PACA_CRIT_STACK(r13); \
subi r1,r1,SPECIAL_EXC_FRAME_SIZE; \
+ BOOK3E_STORE_EXC_LEVEL_THEAD_INFO(CRIT); \
1:
#define SPRN_CRIT_SRR0 SPRN_CSRR0
#define SPRN_CRIT_SRR1 SPRN_CSRR1
@@ -114,6 +127,7 @@
BOOK3E_LOAD_EXC_LEVEL_STACK(DBG); \
ld r1,PACA_DBG_STACK(r13); \
subi r1,r1,SPECIAL_EXC_FRAME_SIZE; \
+ BOOK3E_STORE_EXC_LEVEL_THEAD_INFO(DBG); \
1:
#define SPRN_DBG_SRR0 SPRN_DSRR0
#define SPRN_DBG_SRR1 SPRN_DSRR1
@@ -124,6 +138,7 @@
BOOK3E_LOAD_EXC_LEVEL_STACK(MC); \
ld r1,PACA_MC_STACK(r13); \
subi r1,r1,SPECIAL_EXC_FRAME_SIZE; \
+ BOOK3E_STORE_EXC_LEVEL_THEAD_INFO(MC); \
1:
#define SPRN_MC_SRR0 SPRN_MCSRR0
#define SPRN_MC_SRR1 SPRN_MCSRR1
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [v3][PATCH 3/6] book3e/kgdb: update thread's dbcr0
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 1/6] powerpc/book3e: load critical/machine/debug exception stack Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 2/6] powerpc/book3e: store critical/machine/debug exception thread info Tiejun Chen
@ 2013-02-27 3:04 ` Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 4/6] powerpc/book3e: support kgdb for kernel space Tiejun Chen
` (3 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:04 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev
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.
So here we also update thread's dbcr0 to make sure the current
can go back with that missed dbcr0 configuration.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
arch/powerpc/kernel/kgdb.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c
index 5ca82cd..1a57307 100644
--- a/arch/powerpc/kernel/kgdb.c
+++ b/arch/powerpc/kernel/kgdb.c
@@ -410,7 +410,7 @@ int kgdb_arch_handle_exception(int vector, int signo, int err_code,
struct pt_regs *linux_regs)
{
char *ptr = &remcom_in_buffer[1];
- unsigned long addr;
+ unsigned long addr, dbcr0;
switch (remcom_in_buffer[0]) {
/*
@@ -427,8 +427,15 @@ 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] == 's') {
#ifdef CONFIG_PPC_ADV_DEBUG_REGS
- mtspr(SPRN_DBCR0,
- mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM);
+ dbcr0 = mfspr(SPRN_DBCR0) | DBCR0_IC | DBCR0_IDM;
+ mtspr(SPRN_DBCR0, dbcr0);
+#ifdef 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 = dbcr0;
+#endif
linux_regs->msr |= MSR_DE;
#else
linux_regs->msr |= MSR_SE;
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [v3][PATCH 4/6] powerpc/book3e: support kgdb for kernel space
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
` (2 preceding siblings ...)
2013-02-27 3:04 ` [v3][PATCH 3/6] book3e/kgdb: update thread's dbcr0 Tiejun Chen
@ 2013-02-27 3:04 ` Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 5/6] kgdb/kgdbts: support ppc64 Tiejun Chen
` (2 subsequent siblings)
6 siblings, 0 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:04 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev
Currently we need to skip this for supporting KGDB.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
arch/powerpc/kernel/exceptions-64e.S | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
index 7df9a1f..800e2a3 100644
--- a/arch/powerpc/kernel/exceptions-64e.S
+++ b/arch/powerpc/kernel/exceptions-64e.S
@@ -598,11 +598,14 @@ kernel_dbg_exc:
rfdi
/* Normal debug exception */
+1:
+#ifndef CONFIG_KGDB
/* XXX We only handle coming from userspace for now since we can't
* quite save properly an interrupted kernel state yet
*/
-1: andi. r14,r11,MSR_PR; /* check for userspace again */
+ andi. r14,r11,MSR_PR; /* check for userspace again */
beq kernel_dbg_exc; /* if from kernel mode */
+#endif
/* Now we mash up things to make it look like we are coming on a
* normal exception
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [v3][PATCH 5/6] kgdb/kgdbts: support ppc64
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
` (3 preceding siblings ...)
2013-02-27 3:04 ` [v3][PATCH 4/6] powerpc/book3e: support kgdb for kernel space Tiejun Chen
@ 2013-02-27 3:04 ` Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 6/6] powerpc/kgdb: remove copying the thread_info Tiejun Chen
2013-02-27 3:09 ` [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well tiejun.chen
6 siblings, 0 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:04 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev
We can't look up the address of the entry point of the function simply
via that function symbol for all architectures.
For PPC64 ABI, actually there is a function descriptors structure.
A function descriptor is a three doubleword data structure that contains
the following values:
* The first doubleword contains the address of the entry point of
the function.
* The second doubleword contains the TOC base address for
the function.
* The third doubleword contains the environment pointer for
languages such as Pascal and PL/1.
So we should call a wapperred dereference_function_descriptor() to get
the address of the entry point of the function.
Note this is also safe for other architecture after refer to
"include/asm-generic/sections.h" since:
dereference_function_descriptor(p) always is (p) if without arched definition.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
drivers/misc/kgdbts.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
index 3aa9a96..4799e1f 100644
--- a/drivers/misc/kgdbts.c
+++ b/drivers/misc/kgdbts.c
@@ -103,6 +103,7 @@
#include <linux/delay.h>
#include <linux/kthread.h>
#include <linux/module.h>
+#include <asm/sections.h>
#define v1printk(a...) do { \
if (verbose) \
@@ -222,6 +223,7 @@ static unsigned long lookup_addr(char *arg)
addr = (unsigned long)do_fork;
else if (!strcmp(arg, "hw_break_val"))
addr = (unsigned long)&hw_break_val;
+ addr = (unsigned long )dereference_function_descriptor((void *)addr);
return addr;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* [v3][PATCH 6/6] powerpc/kgdb: remove copying the thread_info
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
` (4 preceding siblings ...)
2013-02-27 3:04 ` [v3][PATCH 5/6] kgdb/kgdbts: support ppc64 Tiejun Chen
@ 2013-02-27 3:04 ` Tiejun Chen
2013-02-27 3:09 ` [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well tiejun.chen
6 siblings, 0 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:04 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev
Currently BookE and Book3E always copy the thread_info from
the kernel stack when we enter the debug exception, so we can
remove these action here to avoid copying again.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
arch/powerpc/kernel/kgdb.c | 28 ----------------------------
1 file changed, 28 deletions(-)
diff --git a/arch/powerpc/kernel/kgdb.c b/arch/powerpc/kernel/kgdb.c
index 1a57307..e954888 100644
--- a/arch/powerpc/kernel/kgdb.c
+++ b/arch/powerpc/kernel/kgdb.c
@@ -153,39 +153,11 @@ static int kgdb_handle_breakpoint(struct pt_regs *regs)
static int kgdb_singlestep(struct pt_regs *regs)
{
- struct thread_info *thread_info, *exception_thread_info;
- struct thread_info *backup_current_thread_info;
-
if (user_mode(regs))
return 0;
- backup_current_thread_info = (struct thread_info *)kmalloc(sizeof(struct thread_info), GFP_KERNEL);
- /*
- * On Book E and perhaps other processors, singlestep is handled on
- * the critical exception stack. This causes current_thread_info()
- * to fail, since it it locates the thread_info by masking off
- * the low bits of the current stack pointer. We work around
- * this issue by copying the thread_info from the kernel stack
- * before calling kgdb_handle_exception, and copying it back
- * afterwards. On most processors the copy is avoided since
- * exception_thread_info == thread_info.
- */
- thread_info = (struct thread_info *)(regs->gpr[1] & ~(THREAD_SIZE-1));
- exception_thread_info = current_thread_info();
-
- if (thread_info != exception_thread_info) {
- /* Save the original current_thread_info. */
- memcpy(backup_current_thread_info, exception_thread_info, sizeof *thread_info);
- memcpy(exception_thread_info, thread_info, sizeof *thread_info);
- }
-
kgdb_handle_exception(0, SIGTRAP, 0, regs);
- if (thread_info != exception_thread_info)
- /* Restore current_thread_info lastly. */
- memcpy(exception_thread_info, backup_current_thread_info, sizeof *thread_info);
-
- kfree(backup_current_thread_info);
return 1;
}
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
` (5 preceding siblings ...)
2013-02-27 3:04 ` [v3][PATCH 6/6] powerpc/kgdb: remove copying the thread_info Tiejun Chen
@ 2013-02-27 3:09 ` tiejun.chen
6 siblings, 0 replies; 9+ messages in thread
From: tiejun.chen @ 2013-02-27 3:09 UTC (permalink / raw)
To: Tiejun Chen; +Cc: linuxppc-dev
On 02/27/2013 11:04 AM, Tiejun Chen wrote:
> This patchset is used to support kgdb/gdb on book3e.
>
> Validated on p4080ds and p5040ds with test single step and breakpoint
Please ignore this thread since looks I'm missing to CC Jason :(
Tiejun
>
> v3:
>
> * make work when enable CONFIG_RELOCATABLE
> * fix one typo in patch,
> "powerpc/book3e: store critical/machine/debug exception thread info":
> ld r1,PACAKSAVE(r13);
> -> ld r14,PACAKSAVE(r13);
> * remove copying the thread_info since booke and book3e always copy
> the thead_info now when we enter the debug exception, and so drop
> the v2 patch, "book3e/kgdb: Fix a single stgep case of lazy IRQ"
>
> v2:
>
> * Make sure we cover CONFIG_PPC_BOOK3E_64 safely
> * Use LOAD_REG_IMMEDIATE() to load properly
> the value of the constant expression in load debug exception stack
> * Copy thread infor form the kernel stack coming from usr
> * Rebase latest powerpc git tree
>
> v1:
> * Copy thread info only when we are from !user mode since we'll get kernel stack
> coming from usr directly.
> * remove save/restore EX_R14/EX_R15 since DBG_EXCEPTION_PROLOG already covered
> this.
> * use CURRENT_THREAD_INFO() conveniently to get thread.
> * fix some typos
> * add a patch to make sure gdb can generate a single step properly to invoke a
> kgdb state.
> * add a patch to if we need to replay an interrupt, we shouldn't restore that
> previous backup thread info to make sure we can replay an interrupt lately
> with a proper thread info.
> * rebase latest powerpc git tree
>
> v0:
> This patchset is used to support kgdb for book3e.
>
> ------
> Tiejun Chen (6):
> powerpc/book3e: load critical/machine/debug exception stack
> powerpc/book3e: store critical/machine/debug exception thread info
> book3e/kgdb: update thread's dbcr0
> powerpc/book3e: support kgdb for kernel space
> kgdb/kgdbts: support ppc64
> powerpc/kgdb: remove copying the thread_info
>
> arch/powerpc/kernel/exceptions-64e.S | 69 ++++++++++++++++++++++++++++++++--
> arch/powerpc/kernel/kgdb.c | 41 +++++---------------
> drivers/misc/kgdbts.c | 2 +
> 3 files changed, 77 insertions(+), 35 deletions(-)
>
> Tiejun
> _______________________________________________
> Linuxppc-dev mailing list
> Linuxppc-dev@lists.ozlabs.org
> https://lists.ozlabs.org/listinfo/linuxppc-dev
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* [v3][PATCH 4/6] powerpc/book3e: support kgdb for kernel space
2013-02-27 3:09 Tiejun Chen
@ 2013-02-27 3:09 ` Tiejun Chen
0 siblings, 0 replies; 9+ messages in thread
From: Tiejun Chen @ 2013-02-27 3:09 UTC (permalink / raw)
To: benh, galak; +Cc: linuxppc-dev, linux-kernel, jason.wessel
Currently we need to skip this for supporting KGDB.
Signed-off-by: Tiejun Chen <tiejun.chen@windriver.com>
---
arch/powerpc/kernel/exceptions-64e.S | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/exceptions-64e.S b/arch/powerpc/kernel/exceptions-64e.S
index 7df9a1f..800e2a3 100644
--- a/arch/powerpc/kernel/exceptions-64e.S
+++ b/arch/powerpc/kernel/exceptions-64e.S
@@ -598,11 +598,14 @@ kernel_dbg_exc:
rfdi
/* Normal debug exception */
+1:
+#ifndef CONFIG_KGDB
/* XXX We only handle coming from userspace for now since we can't
* quite save properly an interrupted kernel state yet
*/
-1: andi. r14,r11,MSR_PR; /* check for userspace again */
+ andi. r14,r11,MSR_PR; /* check for userspace again */
beq kernel_dbg_exc; /* if from kernel mode */
+#endif
/* Now we mash up things to make it look like we are coming on a
* normal exception
--
1.7.9.5
^ permalink raw reply related [flat|nested] 9+ messages in thread
end of thread, other threads:[~2013-02-27 3:09 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-27 3:04 [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 1/6] powerpc/book3e: load critical/machine/debug exception stack Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 2/6] powerpc/book3e: store critical/machine/debug exception thread info Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 3/6] book3e/kgdb: update thread's dbcr0 Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 4/6] powerpc/book3e: support kgdb for kernel space Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 5/6] kgdb/kgdbts: support ppc64 Tiejun Chen
2013-02-27 3:04 ` [v3][PATCH 6/6] powerpc/kgdb: remove copying the thread_info Tiejun Chen
2013-02-27 3:09 ` [v3][PATCH 0/6] powerpc/book3e: make kgdb to work well tiejun.chen
-- strict thread matches above, loose matches on Subject: below --
2013-02-27 3:09 Tiejun Chen
2013-02-27 3:09 ` [v3][PATCH 4/6] powerpc/book3e: support kgdb for kernel space Tiejun Chen
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).