[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [BUG] After upgrade to Xen 4.12.0 iommu=no-igfx



On Tue, Aug 6, 2019 at 9:18 AM Roger Pau Monné <roger.pau@xxxxxxxxxx> 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?

Thanks,
Roman.

> AFAICT the only difference between the non-working version and the
> working version is the flush, so I've added it here.
>
> 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..9fd5c97be2 100644
> --- a/xen/drivers/passthrough/vtd/iommu.c
> +++ b/xen/drivers/passthrough/vtd/iommu.c
> @@ -2026,7 +2026,7 @@ static int rmrr_identity_mapping(struct domain *d, 
> bool_t map,
>      mrmrr->count = 1;
>      list_add_tail(&mrmrr->list, &hd->arch.mapped_rmrrs);
>
> -    return 0;
> +    return iommu_iotlb_flush_all(d, IOMMU_FLUSHF_added | 
> IOMMU_FLUSHF_modified);
>  }
>
>  static int intel_iommu_add_device(u8 devfn, struct pci_dev *pdev)
>

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

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.