[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [v6][PATCH 2/2] xen:vtd: missing RMRR mapping while share EPT
>>> On 19.09.14 at 03:20, <tiejun.chen@xxxxxxxxx> wrote: > On 2014/9/18 17:09, Jan Beulich wrote: >>>>> On 30.07.14 at 03:36, <tiejun.chen@xxxxxxxxx> wrote: >>> --- a/xen/drivers/passthrough/vtd/iommu.c >>> +++ b/xen/drivers/passthrough/vtd/iommu.c >>> @@ -1867,8 +1867,14 @@ static int rmrr_identity_mapping(struct domain *d, >>> >>> while ( base_pfn < end_pfn ) >>> { >>> - if ( intel_iommu_map_page(d, base_pfn, base_pfn, >>> - IOMMUF_readable|IOMMUF_writable) ) >>> + if ( iommu_use_hap_pt(d) ) >>> + { >>> + ASSERT(!iommu_passthrough || !is_hardware_domain(d)); >>> + if ( set_identity_p2m_entry(d, base_pfn) ) >>> + return -1; >>> + } >>> + else if ( intel_iommu_map_page(d, base_pfn, base_pfn, >>> + IOMMUF_readable|IOMMUF_writable) ) >>> return -1; >>> base_pfn++; >>> } >> >> So I gave this a try on the one box I have which exposes RMRRs >> (since those are for USB devices I also used your patch to drop >> the USB special casing as done in your later patch series, and I >> further had to fiddle with vtd_ept_page_compatible() in order to >> get page table sharing to actually work on that box [I'll send the >> resulting patch later]) - with the result that passing through an >> affected USB controller (as expected) doesn't work anymore. Which > > With or without these two patches, USB always can be passed through in > my platform. Note I'm using ubuntu as a Guest OS. > >> raises the question why the two patches alone would work at all. >> Could you please share information on the address ranges specified >> by the RMRR(s) in your case? I simply wonder whether things just > > (XEN) [VT-D]dmar.c:807: found ACPI_DMAR_RMRR: > (XEN) [VT-D]dmar.c:383: endpoint: 0000:00:14.0 > (XEN) [VT-D]dmar.c:676: RMRR region: base_addr ab805000 end_address > ab818fff > (XEN) [VT-D]dmar.c:807: found ACPI_DMAR_RMRR: > (XEN) [VT-D]dmar.c:383: endpoint: 0000:00:02.0 > (XEN) [VT-D]dmar.c:676: RMRR region: base_addr ad000000 end_address > af7fffff So how does passing through either of these work for a guest with 4Gb or more of memory assigned with just the original 2 patches (and with shared page tables)? There ought to be a collision detected when trying to do the identity mapping. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |