[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen master] mm: ensure useful progress in decrease_reservation



commit 79de2d31f1ff8910231b7ec15519405953e6571a
Author:     Wei Liu <wei.liu2@xxxxxxxxxx>
AuthorDate: Fri Feb 28 17:35:15 2014 +0100
Commit:     Jan Beulich <jbeulich@xxxxxxxx>
CommitDate: Fri Feb 28 17:35:15 2014 +0100

    mm: ensure useful progress in decrease_reservation
    
    During my fun time playing with balloon driver I found that hypervisor's
    preemption check kept decrease_reservation from doing any useful work
    for 32 bit guests, resulting in hanging the guests.
    
    As Andrew suggested, we can force the check to fail for the first
    iteration to ensure progress. We did this in d3a55d7d9 "x86/mm: Ensure
    useful progress in alloc_l2_table()" already.
    
    After this change I cannot see the hang caused by continuation logic
    anymore.
    
    Signed-off-by: Wei Liu <wei.liu2@xxxxxxxxxx>
    Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>
    Acked-by: Keir Fraser <keir@xxxxxxx>
---
 xen/common/memory.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/xen/common/memory.c b/xen/common/memory.c
index 5a0efd5..9d0d32e 100644
--- a/xen/common/memory.c
+++ b/xen/common/memory.c
@@ -268,7 +268,7 @@ static void decrease_reservation(struct memop_args *a)
 
     for ( i = a->nr_done; i < a->nr_extents; i++ )
     {
-        if ( hypercall_preempt_check() )
+        if ( hypercall_preempt_check() && i != a->nr_done )
         {
             a->preempted = 1;
             goto out;
--
generated by git-patchbot for /home/xen/git/xen.git#master

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.