[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH for 4.6] VT-d: Create IOMMU mappings for RMRR regions if shared EPT is not being used



This kind of issue is already gone.

https://www.mail-archive.com/xen-devel@xxxxxxxxxxxxx/msg32464.html

Thanks
Tiejun

On 8/26/2015 11:49 PM, Malcolm Crossley wrote:
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@xxxxxxxxxx>
---
  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;


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.