@@ -793,6 +793,11 @@ fail:
return rc;
}
+int arch_domain_teardown(struct domain *d)
+{
+ return 0;
+}
+
void arch_domain_destroy(struct domain *d)
{
/* IOMMU page table is shared with P2M, always call
@@ -888,6 +888,11 @@ int arch_domain_create(struct domain *d,
return rc;
}
+int arch_domain_teardown(struct domain *d)
+{
+ return 0;
+}
+
void arch_domain_destroy(struct domain *d)
{
if ( is_hvm_domain(d) )
@@ -439,6 +439,7 @@ static int domain_teardown(struct domain *d)
PROG_none,
PROG_gnttab_mappings,
PROG_vcpu_teardown,
+ PROG_arch_teardown,
PROG_done,
};
@@ -459,6 +460,11 @@ static int domain_teardown(struct domain *d)
return rc;
}
+ PROGRESS(arch_teardown):
+ rc = arch_domain_teardown(d);
+ if ( rc )
+ return rc;
+
PROGRESS(done):
break;
@@ -81,6 +81,7 @@ int arch_domain_create(struct domain *d,
struct xen_domctl_createdomain *config,
unsigned int flags);
+int arch_domain_teardown(struct domain *d);
void arch_domain_destroy(struct domain *d);
void arch_domain_shutdown(struct domain *d);
@@ -589,6 +589,7 @@ struct domain
*/
struct {
unsigned int val;
+ unsigned int arch_val;
struct vcpu *vcpu;
} teardown;