|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 1/1] xen:vtd: missing RMRR mapping while share EPT
On 2014/7/23 23:42, Jan Beulich wrote: On 23.07.14 at 11:35, <tiejun.chen@xxxxxxxxx> wrote:intel_iommu_map_page() does nothing if VT-d shares EPT page table. So rmrr_identity_mapping() never create RMRR mapping but in some cases like some GFX drivers it still need to access RMRR. Here we will create those RMRR mappings even in shared EPT case.Technically this is fine, but there are mechanical issues: Its useful to debug as I think, but if you insist on this point, I'm fine to remove this as well. And if you're convinced we need it, please use %#lx instead of 0x%lx. Okay.
Are you saying this thing?
if ()
{
}
So what about this?
@@ -1867,7 +1869,21 @@ static int rmrr_identity_mapping(struct domain *d,
while ( base_pfn < end_pfn )
{
- if ( intel_iommu_map_page(d, base_pfn, base_pfn,
+ if ( iommu_use_hap_pt(d) )
+ {
+ dprintk(XENLOG_DEBUG VTDPREFIX,
+ "Set RMRR mapping: pfn:%#lx mfn:%#lx.\n",
+ base_pfn, mfn_x(_mfn(base_pfn)));
+ p2m_lock(p2m);
+ if ( p2m_set_entry(p2m, base_pfn, _mfn(base_pfn),
PAGE_ORDER_4K,
+ p2m_mmio_direct, p2m_access_rw) )
+ {
+ p2m_unlock(p2m);
+ return -1;
+ }
+ p2m_unlock(p2m);
+ }
+ else if ( intel_iommu_map_page(d, base_pfn, base_pfn,
IOMMUF_readable|IOMMUF_writable) )
return -1;
base_pfn++;
Thanks
Tiejun
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |