void arch_domain_destroy(struct domain *d) { p2m_teardown(d); domain_vgic_free(d); domain_vuart_free(d); free_xenheap_page(d->shared_info); }
void vmx_destroy_vmcs(struct vcpu *v) { struct arch_vmx_struct *arch_vmx = &v->arch.hvm_vmx; if ( arch_vmx->vmcs == NULL ) return; vmx_clear_vmcs(v); vmx_free_vmcs(arch_vmx->vmcs); arch_vmx->vmcs = NULL; free_xenheap_page(v->arch.hvm_vmx.host_msr_area); v->arch.hvm_vmx.host_msr_area = NULL; free_xenheap_page(v->arch.hvm_vmx.msr_area); v->arch.hvm_vmx.msr_area = NULL; free_xenheap_page(v->arch.hvm_vmx.msr_bitmap); v->arch.hvm_vmx.msr_bitmap = NULL; }
void arch_domain_destroy(struct domain *d) { /* IOMMU page table is shared with P2M, always call * iommu_domain_destroy() before p2m_teardown(). */ iommu_domain_destroy(d); p2m_teardown(d); domain_vgic_free(d); domain_vuart_free(d); free_xenheap_page(d->shared_info); }
void arch_domain_destroy(struct domain *d) { /* IOMMU page table is shared with P2M, always call * iommu_domain_destroy() before p2m_teardown(). */ iommu_domain_destroy(d); p2m_teardown(d); domain_vgic_free(d); domain_vuart_free(d); free_xenheap_page(d->shared_info); #ifdef CONFIG_ACPI free_xenheap_pages(d->arch.efi_acpi_table, get_order_from_bytes(d->arch.efi_acpi_len)); #endif domain_io_free(d); }
static void vmx_free_vmcs(struct vmcs_struct *vmcs) { free_xenheap_page(vmcs); }
void free_vcpu_struct(struct vcpu *v) { free_xenheap_page(v); }
void free_domain_struct(struct domain *d) { xfree(d->arch.grant_table_gpfn); free_xenheap_page(d); }
void free_vmcb(struct vmcb_struct *vmcb) { free_xenheap_page(vmcb); }