Hi Jan, Sorry for delay. Please seem my comment below.
On 3/3/17 21:29, Jan Beulich wrote:
This was my originally intended fix for the AMD side of XSA-207: There's no need to unconditionally allocate the root table, and with that there's then also no way to leak it when a guest has no devices assigned. Signed-off-by: Jan Beulich <jbeul...@suse.com> --- a/xen/drivers/passthrough/amd/iommu_map.c +++ b/xen/drivers/passthrough/amd/iommu_map.c @@ -636,11 +636,10 @@ int amd_iommu_map_page(struct domain *d, { bool_t need_flush = 0; struct domain_iommu *hd = dom_iommu(d); + int rc; unsigned long pt_mfn[7]; unsigned int merge_level; - BUG_ON( !hd->arch.root_table ); - if ( iommu_use_hap_pt(d) ) return 0; @@ -648,6 +647,13 @@ int amd_iommu_map_page(struct domain *d, spin_lock(&hd->arch.mapping_lock); + rc = amd_iommu_alloc_root(hd); + if ( rc ) + { + spin_unlock(&hd->arch.mapping_lock); + return rc;
Within function amd_iommu_map_page(), other failures seem to be calling AMD_IOMMU_DEBUG() with error message, then calling domain_crash(). Wouldn't this also be needed for this case as the only error returned is -ENOMEM. Thanks, Suravee _______________________________________________ Xen-devel mailing list Xen-devel@lists.xen.org https://lists.xen.org/xen-devel