xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Roman Shaposhnik <roman@zededa.com>
To: "Roger Pau Monné" <roger.pau@citrix.com>
Cc: "jgross@suse.com" <jgross@suse.com>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	Paul Durrant <Paul.Durrant@citrix.com>,
	"jbeulich@suse.com" <jbeulich@suse.com>,
	"xen-devel@lists.xenproject.org" <xen-devel@lists.xenproject.org>,
	"boris.ostrovsky@oracle.com" <boris.ostrovsky@oracle.com>
Subject: Re: [Xen-devel] [BUG] After upgrade to Xen 4.12.0 iommu=no-igfx
Date: Tue, 13 Aug 2019 12:24:32 -0700	[thread overview]
Message-ID: <CAMmSBy_CfoRuJZjHT6bXk5zG5jeb8a6m7TK6+mAKtr+3TzS-Vw@mail.gmail.com> (raw)
In-Reply-To: <20190812085703.363a2xsypnacdpes@Air-de-Roger>

Hi Roger,

sorry for the delay -- I hope you will understand that I actually had
a good reason. See below:

On Mon, Aug 12, 2019 at 1:57 AM Roger Pau Monné <roger.pau@citrix.com> wrote:
>
> Ping?
>
> I know I've posted this quite recently, but have you been able to test
> the two proposed patches?
>
> ie: the one here and:
>
> https://lists.xenproject.org/archives/html/xen-devel/2019-08/msg00643.html
>
> I would like to figure out exactly what's going on and fix this
> properly.

Turns out this may actually be related to the BIOS version on these
boxes. I have
one with the BIOS build from 06/07/2018 and the other one is from 2017. So with
2 of your proposed patches -- we now have a 2x2 test matrix. The awful
part seems
to be that the behavior looks to be slightly different.

I need an extra day to summarize it all and I'll follow up quickly. It
just so far I lost
time trying to figure out while the same build would behave
differently on different
boxes only to find out that the BIOS is different (and the really
awful part is that
they both report as version 5.0.1.1 -- it is only when you look at the timestamp
of the build -- that's where you see them being different :-( ).

Thanks,
Roman.

> On Wed, Aug 07, 2019 at 09:35:34AM +0200, Roger Pau Monné wrote:
> > On Tue, Aug 06, 2019 at 02:48:51PM -0700, Roman Shaposhnik wrote:
> > > On Tue, Aug 6, 2019 at 9:18 AM Roger Pau Monné <roger.pau@citrix.com> wrote:
> > > >
> > > > On Fri, Aug 02, 2019 at 10:05:40AM +0200, Roger Pau Monné wrote:
> > > > > On Thu, Aug 01, 2019 at 11:25:04AM -0700, Roman Shaposhnik wrote:
> > > > > > This patch completely fixes the problem for me!
> > > > > >
> > > > > > Thanks Roger! I'd love to see this in Xen 4.13
> > > > >
> > > > > Thanks for testing!
> > > > >
> > > > > It's still not clear to me why the previous approach didn't work, but
> > > > > I think this patch is better because it removes the usage of
> > > > > {set/clear}_identity_p2m_entry from PV domains. I will submit this
> > > > > formally now.
> > > >
> > > > Sorry to bother again, but since we still don't understand why the
> > > > previous fix didn't work for you, and I can't reproduce this with my
> > > > hardware, could you give the attached patch a try?
> > >
> > > No worries -- and thanks for helping to get it over the finish line --
> > > this is much appreciated!
> > >
> > > I'm happy to say that this latest patch is also working just fine. So
> > > I guess this is the one that's going to land in Xen 4.13?
> >
> > No, not really, sorry this was still a debug patch.
> >
> > So I think the behaviour you are seeing can only be explained if the
> > IOMMU is already enabled by the firmware when booting into Xen, can
> > this be the case?
> >
> > I have a patch I would like you to try to confirm this, can you please
> > give it a spin and report back (ideally with the Xen boot log).
> >
> > Thanks, Roger.
> > ---8<---
> > diff --git a/xen/arch/x86/mm/p2m.c b/xen/arch/x86/mm/p2m.c
> > index fef97c82f6..3605614aaf 100644
> > --- a/xen/arch/x86/mm/p2m.c
> > +++ b/xen/arch/x86/mm/p2m.c
> > @@ -1341,7 +1341,7 @@ int set_identity_p2m_entry(struct domain *d, unsigned long gfn_l,
> >
> >      if ( !paging_mode_translate(p2m->domain) )
> >      {
> > -        if ( !need_iommu_pt_sync(d) )
> > +        if ( !has_iommu_pt(d) )
> >              return 0;
> >          return iommu_legacy_map(d, _dfn(gfn_l), _mfn(gfn_l), PAGE_ORDER_4K,
> >                                  IOMMUF_readable | IOMMUF_writable);
> > @@ -1432,7 +1432,7 @@ int clear_identity_p2m_entry(struct domain *d, unsigned long gfn_l)
> >
> >      if ( !paging_mode_translate(d) )
> >      {
> > -        if ( !need_iommu_pt_sync(d) )
> > +        if ( !has_iommu_pt(d) )
> >              return 0;
> >          return iommu_legacy_unmap(d, _dfn(gfn_l), PAGE_ORDER_4K);
> >      }
> > diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
> > index 5d72270c5b..9dd0ed7f63 100644
> > --- a/xen/drivers/passthrough/vtd/iommu.c
> > +++ b/xen/drivers/passthrough/vtd/iommu.c
> > @@ -2316,6 +2316,9 @@ static int __init vtd_setup(void)
> >       */
> >      for_each_drhd_unit ( drhd )
> >      {
> > +        unsigned long flags;
> > +        uint32_t val;
> > +
> >          iommu = drhd->iommu;
> >
> >          printk("Intel VT-d iommu %"PRIu32" supported page sizes: 4kB",
> > @@ -2351,6 +2354,22 @@ static int __init vtd_setup(void)
> >          if ( !vtd_ept_page_compatible(iommu) )
> >              iommu_hap_pt_share = 0;
> >
> > +        spin_lock_irqsave(&iommu->register_lock, flags);
> > +        val = dmar_readl(iommu->reg, DMAR_GSTS_REG);
> > +        /*
> > +         * TODO: needs to be revisited once Xen supports booting with an
> > +         * already enabled IOMMU.
> > +         */
> > +        if ( val & DMA_GSTS_TES )
> > +        {
> > +            printk(XENLOG_WARNING VTDPREFIX
> > +                   "IOMMU: DMA remapping already enabled, disabling it\n");
> > +            dmar_writel(iommu->reg, DMAR_GCMD_REG, val & ~DMA_GCMD_TE);
> > +            IOMMU_WAIT_OP(iommu, DMAR_GSTS_REG, dmar_readl,
> > +                          !(val & DMA_GSTS_TES), val);
> > +        }
> > +        spin_unlock_irqrestore(&iommu->register_lock, flags);
> > +
> >          ret = iommu_set_interrupt(drhd);
> >          if ( ret )
> >          {
> >
> >
> > _______________________________________________
> > Xen-devel mailing list
> > Xen-devel@lists.xenproject.org
> > https://lists.xenproject.org/mailman/listinfo/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel

  reply	other threads:[~2019-08-13 19:25 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-19 19:31 [Xen-devel] [BUG] After upgrade to Xen 4.12.0 iommu=no-igfx Roman Shaposhnik
2019-07-19 20:02 ` Roman Shaposhnik
2019-07-22  8:20   ` Paul Durrant
2019-07-22 11:48     ` Roger Pau Monné
2019-07-22 11:54       ` Paul Durrant
2019-07-22 13:48         ` Roger Pau Monné
2019-07-22 14:03           ` Paul Durrant
2019-07-22 14:39             ` Roger Pau Monné
2019-07-22 15:02               ` Paul Durrant
2019-07-22 15:21                 ` Roger Pau Monné
2019-07-22 23:36                   ` Roman Shaposhnik
2019-07-22 23:47                     ` Andrew Cooper
2019-07-23 17:32                       ` Roman Shaposhnik
2019-07-23 17:35                         ` Andrew Cooper
2019-07-23 17:48                           ` Roman Shaposhnik
2019-07-23 17:50                             ` Andrew Cooper
2019-07-23 17:58                               ` Roman Shaposhnik
2019-07-23 18:12                                 ` Andrew Cooper
2019-07-23 18:25                                   ` Roman Shaposhnik
2019-07-26  7:58                                     ` Jan Beulich
2019-07-30 17:56                                       ` Roman Shaposhnik
2019-07-31  8:34                                         ` Jan Beulich
2019-07-31  8:58                                           ` Andrew Cooper
2019-07-31  9:30                                             ` Jan Beulich
2019-07-31 19:37                                               ` Roman Shaposhnik
2019-07-24 12:00                                 ` Jan Beulich
2019-07-24 12:04                                   ` Jan Beulich
2019-07-24 11:23                         ` Andrew Cooper
2019-07-24 11:40                           ` Andrew Cooper
2019-07-24 14:11                         ` Roger Pau Monné
2019-07-26  0:47                           ` Roman Shaposhnik
2019-07-26  9:35                             ` Roger Pau Monné
2019-07-30  9:21                               ` Roger Pau Monné
2019-07-30 17:55                                 ` Roman Shaposhnik
2019-07-31  8:31                                   ` Jan Beulich
2019-07-31  8:36                                   ` Roger Pau Monné
2019-07-31  8:43                                     ` Roger Pau Monné
2019-07-31 19:35                                       ` Roman Shaposhnik
2019-07-31 19:46                                         ` Andrew Cooper
2019-07-31 21:03                                           ` Roman Shaposhnik
2019-08-01  8:15                                             ` Roger Pau Monné
2019-08-01 18:25                                               ` Roman Shaposhnik
2019-08-02  8:05                                                 ` Roger Pau Monné
2019-08-06 16:17                                                   ` Roger Pau Monné
2019-08-06 21:48                                                     ` Roman Shaposhnik
2019-08-07  7:08                                                       ` Jan Beulich
2019-08-07  9:57                                                         ` Roger Pau Monné
2019-08-07 10:03                                                           ` Jan Beulich
2019-08-07  7:35                                                       ` Roger Pau Monné
2019-08-07  8:31                                                         ` Jan Beulich
2019-08-07 10:17                                                           ` Roger Pau Monné
2019-08-12  8:57                                                         ` Roger Pau Monné
2019-08-13 19:24                                                           ` Roman Shaposhnik [this message]
2019-08-14  8:06                                                             ` Roger Pau Monné
2019-08-19  5:00                                                               ` Roman Shaposhnik
2019-08-19  8:16                                                                 ` Roger Pau Monné
2019-08-20  2:03                                                                   ` Roman Shaposhnik
2019-08-01  7:35                                           ` Jan Beulich
2019-07-31 19:30                                     ` Roman Shaposhnik
2019-08-01  8:45                                       ` Roger Pau Monné
2019-08-01 18:19                                         ` Roman Shaposhnik
2019-07-20 16:39 ` Andrew Cooper
2019-07-22  8:03   ` Paul Durrant
2019-07-24 17:42 ` Rich Persaud
2019-07-26  1:13   ` Roman Shaposhnik

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=CAMmSBy_CfoRuJZjHT6bXk5zG5jeb8a6m7TK6+mAKtr+3TzS-Vw@mail.gmail.com \
    --to=roman@zededa.com \
    --cc=Paul.Durrant@citrix.com \
    --cc=andrew.cooper3@citrix.com \
    --cc=boris.ostrovsky@oracle.com \
    --cc=jbeulich@suse.com \
    --cc=jgross@suse.com \
    --cc=roger.pau@citrix.com \
    --cc=xen-devel@lists.xenproject.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).