[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



Hi Roger!

With your patch (and build as a debug build) Xen crashes on boot
(which I guess was the point of your BUG_ON statement).

The log is attached

Thanks,
Roman.

On Wed, Jul 24, 2019 at 7:11 AM Roger Pau Monné <roger.pau@xxxxxxxxxx> wrote:
>
> On Tue, Jul 23, 2019 at 10:32:26AM -0700, Roman Shaposhnik wrote:
> > Hi Roger!
> >
> > I applied your patch, removed no-igfx and I still see the original
> > problem. Please let me know what other logs/debugs would you need at
> > this point.
>
> I'm not sure why you don't get the rmrrs added to the iommu page
> tables, AFAICT it works on my test box.
>
> I have a patch with extra debug messages and checks, could you give it
> a test, I'm attaching it below. Note that you don't need the previous
> patch, since it's already contained in the debug patch below.
>
> Please paste the Xen bootlog with the patch applied when your reply.
>
> Thank, 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 8b27d7e775..ea303b5d45 100644
> --- a/xen/drivers/passthrough/vtd/iommu.c
> +++ b/xen/drivers/passthrough/vtd/iommu.c
> @@ -2009,12 +2009,19 @@ static int rmrr_identity_mapping(struct domain *d, 
> bool_t map,
>      if ( !map )
>          return -ENOENT;
>
> +printk("<RMRR> mapping %#lx - %#lx\n", base_pfn, end_pfn);
>      while ( base_pfn < end_pfn )
>      {
>          int err = set_identity_p2m_entry(d, base_pfn, p2m_access_rw, flag);
> +        mfn_t mfn;
> +        unsigned int f;
>
>          if ( err )
>              return err;
> +BUG_ON(intel_iommu_lookup_page(d, _dfn(base_pfn), &mfn, &f));
> +BUG_ON(base_pfn != mfn_x(mfn));
> +BUG_ON(f != (IOMMUF_readable | IOMMUF_writable));
> +
>          base_pfn++;
>      }
>
> @@ -2263,6 +2270,7 @@ static void __hwdom_init setup_hwdom_rmrr(struct domain 
> *d)
>      u16 bdf;
>      int ret, i;
>
> +printk("<RMRR> setting up regions\n");
>      pcidevs_lock();
>      for_each_rmrr_device ( rmrr, bdf, i )
>      {
>

Attachment: xen-crash.txt
Description: Text document

_______________________________________________
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®.