[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Xen-devel] [PATCH] AMD-Vi: allocate root table on demand
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 <jbeulich@xxxxxxxx>
--- 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@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|