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

[PATCH] tools/libxl: don't allow IOMMU usage with PoD


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Thu, 3 Feb 2022 12:06:51 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; 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=RGGgEMiYSdtDhYu8CkqWA9Ie6XCQvmc1RhXhlaBA9v0=; b=b5o6MUAZTIGuLHzPndR/QZsLPUdgvXicDZ4IXXAWQOkS35mluMr86kivUDiF5t5la726xZ6M+zRip/h9zR+eT4P6ZgKHHKo5c3J5jOwaG5WQQgYKRvZJ7GKgc6lyVh43w3lQOpWnvb9rAzNHk1nn7/QGKKAdpgdJKbuZxDa9wG6zYLE6CldFy58ERlctSi4P0hUHDyVOLYyULdFUaeXsm20T/8ENn84xQzwYuLpisYr/8DamxwqlflcBdxdJBdyjMSJ2kxDjhghvzeWDHtVPXVScgolqXC6SsEZi7ezrWx1Z74qMppv1WM0u2JAtx/IyCkqTaxBtU360bQNNyVgsHw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=aGfm22tRJLh7uxWz15Igp4jdVgPufhxyoHAjDl6NhV7G41fGMd/vsa9GCvRc51nKuDTHQDK6g0YyJ8vnfKNI6R/0TPzuTvwFX2TlG2uDh1sfP8XCKfcK33Yx0nEr1LQjCQZg7mq7vDm/WgTO+9sSAZ7R77gw+vBuGn9wUxVRer2Bn+Zm1H9MT1MA+27lm4MdVIZc2sRnJMBttff53qC6bajCpkQEHM80jywuMckwHVQmbPBYLkhruap3XUltodp1gsq6HLBQ6cDWj+kxtWYjdT8xBUwcLdq+3ddNV6CT+neLfbX3015Yi12YMZCTOF0Rh48tWgv+LSqlKk4KnREIPw==
  • Authentication-results: esa6.hc3370-68.iphmx.com; dkim=pass (signature verified) header.i=@citrix.onmicrosoft.com
  • Cc: Roger Pau Monne <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>, "Anthony PERARD" <anthony.perard@xxxxxxxxxx>, Juergen Gross <jgross@xxxxxxxx>, "Jan Beulich" <jbeulich@xxxxxxxx>
  • Delivery-date: Thu, 03 Feb 2022 11:07:17 +0000
  • Ironport-data: A9a23:U1GYPqOtYhc852nvrR1UkMFynXyQoLVcMsEvi/4bfWQNrUomgz1Un GNKC2CFbquON2D8KI0kOtni9RgB6sWAzt4xSQto+SlhQUwRpJueD7x1DKtR0wB+jCHnZBg6h ynLQoCYdKjYdpJYz/uUGuCJQUNUjMlkfZKhTr6UUsxNbVU8En1500o4w7dRbrNA2rBVPSvc4 bsenOWHULOV82Yc3rU8sv/rRLtH5ZweiRtA1rAMTakjUGz2zhH5OKk3N6CpR0YUd6EPdgKMq 0Qv+5nilo/R109F5tpICd8XeGVSKlLZFVDmZna7x8FOK/WNz8A/+v9TCRYSVatYo3KAw9Fby uxSjrHzTSA5L5zAqLgbczANRkmSPYUekFPGCX22sMjVxEzaaXr8hf5pCSnaP6VBpLwxWzsXs 6VFdnZdNXhvhMrvqF6/YvNrick5atHiIasUu216zCGfBvEjKXzGa/uRvoYGgWdq7ixINfbwS 8RAbydeVQWaUzBTNVEUGLV5hd790xETdBUH8QnI9MLb+VP7zgNr16P2GMHIYdHMTsJQ9m6ar G/b+2XyAjkBKceSjzGC9xqEluLJ2C/2Ro8WPLm57eJxxk2ewHQJDx8bXkf9puO24mahX/pPJ kpS/TAhxZXe72TyEIO7BUfh5ifZ4FhMALK8DtHW9inKw/bVyQSgGVMpDTpmeM0XuP9qQxwDg wrhc8zSORRjt7icSHS4/7iSrC+vNSV9EVLudRPoXiNevYC9/dhbYgbnC486TfXr1oGd9STYn mjSxBXSkYn/miLiO0+T2VncywyhqZHSJuLezlWGBzn1hu+ViWPMWmBJ1bQ5xasYRGp6ZgPY1 JThpyR4xLpVZX1qvHfVKNjh5Jnzu5643MT02DaD5aUJ+TW34GKEdotN+jx4L0oBGp9aJWS5O xKN5FIKu8Q70J6WgUlfOdnZ5yMClvCIKDgYfqqMMoomjmZZKGdrAx2ClWbPhjuwwSDAYIk0O IuBcNbEMJrpIf8P8dZCfM9EieVD7nlnnQv7HMmnpzz6j+b2TCPLGN8tbQvfBshkvfjsiFiEr L5i2z6ilk83vBvWOHeHqOb+7DkicBAGOHwBg5cGK7feclc6QzxJ5j246epJRrGJVp99z4/g1 nq8RlVZ2Bz4g3jGIh+NcXdtdPXkWpMXkJ7xFXdE0Y+A1ydxbICxwr0YcpdrL7Ar+PY6lax/T uUfetXGCfNKE2yV9zMYZJj7jYpjaBX02l7eY3v7OGAyL8x6WgjE2t74ZQ+zpiMAOTW66Jklq Lq62wKFHZdaH1Z+DNzbYe6Exk+quSRPg/p7WkbFe4EBeEjl/IVwBTb2i/s7f5MFJRnZn2PI3 AeKGxYI4+LKptZtotXOgKmFqaavEvd/QRUGTzWKs+7uOHCDrGS5wIJGXOKZRhznVTv5qPe4e OFY7/DgK/lbzlxEhJVxTuRwxqUk6tqx+7IDllZ4HG/GZkiAA697JiXUxtFGs6BAy+MLuQayX U7TqNBWNa/QZZHgGV8VYgEkcv6CxbcfnTyLtaY5J0Dz5SlW+rubUBoNY0nQ2XIFdLYlYpk4x eoBudIN713tgxUnBd+KkyRI+jneNXcHSagm6skXDYKDZtDHEb2ejUgw0hPL3aw=
  • Ironport-hdrordr: A9a23:C6tGeK28TAc6hPDECQqj0QqjBVxyeYIsimQD101hICG9Lfb3qy n+ppsmPEHP5Ar5OEtBpTiBUJPwJk80kqQFnLX5XI3SJjUO3VHIEGgM1/qa/9SNIVyaygc/79 YfT0EdMqyJMbESt6+Ti2PUYrVQouVvmJrY+ts2pE0dKz2CBZsQizuQXW2gYzFLrUR9dNIEPa vZwvACiyureHwRYMj+Ln4ZX9Lbr9mOsJ79exYJCzMu9QHL1FqTmfTHOind+i1bfyJEwL8k/2 SAuwvl5p+7u/X+7hPHzWfc47lfhdOk4NpeA86njNQTN1zX+02VTbUkf4fHkCE+oemp5lpvuN 7Qoy04N8A20H/VdnHdm2qb5yDQlBIVr1Pyw16RhnXu5ebjQighNsZHjYVFNjPE9ksJprhHoe 129lPck6ASIQLLnSz76dSNfQptjFCIrX0rlvNWp2BDULEZdKRaoeUkjQ9o+a87bWPHAb0cYa lT5Jm23ocUTbraVQGVgoBX+q3jYpxpdS32AHTruaSuokxrdT5Cvg4lLfck7wc9HaQGOux5Dt T/Q9VVfY51P7wrhNpGdZw8qOuMexrwqEH3QSuvyWqOLtB0B5uKke+y3IkI
  • Ironport-sdr: zc/e1xSXd7H23wfpbfm+gGkOMY4Raz+4duQZ3cT/ZufRMejuruiWXhg9kOo04C6BbUo27y8y+8 +hXasrt2slp0yPiUiXFqWIPzD70V9Iz1yyqvLV5YzzL5pRHFSJCNhGdvh02XERP43ZDEhUuAie EdE0sI0tSe7UB/WPH8RNE75GY8cPCq0vaPWjnf5+SXbaokTcNWITzISvAV4etYQi00jvkiyDwY v3dDm4uK7Z+L51b9w0Df178EH3dkP5aiwQr4ShuZBUMWUY/5jMr6gh3QDpJw659gXHfiLrERzN uoAtWtUFkbBT/XSL9+I0/IDR
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Prevent libxl from creating guests that attempts to use PoD together
with an IOMMU, even if no devices are actually assigned.

