[xen-3.2-testing] x86: Fix teardown of relocated vcpu_info structures.

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

[xen-3.2-testing] x86: Fix teardown of relocated vcpu_info structures.

Xen patchbot-3.2-testing
# HG changeset patch
# User Keir Fraser <[hidden email]>
# Date 1212308964 -3600
# Node ID 0b5bd01884070054e12817a36b5fc071009011e4
# Parent  27351129428a63b0b4ed6e96255af18806b3d9f9
x86: Fix teardown of relocated vcpu_info structures.
Signed-off-by: Keir Fraser <[hidden email]>
xen-unstable changeset:   17761:85fa199b4b7b
xen-unstable date:        Sun Jun 01 09:16:26 2008 +0100
---
 xen/arch/x86/domain.c |   19 +++++++++----------
 1 files changed, 9 insertions(+), 10 deletions(-)

diff -r 27351129428a -r 0b5bd0188407 xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c Fri May 30 16:48:03 2008 +0100
+++ b/xen/arch/x86/domain.c Sun Jun 01 09:29:24 2008 +0100
@@ -55,8 +55,6 @@ DEFINE_PER_CPU(u64, efer);
 DEFINE_PER_CPU(u64, efer);
 DEFINE_PER_CPU(unsigned long, cr4);
 
-static void unmap_vcpu_info(struct vcpu *v);
-
 static void paravirt_ctxt_switch_from(struct vcpu *v);
 static void paravirt_ctxt_switch_to(struct vcpu *v);
 
@@ -429,8 +427,6 @@ void vcpu_destroy(struct vcpu *v)
 {
     if ( is_pv_32on64_vcpu(v) )
         release_compat_l4(v);
-
-    unmap_vcpu_info(v);
 
     if ( is_hvm_vcpu(v) )
         hvm_vcpu_destroy(v);
@@ -1816,16 +1812,19 @@ int domain_relinquish_resources(struct d
         /* Tear down paging-assistance stuff. */
         paging_teardown(d);
 
-        /* Drop the in-use references to page-table bases. */
         for_each_vcpu ( d, v )
+        {
+            /* Drop the in-use references to page-table bases. */
             vcpu_destroy_pagetables(v);
 
-        /*
-         * Relinquish GDT mappings. No need for explicit unmapping of the LDT
-         * as it automatically gets squashed when the guest's mappings go away.
-         */
-        for_each_vcpu(d, v)
+            /*
+             * Relinquish GDT mappings. No need for explicit unmapping of the
+             * LDT as it automatically gets squashed with the guest mappings.
+             */
             destroy_gdt(v);
+
+            unmap_vcpu_info(v);
+        }
 
         d->arch.relmem = RELMEM_xen_l4;
         /* fallthrough */

_______________________________________________
Xen-changelog mailing list
[hidden email]
http://lists.xensource.com/xen-changelog