All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for 4.6] VT-d: Create IOMMU mappings for RMRR regions if shared EPT is not being used
@ 2015-08-26 15:49 Malcolm Crossley
  2015-08-27  2:59 ` Chen, Tiejun
  2015-08-27  9:13 ` Jan Beulich
  0 siblings, 2 replies; 7+ messages in thread
From: Malcolm Crossley @ 2015-08-26 15:49 UTC (permalink / raw)
  To: xen-devel; +Cc: yang.z.zhang, kevin.tian, Malcolm Crossley, JBeulich

Add RMRR 1:1 IOMMU mappings to IOMMU page tables if EPT page table are not being
shared with the IOMMU.

This is a regression in behaviour versus Xen 4.5.

Signed-off-by: Malcolm Crossley <malcolm.crossley@citrix.com>
---
 xen/drivers/passthrough/vtd/iommu.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)

diff --git a/xen/drivers/passthrough/vtd/iommu.c b/xen/drivers/passthrough/vtd/iommu.c
index 836aed5..89de741 100644
--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -1839,8 +1839,16 @@ static int rmrr_identity_mapping(struct domain *d, bool_t map,
 
             while ( base_pfn < end_pfn )
             {
-                if ( clear_identity_p2m_entry(d, base_pfn) )
-                    ret = -ENXIO;
+                if ( iommu_use_hap_pt(d) )
+                {
+                    if ( clear_identity_p2m_entry(d, base_pfn) )
+                            ret = -ENXIO;
+                }
+                else
+                {
+                    if ( intel_iommu_unmap_page(d, base_pfn) )
+                        ret = -ENXIO;
+                }
                 base_pfn++;
             }
 
@@ -1855,7 +1863,16 @@ static int rmrr_identity_mapping(struct domain *d, bool_t map,
 
     while ( base_pfn < end_pfn )
     {
-        int err = set_identity_p2m_entry(d, base_pfn, p2m_access_rw, flag);
+        int err;
+        if ( iommu_use_hap_pt(d) )
+        {
+            err = set_identity_p2m_entry(d, base_pfn, p2m_access_rw, flag);
+        }
+        else
+        {
+            err = intel_iommu_map_page(d, base_pfn, base_pfn,
+                                       IOMMUF_readable|IOMMUF_writable);
+        }
 
         if ( err )
             return err;
-- 
1.7.12.4

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-08-28  2:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-26 15:49 [PATCH for 4.6] VT-d: Create IOMMU mappings for RMRR regions if shared EPT is not being used Malcolm Crossley
2015-08-27  2:59 ` Chen, Tiejun
2015-08-27  8:40   ` Malcolm Crossley
2015-08-27  9:05     ` Chen, Tiejun
2015-08-27  9:14       ` Jan Beulich
2015-08-28  2:03       ` Tian, Kevin
2015-08-27  9:13 ` Jan Beulich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.