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);
if ( is_pv_32on64_vcpu(v) )
release_compat_l4(v);
- unmap_vcpu_info(v);
-
if ( is_hvm_vcpu(v) )
hvm_vcpu_destroy(v);
}
/* 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 */