From: "Xu, Quan" <quan.xu@intel.com>
To: Jan Beulich <JBeulich@suse.com>
Cc: "dario.faggioli@citrix.com" <dario.faggioli@citrix.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH v4 02/10] IOMMU: handle IOMMU mapping and unmapping failures
Date: Tue, 10 May 2016 07:53:53 +0000 [thread overview]
Message-ID: <945CA011AD5F084CBEA3E851C0AB28894B8ABBE4@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <5731A1A602000078000E9D65@prv-mh.provo.novell.com>
On May 10, 2016 2:54 PM, Jan Beulich <JBeulich@suse.com> wrote:
> >>> On 10.05.16 at 05:41, <quan.xu@intel.com> wrote:
> > On May 10, 2016 12:14 AM, Jan Beulich <JBeulich@suse.com> wrote:
> >> >>> On 06.05.16 at 10:54, <quan.xu@intel.com> wrote:
> >> > --- a/xen/drivers/passthrough/iommu.c
> >> > +++ b/xen/drivers/passthrough/iommu.c
> >> > @@ -240,21 +240,47 @@ int iommu_map_page(struct domain *d,
> >> unsigned long gfn, unsigned long mfn,
> >> > unsigned int flags) {
> >> > const struct domain_iommu *hd = dom_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 ( unlikely(rc) )
> >> > + {
> >> > + printk(XENLOG_ERR
> >> > + "iommu_map_page: IOMMU mapping gfn %#lx mfn %#lx
> >> > + failed for
> >> dom%d.",
> >> > + gfn, mfn, d->domain_id);
> >> > +
> >> > + if ( !is_hardware_domain(d) )
> >> > + domain_crash(d);
> >> > + }
> >>
> >> This still may spam the console in at least the case of Dom0.
> >
> > I am afraid we may need a minor trade-off. What about:
> >
> > dprintk(XENLOG_ERR, "...");
> >
> > to print out in debug mode.
>
> And be silent in non-debug mode? That's not what we want.
>
Without your below suggestion, this is really my best solution.
> >> For DomU I'd
> >> really expect you to state in the commit message why no spamming can
> >> occur (of course assuming it really can't, which I'm not convinced of).
> >>
> >
> > In this v4, I think we will still spam the console in extreme cases :(:(..
> >
> > For mapping:
> > + ret = iommu_map_page();
> > + if ( unlikely(ret) )
> > + {
> > + while ( i-- )
> > + iommu_unmap_page();
> > + }
> >
> > We'll stop map against any error and unmapping the previous mappings.
> > The extreme case is error for unmapping the previous mappings.
> >
> > Again -- I think dprintk is a better solution. Any suggestion?
>
> For DomU the solution seems quite obvious: Only log a message if the domain
> is not already marked crashed. For Dom0 you'll need to get a little more
> creative (but by leveraging the fact that there's only one in the system, this
> can't be too difficult a problem to solve:
> e.g. "manually" rate limit these messages - see printk_ratelimit() et al).
Amazing!!
As the comment said, printk_ratelimit() is lifted from Linux. referred to the Linux, __iiuc__ , I will fix this issue as below (a variant):
...
+ rc = hd->platform_ops->unmap_page(d, gfn);
+
+ if ( unlikely(rc) )
+ {
+ if ( printk_ratelimit() )
+ printk(XENLOG_ERR
+ "iommu_unmap_page: IOMMU unmapping gfn %#lx failed for dom%d.",
+ gfn, d->domain_id);
+
+ if ( !is_hardware_domain(d) )
+ domain_crash(d);
+ }
+
+ return rc;
...
Thanks!!
Quan
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-05-10 7:53 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-06 8:54 [PATCH v4 00/10] Check VT-d Device-TLB flush error Quan Xu
2016-05-06 8:54 ` [PATCH v4 01/10] vt-d: fix the IOMMU flush issue Quan Xu
2016-05-09 16:09 ` Jan Beulich
2016-05-12 7:50 ` Xu, Quan
2016-05-12 8:53 ` Jan Beulich
2016-05-12 13:29 ` Xu, Quan
2016-05-12 13:37 ` Jan Beulich
2016-05-12 13:43 ` Xu, Quan
2016-05-06 8:54 ` [PATCH v4 02/10] IOMMU: handle IOMMU mapping and unmapping failures Quan Xu
2016-05-09 16:13 ` Jan Beulich
2016-05-10 3:41 ` Xu, Quan
2016-05-10 6:53 ` Jan Beulich
2016-05-10 7:53 ` Xu, Quan [this message]
2016-05-10 8:02 ` Jan Beulich
2016-05-10 8:20 ` Xu, Quan
2016-05-10 8:26 ` Jan Beulich
2016-05-12 14:28 ` Xu, Quan
2016-05-12 15:06 ` Jan Beulich
2016-05-13 8:04 ` Xu, Quan
2016-05-13 9:08 ` Jan Beulich
2016-05-13 9:20 ` Xu, Quan
2016-05-06 8:54 ` [PATCH v4 03/10] IOMMU/MMU: enhance the call trees of IOMMU unmapping and mapping Quan Xu
2016-05-10 8:44 ` Jan Beulich
2016-05-10 14:45 ` George Dunlap
2016-05-10 14:59 ` George Dunlap
2016-05-11 2:26 ` Xu, Quan
2016-05-11 8:45 ` George Dunlap
2016-05-11 8:58 ` Xu, Quan
2016-05-10 15:02 ` Jan Beulich
2016-05-11 2:29 ` Xu, Quan
2016-05-11 3:39 ` Xu, Quan
2016-05-11 7:02 ` Jan Beulich
2016-05-06 8:54 ` [PATCH v4 04/10] vt-d: propagate IOMMU Device-TLB flush error up to IOMMU unmapping Quan Xu
2016-05-10 8:50 ` Jan Beulich
2016-05-11 3:49 ` Xu, Quan
2016-05-06 8:54 ` [PATCH v4 05/10] vt-d: propagate IOMMU Device-TLB flush error up to IOMMU mapping Quan Xu
2016-05-06 8:54 ` [PATCH v4 06/10] IOMMU/MMU: propagate IOMMU Device-TLB flush error up to iommu_iotlb_flush{, _all} (top level ones) Quan Xu
2016-05-10 9:04 ` Jan Beulich
2016-05-11 5:52 ` Xu, Quan
2016-05-06 8:54 ` [PATCH v4 07/10] IOMMU: propagate IOMMU Device-TLB flush error up to iommu_iotlb_flush{, _all} (leaf ones) Quan Xu
2016-05-10 9:06 ` Jan Beulich
2016-05-11 6:47 ` Xu, Quan
2016-05-11 7:06 ` Jan Beulich
2016-05-11 7:12 ` Xu, Quan
2016-05-11 7:16 ` Jan Beulich
2016-05-11 7:20 ` Xu, Quan
2016-05-11 7:37 ` Jan Beulich
2016-05-06 8:54 ` [PATCH v4 08/10] vt-d/ept: propagate IOMMU Device-TLB flush error up to EPT update Quan Xu
2016-05-10 9:09 ` Jan Beulich
2016-05-10 14:58 ` George Dunlap
2016-05-10 15:04 ` Jan Beulich
2016-05-11 7:25 ` Xu, Quan
2016-05-06 8:54 ` [PATCH v4 09/10] IOMMU: propagate IOMMU Device-TLB flush error up to IOMMU suspending Quan Xu
2016-05-10 9:24 ` Jan Beulich
2016-05-13 3:39 ` Xu, Quan
2016-05-13 6:16 ` Jan Beulich
2016-05-13 6:27 ` Xu, Quan
2016-05-06 8:54 ` [PATCH v4 10/10] vt-d: propagate error up to ME phantom function mapping and unmapping Quan Xu
2016-05-10 9:29 ` Jan Beulich
2016-05-11 8:35 ` Xu, Quan
2016-05-11 9:07 ` Jan Beulich
2016-05-12 5:16 ` Xu, Quan
2016-05-12 8:44 ` Jan Beulich
2016-05-12 9:02 ` Xu, Quan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=945CA011AD5F084CBEA3E851C0AB28894B8ABBE4@SHSMSX101.ccr.corp.intel.com \
--to=quan.xu@intel.com \
--cc=JBeulich@suse.com \
--cc=dario.faggioli@citrix.com \
--cc=kevin.tian@intel.com \
--cc=xen-devel@lists.xen.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).