Patchwork bookehv: Handle debug exception on guest exit

login
register
mail settings
Submitter Stuart Yoder
Date April 11, 2013, 6:44 p.m.
Message ID <CALRxmdDpwpy=SERuVe4JzUQz=vQYFrcydB7MaAF8KbYKWT5U-A@mail.gmail.com>
Download mbox | patch
Permalink /patch/235870/
State New
Headers show

Comments

Stuart Yoder - April 11, 2013, 6:44 p.m.
So the patch should look something like this (on a 3.8 kernel):

--
To unsubscribe from this list: send the line "unsubscribe kvm-ppc" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Patch

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@h;       /* check if exception in vectors */   \
-       ori     r10,r10,KERNELBASE@l;                                         \
+       lis     r10,interrupt_base@h;   /* check if exception in vectors */   \
+       ori     r10,r10,interrupt_base@l;
        cmplw   r12,r10;                                                      \
        blt+    2f;                     /* addr below exception vectors */    \
                                                                              \
-       lis     r10,DebugDebug@h;                                             \
-       ori     r10,r10,DebugDebug@l;                                         \
+       lis     r10,interrupt_end@h;                                          \
+       ori     r10,r10,interrupt_end@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@h;       /* check if exception in vectors */   \
-       ori     r10,r10,KERNELBASE@l;                                         \
+       lis     r10,interrupt_base@h;   /* check if exception in vectors */   \
+       ori     r10,r10,interrupt_base@l;
        cmplw   r12,r10;                                                      \
        blt+    2f;                     /* addr below exception vectors */    \
                                                                              \
-       lis     r10,DebugCrit@h;                                              \
-       ori     r10,r10,DebugCrit@l;                                          \
+       lis     r10,interrupt_end@h;                                          \
+       ori     r10,r10,interrupt_end@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
  */