From: "Xu, Quan" <quan.xu@intel.com>
To: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: "Tian, Kevin" <kevin.tian@intel.com>,
"Wu, Feng" <feng.wu@intel.com>,
"dario.faggioli@citrix.com" <dario.faggioli@citrix.com>,
"jbeulich@suse.com" <jbeulich@suse.com>,
"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>
Subject: Re: [PATCH v8 1/3] VT-d: Reduce spin timeout to 1ms, which can be boot-time changed
Date: Mon, 28 Mar 2016 06:27:21 +0000 [thread overview]
Message-ID: <945CA011AD5F084CBEA3E851C0AB28894B86D26A@SHSMSX101.ccr.corp.intel.com> (raw)
In-Reply-To: <20160325200639.GF14689@char.us.oracle.com>
On March 26, 2016 4:07am, Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> wrote:
> On Thu, Mar 24, 2016 at 01:57:58PM +0800, Quan Xu wrote:
>
> Hey!
>
> Thanks for the patch!
>
> I see that you have __must_check..
>
> But if you check the callchain:
>
> iommu_flush_iec_[index|global] ->
> __iommu_flush_iec->invalidate_sync-> queue_invalidate_wait
>
> you will see that the callers of iommu_flush_iec_[index|global] ignore the
> return value.
>
> So ... perhaps you could explain in this commit description on how to address
> that?
I mentioned it in 0000-cover-letter.patch -- "Not covered in this series:".
IMO, it is not a good idea to explain in this commit description, as I don't touch it.
Right?
> Is there an followup patch (if so just put in the name in here) to address
> that?
>
Yes,
> Or should the top callers: enable_intremap, ioapic_rte_to_remap_entry,
> free_remap_entry, msi_msg_to_remap_entry, and pi_update_irte do
> something?
>
I'd prefer to discuss about it in another thread. btw, I have spent a lot of time on
Interrupt research, including the logical topology of interrupt hardware/software, .e.g, lapci/vlapic/ioapic/vioapic/msi/PI.
In last months, I wondered whether I could disable the interrupt remapping dynamically( by 'iommu_intremap = 0') or not.
Now I think it would be insecure.
IMO, it is not a good time to discuss this new topic, otherwise it makes me exhausted.
Quan
> I guess the 'free_remap_entry' reall can't. As you are suppose to always be able
> to free something.
>
>
> msi_msg_to_remap_entry, _msg_to_remap_entry, and
> ioapic_rte_to_remap_entry could return an value... Or considering this is v8 -
> was there some epic conversation that went over this quite a lot? In which case
> I would recommend you say why it was not attempted this way so that folks six
> months from now when reading this patch won't ask again.
>
>
> > Signed-off-by: Quan Xu <quan.xu@intel.com>
> > ---
> > docs/misc/xen-command-line.markdown | 7 +++++++
> > xen/drivers/passthrough/vtd/qinval.c | 17 ++++++++++++-----
> > 2 files changed, 19 insertions(+), 5 deletions(-)
> >
> > diff --git a/docs/misc/xen-command-line.markdown
> > b/docs/misc/xen-command-line.markdown
> > index ca77e3b..384dde7 100644
> > --- a/docs/misc/xen-command-line.markdown
> > +++ b/docs/misc/xen-command-line.markdown
> > @@ -1532,6 +1532,13 @@ Note that if **watchdog** option is also
> specified vpmu will be turned off.
> > As the virtualisation is not 100% safe, don't use the vpmu flag on
> > production systems (see http://xenbits.xen.org/xsa/advisory-163.html)!
> >
> > +### vtd\_qi\_timeout (VT-d)
> > +> `= <integer>`
> > +
> > +> Default: `1`
> > +
> > +Specify the timeout of the VT-d Queued Invalidation in milliseconds.
> > +
> > ### watchdog
> > > `= force | <boolean>`
> >
> > diff --git a/xen/drivers/passthrough/vtd/qinval.c
> > b/xen/drivers/passthrough/vtd/qinval.c
> > index b81b0bd..52ba2c2 100644
> > --- a/xen/drivers/passthrough/vtd/qinval.c
> > +++ b/xen/drivers/passthrough/vtd/qinval.c
> > @@ -28,6 +28,11 @@
> > #include "vtd.h"
> > #include "extern.h"
> >
> > +static unsigned int __read_mostly vtd_qi_timeout = 1;
> > +integer_param("vtd_qi_timeout", vtd_qi_timeout);
> > +
> > +#define IOMMU_QI_TIMEOUT (vtd_qi_timeout * MILLISECS(1))
> > +
> > static void print_qi_regs(struct iommu *iommu) {
> > u64 val;
> > @@ -130,10 +135,10 @@ static void queue_invalidate_iotlb(struct iommu
> *iommu,
> > spin_unlock_irqrestore(&iommu->register_lock, flags); }
> >
> > -static int queue_invalidate_wait(struct iommu *iommu,
> > +static int __must_check queue_invalidate_wait(struct iommu *iommu,
> > u8 iflag, u8 sw, u8 fn)
> > {
> > - s_time_t start_time;
> > + s_time_t timeout;
> > volatile u32 poll_slot = QINVAL_STAT_INIT;
> > unsigned int index;
> > unsigned long flags;
> > @@ -164,13 +169,15 @@ static int queue_invalidate_wait(struct iommu
> *iommu,
> > if ( sw )
> > {
> > /* In case all wait descriptor writes to same addr with same data
> */
> > - start_time = NOW();
> > + timeout = NOW() + IOMMU_QI_TIMEOUT;
> > while ( poll_slot != QINVAL_STAT_DONE )
> > {
> > - if ( NOW() > (start_time + DMAR_OPERATION_TIMEOUT) )
> > + if ( NOW() > timeout )
> > {
> > print_qi_regs(iommu);
> > - panic("queue invalidate wait descriptor was not
> executed");
> > + printk(XENLOG_WARNING VTDPREFIX
> > + "Queue invalidate wait descriptor timed
> out.\n");
> > + return -ETIMEDOUT;
> > }
> > cpu_relax();
> > }
> > --
> > 1.9.1
> >
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@lists.xen.org
> > http://lists.xen.org/xen-devel
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel
next prev parent reply other threads:[~2016-03-28 6:27 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-24 5:57 [PATCH v8 0/3] VT-d Device-TLB flush issue Quan Xu
2016-03-24 5:57 ` [PATCH v8 2/3] VT-d: Wrap a _sync version for all VT-d flush interfaces Quan Xu
2016-03-24 13:56 ` Dario Faggioli
2016-03-24 15:06 ` Dario Faggioli
2016-03-25 3:11 ` Xu, Quan
2016-03-24 5:57 ` [PATCH v8 1/3] VT-d: Reduce spin timeout to 1ms, which can be boot-time changed Quan Xu
2016-03-24 11:04 ` Dario Faggioli
2016-03-24 11:28 ` Xu, Quan
2016-03-25 20:06 ` Konrad Rzeszutek Wilk
2016-03-28 6:27 ` Xu, Quan [this message]
2016-03-28 13:31 ` Konrad Rzeszutek Wilk
2016-04-01 15:03 ` Xu, Quan
2016-03-24 5:57 ` [PATCH v8 3/3] VT-d: Fix vt-d Device-TLB flush timeout issue Quan Xu
2016-03-24 15:38 ` Dario Faggioli
2016-03-25 3:43 ` Xu, Quan
2016-03-25 20:40 ` Konrad Rzeszutek Wilk
2016-03-28 3:44 ` Xu, Quan
2016-03-28 7:45 ` Xu, Quan
2016-03-25 20:31 ` Konrad Rzeszutek Wilk
2016-03-28 3:56 ` Xu, Quan
2016-03-28 14:11 ` Konrad Rzeszutek Wilk
2016-03-29 1:32 ` Xu, Quan
2016-03-29 14:20 ` Konrad Rzeszutek Wilk
2016-03-29 14:32 ` Xu, Quan
2016-03-24 10:33 ` [PATCH v8 0/3] VT-d Device-TLB flush issue Jan Beulich
2016-03-24 11:11 ` Xu, Quan
2016-04-01 14:47 ` 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=945CA011AD5F084CBEA3E851C0AB28894B86D26A@SHSMSX101.ccr.corp.intel.com \
--to=quan.xu@intel.com \
--cc=dario.faggioli@citrix.com \
--cc=feng.wu@intel.com \
--cc=jbeulich@suse.com \
--cc=kevin.tian@intel.com \
--cc=konrad.wilk@oracle.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).