@@ -126,13 +126,15 @@ int p2m_init(struct domain *d)
return rc;
}
- rc = p2m_init_altp2m(d);
- if ( rc )
+ if ( hvm_altp2m_supported() )
{
- p2m_teardown_hostp2m(d);
- p2m_teardown_nestedp2m(d);
+ rc = p2m_init_altp2m(d);
+ if ( rc )
+ {
+ p2m_teardown_hostp2m(d);
+ p2m_teardown_nestedp2m(d);
+ }
}
-
return rc;
}
@@ -195,11 +197,12 @@ void p2m_final_teardown(struct domain *d)
{
if ( is_hvm_domain(d) )
{
+ if ( hvm_altp2m_supported() )
+ p2m_teardown_altp2m(d);
/*
- * We must tear down both of them unconditionally because
- * we initialise them unconditionally.
+ * We must tear down nestedp2m unconditionally because
+ * we initialise it unconditionally.
*/
- p2m_teardown_altp2m(d);
p2m_teardown_nestedp2m(d);
}
Initialize and bring down altp2m only when it is supported by the platform, i.e. VMX. The puspose of that is the possiblity to disable VMX support and exclude its code from the build completely. Signed-off-by: Sergiy Kibrik <Sergiy_Kibrik@epam.com> --- xen/arch/x86/mm/p2m-basic.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-)