While the hypervisor could support using PoD together with an IOMMU as
long as no devices are assigned, such usage seems doubtful. There's no
guarantee the guest has ballooned down enough memory for PoD to no
longer be active, and thus a later assignment of a PCI device to such
domain could fail.

Preventing the usage of PoD together with an IOMMU at guest creation
avoids having to add checks for active PoD entries in the device
assignment paths.

Signed-off-by: Roger Pau Monné <roger.pau@xxxxxxxxxx>
---
Cc: Jan Beulich <jbeulich@xxxxxxxx>
---
 tools/libs/light/libxl_create.c | 15 +++++++--------
 1 file changed, 7 insertions(+), 8 deletions(-)

diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index d7a40d7550..7499922088 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -1160,17 +1160,16 @@ int libxl__domain_config_setdefault(libxl__gc *gc,
     pod_enabled = (d_config->c_info.type != LIBXL_DOMAIN_TYPE_PV) &&
         (d_config->b_info.target_memkb < d_config->b_info.max_memkb);
 
-    /* We cannot have PoD and PCI device assignment at the same time
-     * for HVM guest. It was reported that IOMMU cannot work with PoD
-     * enabled because it needs to populated entire page table for
-     * guest. To stay on the safe side, we disable PCI device
-     * assignment when PoD is enabled.
+    /* We don't support having PoD and an IOMMU at the same time for HVM
+     * guests. An active IOMMU cannot work with PoD because it needs a fully
+     * populated page-table. Prevent PoD usage if the domain has an IOMMU
+     * assigned, even if not active.
      */
     if (d_config->c_info.type != LIBXL_DOMAIN_TYPE_PV &&
-        d_config->num_pcidevs && pod_enabled) {
+        d_config->c_info.passthrough != LIBXL_PASSTHROUGH_DISABLED &&
+        pod_enabled) {
         ret = ERROR_INVAL;
-        LOGD(ERROR, domid,
-             "PCI device assignment for HVM guest failed due to PoD enabled");
+        LOGD(ERROR, domid, "IOMMU not supported together with PoD");
         goto error_out;
     }
 
-- 
2.34.1




 


Rackspace

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