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

[PATCH 2/3][4.16?] VT-d: fix reduced page table levels support when sharing tables


  • To: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Jan Beulich <jbeulich@xxxxxxxx>
  • Date: Tue, 9 Nov 2021 15:57:30 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=suse.com; dmarc=pass action=none header.from=suse.com; dkim=pass header.d=suse.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=0XXmDRcbmhNSOz+3m8n+EWENufFamtBOLA4E8m778Yc=; b=W/W8BrsZsaQyCVRRzqgxM97D47wWoOf7liHvAswQ11W4Ttt+ZkUj6yiOApS81VTtdfeLIsz5mcGHn0h6VgeDNda3eDdyzoLHYF+LVi76Yvt0RsBHSg/IlS2r5442Ns4NMoChjv0y9GcWzelZNAxdeIjGITzpxOmiIRQ0YqGfrXoDPoihq07Hzjm9LZNKPZN2Y9GJlj0/ZjcUhXItlmDGV24tibL9Hk8QeyBphnD8I+46aycVpOQzsxbOApNORfSfhV3nVnug4J8lBGLo1HFCSNujgI9OSSIH7IVAWWOa18zsirSBtKfiGvUoywLMXVG7hI7BiWyjYu5ZoprH27L4Bg==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MPcW05CP4itgA8lCOnYATYYmQ2E9r1OfUgBe+QJjv53E2mNxP3tQyHsJqpGPV183zh2GyJJABGDcw/CyrDqpPPZZhc9ThjlqKGE5Zs76JeoIx1WSMNw2Je6B/rwSiaHUKqEeMda0FEZJsGWkXHLD2N6I3FZCuYmzO6JW1P0EqOiMunspll2Jg85Oj3HnuzAc8C9wPUALg/tZM621Ln/QgMYwcAfr/+ORrmK3lUXYvjgkNKnOPGL5NQA1gp+WwZxjzDwD6TYJ9u/E6j1DAzDBm6R282jVDTQAUhf4ig5Htt4QveLJVjTUS9L7QmRZBoTrecZZzOL/sNQGdrQmeeu6JA==
  • Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=suse.com;
  • Cc: Kevin Tian <kevin.tian@xxxxxxxxx>, Paul Durrant <paul@xxxxxxx>, Ian Jackson <ian.jackson@xxxxxxxxxx>
  • Delivery-date: Tue, 09 Nov 2021 14:57:37 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

domain_pgd_maddr() contains logic to adjust the root address to be put
in the context entry in case 4-level page tables aren't supported by an
IOMMU. This logic may not be bypassed when sharing page tables.

Fixes: 25ccd093425c ("iommu: remove the share_p2m operation")
Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx>

--- a/xen/drivers/passthrough/vtd/iommu.c
+++ b/xen/drivers/passthrough/vtd/iommu.c
@@ -340,19 +340,21 @@ static uint64_t domain_pgd_maddr(struct
     {
         pagetable_t pgt = p2m_get_pagetable(p2m_get_hostp2m(d));
 
-        return pagetable_get_paddr(pgt);
+        pgd_maddr = pagetable_get_paddr(pgt);
     }
-
-    if ( !hd->arch.vtd.pgd_maddr )
+    else
     {
-        /* Ensure we have pagetables allocated down to leaf PTE. */
-        addr_to_dma_page_maddr(d, 0, 1);
-
         if ( !hd->arch.vtd.pgd_maddr )
-            return 0;
-    }
+        {
+            /* Ensure we have pagetables allocated down to leaf PTE. */
+            addr_to_dma_page_maddr(d, 0, 1);
 
-    pgd_maddr = hd->arch.vtd.pgd_maddr;
+            if ( !hd->arch.vtd.pgd_maddr )
+                return 0;
+        }
+
+        pgd_maddr = hd->arch.vtd.pgd_maddr;
+    }
 
     /* Skip top levels of page tables for 2- and 3-level DRHDs. */
     for ( agaw = level_to_agaw(4);




 


Rackspace

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