|
[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:44 PM, Jan Beulich <JBeulich@xxxxxxxx> wrote:
> >>> On 04.05.16 at 13:49, <quan.xu@xxxxxxxxx> wrote:
> > 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.
>
> Not exactly. All I complained about was that the Dom0 case went completely
> silently.
>
> > I remain neutral for this point. I think this is not a technical
> > problem, but a matter of preference.
>
> Indeed.
>
If no other suggestions, I'll take Kevin's suggestion as a final conclusion
for both iommu_map_page() and iommu_unmap_page().
Quan
> > 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.
>
> But I've always been saying that for multiple successive operations you
> shouldn't issue one message each.
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |