[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v4 02/10] IOMMU: handle IOMMU mapping and unmapping failures
>>> On 13.05.16 at 10:04, <quan.xu@xxxxxxxxx> wrote: > On May 12, 2016 11:06 PM, Jan Beulich <JBeulich@xxxxxxxx> wrote: >> >>> On 12.05.16 at 16:28, <quan.xu@xxxxxxxxx> wrote: >> > On May 10, 2016 2:54 PM, Jan Beulich <JBeulich@xxxxxxxx> wrote: >> >> >>> On 10.05.16 at 05:41, <quan.xu@xxxxxxxxx> wrote: >> >> > On May 10, 2016 12:14 AM, Jan Beulich <JBeulich@xxxxxxxx> wrote: >> >> >> >>> On 06.05.16 at 10:54, <quan.xu@xxxxxxxxx> wrote: > Try it again, I hope I have got it. If not, could you write some sample code > for me as an exception? :) Well, this would be acceptable (albeit not ideal) to me as a first cut (and instead of continuing this apparently fruitless discussion I'd then see to provide a follow-up patch improving it), but won't (I'm afraid) please Kevin: You now again don't log anything for DomU-s. That's one half of the "not ideal" part; the other is that of two far apart events for Dom0, only the first one would get logged. In any event there's stylistic cleanup necessary: > --- a/xen/drivers/passthrough/iommu.c > +++ b/xen/drivers/passthrough/iommu.c > @@ -240,21 +240,63 @@ int iommu_map_page(struct domain *d, unsigned long gfn, > unsigned long mfn, > unsigned int flags) > { > const struct domain_iommu *hd = dom_iommu(d); > + static int printed = 0; This doesn't need an initializer, should be bool_t, and should get moved ... > + 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 ( unlikely(rc) ) > + { > + if ( is_hardware_domain(d) ) > + { ... here. > + if ( !printed ) > + { > + printk(XENLOG_ERR > + "d%d: IOMMU mapping gfn %#lx mfn %#lx failed %d.", > + d->domain_id, gfn, mfn, rc); > + > + printed = 1; > + } > + } > + else > + domain_crash(d); > + } What I think might at least come close to what Kevin and I would like to see is something like if ( !d->is_shutting_down && printk_ratelimit() ) printk(...); if ( !is_hardware_domain(d) ) domain_crash(d); For Dom0 that'll still be more verbose than we'd really like, but it at least wouldn't outright flood the console. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |