[xen stable-4.10] x86/pv: Fix the handing of writes to %dr7

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[xen stable-4.10] x86/pv: Fix the handing of writes to %dr7

patchbot
commit afece29fe90d3bb2b63a8c6d76094d7aee6d73f7
Author:     Andrew Cooper <[hidden email]>
AuthorDate: Fri Apr 13 16:18:21 2018 +0200
Commit:     Jan Beulich <[hidden email]>
CommitDate: Fri Apr 13 16:18:21 2018 +0200

    x86/pv: Fix the handing of writes to %dr7
   
    c/s 65e35549 "x86/PV: support data breakpoint extension registers"
    accidentally broke the handing of writes.  The call to activate_debugregs()
    doesn't write %dr7 as v->arch.debugreg[7] hasn't been updated yet, and the
    break skips the intended write to %dr7.
   
    Remove the break, causing execution to hit the write_debugreg(7, value); in
    context at the bottom of the hunk, which in turn causes hardware to be updated
    appropriately.
   
    Signed-off-by: Andrew Cooper <[hidden email]>
    Reviewed-by: Jan Beulich <[hidden email]>
    master commit: adf8feba1afa040f3a84a82953e18af02060884a
    master date: 2018-03-29 15:12:21 +0100
---
 xen/arch/x86/traps.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)

diff --git a/xen/arch/x86/traps.c b/xen/arch/x86/traps.c
index b93a29cbe1..906124331b 100644
--- a/xen/arch/x86/traps.c
+++ b/xen/arch/x86/traps.c
@@ -2060,14 +2060,11 @@ long set_debugreg(struct vcpu *v, unsigned int reg, unsigned long value)
             /*
              * If DR7 was previously clear then we need to load all other
              * debug registers at this point as they were not restored during
-             * context switch.
+             * context switch.  Updating DR7 itself happens later.
              */
             if ( (v == curr) &&
                  !(v->arch.debugreg[7] & DR7_ACTIVE_MASK) )
-            {
                 activate_debugregs(v);
-                break;
-            }
         }
         if ( v == curr )
             write_debugreg(7, value);
--
generated by git-patchbot for /home/xen/git/xen.git#stable-4.10

_______________________________________________
Xen-changelog mailing list
[hidden email]
https://lists.xenproject.org/xen-changelog