[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
> -----Original Message----- > From: Roger Pau Monne <roger.pau@xxxxxxxxxx> > Sent: 22 July 2019 12:49 > To: Paul Durrant <Paul.Durrant@xxxxxxxxxx>; 'Roman Shaposhnik' > <roman@xxxxxxxxxx> > Cc: xen-devel@xxxxxxxxxxxxxxxxxxxx; jgross@xxxxxxxx; Andrew Cooper > <Andrew.Cooper3@xxxxxxxxxx>; > boris.ostrovsky@xxxxxxxxxx; jbeulich@xxxxxxxx > Subject: Re: [Xen-devel] [BUG] After upgrade to Xen 4.12.0 iommu=no-igfx > > On Mon, Jul 22, 2019 at 08:20:36AM +0000, Paul Durrant wrote: > > > -----Original Message----- > > [snip] > > > > (XEN) Domain heap initialised > > > > (XEN) ACPI: 32/64X FACS address mismatch in FADT - > > > > 8ce8ef80/0000000000000000, using 32 > > > > (XEN) IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-119 > > > > (XEN) Enabling APIC mode: Flat. Using 1 I/O APICs > > > > (XEN) [VT-D] RMRR address range 8d800000..8fffffff not in reserved > > > > memory; need "iommu_inclusive_mapping=1"? > > > > This is your problem. In versions prior to 4.11 (I think, and certainly > > 4.12) > iommu_inclusive_mapping used to default on, whereas now it appears to default > off. In most > circumstances this is fine because there is a new flag, iommu_hwdom_reserved, > which defaults on and > this makes sure that all e820 reserved regions are identity mapped (which > usually covers undeclared > RMRRs). You have the opposite problem... a declared RMRR which is not > reserved, so you will need > iommu_inclusive_mapping. > > I think there's a bug in the initialization of iommu for a PV dom0, > which leaves dom0 without rmrr entries. Can you try the patch below > and report whether it solves your issue? > > Thanks, Roger. > ---8<--- > diff --git a/xen/drivers/passthrough/iommu.c b/xen/drivers/passthrough/iommu.c > index 79ec6719f5..9d91f0d633 100644 > --- a/xen/drivers/passthrough/iommu.c > +++ b/xen/drivers/passthrough/iommu.c > @@ -185,7 +185,7 @@ void __hwdom_init iommu_hwdom_init(struct domain *d) > register_keyhandler('o', &iommu_dump_p2m_table, "dump iommu p2m table", > 0); > > hd->status = IOMMU_STATUS_initializing; > - hd->need_sync = iommu_hwdom_strict && !iommu_use_hap_pt(d); > + hd->need_sync = !iommu_use_hap_pt(d); But this is going to mean the if() below is true for non-strict dom0, which means it pointlessly maps the dom0 page list when hwdom_iommu_map() should have already mapped all conventional RAM. Paul > if ( need_iommu_pt_sync(d) ) > { > struct page_info *page; _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |