[PATCH] bookehv: Handle debug exception on guest exit

Stuart Yoder b08248 at gmail.com
Fri Apr 12 04:44:49 EST 2013


So the patch should look something like this (on a 3.8 kernel):

diff --git a/arch/powerpc/kernel/head_booke.h b/arch/powerpc/kernel/head_booke.h
index 5f051ee..92b675a 100644
--- a/arch/powerpc/kernel/head_booke.h
+++ b/arch/powerpc/kernel/head_booke.h
@@ -286,13 +286,13 @@ label:
        andis.  r10,r10,(DBSR_IC|DBSR_BT)@h;                                  \
        beq+    2f;                                                           \
                                                                              \
-       lis     r10,KERNELBASE at h;       /* check if exception in vectors */   \
-       ori     r10,r10,KERNELBASE at l;                                         \
+       lis     r10,interrupt_base at h;   /* check if exception in vectors */   \
+       ori     r10,r10,interrupt_base at l;
        cmplw   r12,r10;                                                      \
        blt+    2f;                     /* addr below exception vectors */    \
                                                                              \
-       lis     r10,DebugDebug at h;                                             \
-       ori     r10,r10,DebugDebug at l;                                         \
+       lis     r10,interrupt_end at h;                                          \
+       ori     r10,r10,interrupt_end at l;
        cmplw   r12,r10;                                                      \
        bgt+    2f;                     /* addr above exception vectors */    \
                                                                              \
@@ -339,13 +339,13 @@ label:
        andis.  r10,r10,(DBSR_IC|DBSR_BT)@h;                                  \
        beq+    2f;                                                           \
                                                                              \
-       lis     r10,KERNELBASE at h;       /* check if exception in vectors */   \
-       ori     r10,r10,KERNELBASE at l;                                         \
+       lis     r10,interrupt_base at h;   /* check if exception in vectors */   \
+       ori     r10,r10,interrupt_base at l;
        cmplw   r12,r10;                                                      \
        blt+    2f;                     /* addr below exception vectors */    \
                                                                              \
-       lis     r10,DebugCrit at h;                                              \
-       ori     r10,r10,DebugCrit at l;                                          \
+       lis     r10,interrupt_end at h;                                          \
+       ori     r10,r10,interrupt_end at l;
        cmplw   r12,r10;                                                      \
        bgt+    2f;                     /* addr above exception vectors */    \
                                                                              \


diff --git a/arch/powerpc/kernel/head_44x.S b/arch/powerpc/kernel/head_44x.S
index 7a2e5e4..97e2671 100644
--- a/arch/powerpc/kernel/head_44x.S
+++ b/arch/powerpc/kernel/head_44x.S
@@ -769,6 +769,8 @@ finish_tlb_load_47x:
         */
        DEBUG_CRIT_EXCEPTION

+interrupt_end:
+
 /*
  * Global functions
  */


diff --git a/arch/powerpc/kernel/head_fsl_booke.S b/arch/powerpc/kernel/head_fsl
index 58925b6..2c3e31d 100644
--- a/arch/powerpc/kernel/head_fsl_booke.S
+++ b/arch/powerpc/kernel/head_fsl_booke.S
@@ -605,6 +605,8 @@ END_FTR_SECTION_IFSET(CPU_FTR_EMB_HV)
        /* Embedded Hypervisor Privilege */
        EXCEPTION(0, HV_PRIV, Ehvpriv, unknown_exception, EXC_XFER_EE)

+interrupt_end:
+
 /*
  * Local functions
  */


More information about the Linuxppc-dev mailing list