|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 02/10] IOMMU: handle IOMMU mapping and unmapping failures
On May 04, 2016 9:29 AM, Tian, Kevin <kevin.tian@xxxxxxxxx> wrote:
> > From: Quan Xu
> > Sent: Friday, April 29, 2016 5:25 PM
> >
> > Treat IOMMU mapping and unmapping failures as a fatal to the domain
> > (with the exception of the hardware domain).
> >
> > If IOMMU mapping and unmapping failed, crash the domain (with the
> > exception of the hardware domain) and propagate the error up to the
> > call trees.
> >
> > Signed-off-by: Quan Xu <quan.xu@xxxxxxxxx>
> > Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>
> >
> > CC: Jan Beulich <jbeulich@xxxxxxxx>
> > ---
> > xen/drivers/passthrough/iommu.c | 30 ++++++++++++++++++++++++++++--
> > 1 file changed, 28 insertions(+), 2 deletions(-)
> >
> > diff --git a/xen/drivers/passthrough/iommu.c
> > b/xen/drivers/passthrough/iommu.c index b64676f..a0003ac 100644
> > --- a/xen/drivers/passthrough/iommu.c
> > +++ b/xen/drivers/passthrough/iommu.c
> > @@ -243,21 +243,47 @@ int iommu_map_page(struct domain *d,
> unsigned
> > long gfn, unsigned long mfn,
> > unsigned int flags) {
> > struct hvm_iommu *hd = domain_hvm_iommu(d);
> > + int rc;
> >
> > if ( !iommu_enabled || !hd->platform_ops )
> > return 0;
> >
> > - return hd->platform_ops->map_page(d, gfn, mfn, flags);
> > + rc = hd->platform_ops->map_page(d, gfn, mfn, flags);
> > +
> > + if ( rc )
> > + {
> > + if ( is_hardware_domain(d) )
> > + printk(XENLOG_ERR
> > + "iommu_map_page: IOMMU mapping gfn %#lx mfn %#lx
> > + failed for
> > dom%d.",
> > + gfn, mfn, d->domain_id);
> > + else
> > + domain_crash(d);
> > + }
>
> It makes sense to print error messages for all domains, and then selectively
> crash domain:
>
> printk(XENLOG_ERR ...);
> if ( !is_hardware_domain(d) )
> domain_crash(d);
>
But Jan said,
..
if ( is_hardware_domain() )
printk();
else
domain_crash();
..
is the better approach.
I remain neutral for this point. I think this is not a technical problem, but a
matter of preference.
This gap is subject to preventing spamming the log.
For iommu_map_page(), I think Kevin's suggestion is better, much more
information for the crash domain,
And also won't spam the log as we stop mapping against any error.
For iommu_unmap_page(),IOMMU unmapping should perhaps continue despite an
error, in an attempt
to do best effort cleanup. Then, Kevin's suggestion may spam the log.
Quan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |