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

[PATCH v2] 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 15:32:11 +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=tdZCE3jW8S28XPDZ2yi5CBt3HMczKkZ71EmvZ40xOhI=; b=IcV5Of9PPlCDp59QzR+5xV0BI4lpELCsSu/8+jE8ExKQMGdfnCJdZtZsyI0AZ9VpkQu6OW0eChXCltNtRbS5UlOpaZ7L+K79wGd2qPK34cCnoZQxemZP+1AeW6pdlwP/rBl842RewdTKL+IG3OhoKow6yr8QKQWhLljT5rEv7B2qdgd24BowImgfxNDihAabmUnCnaDm7HjTn8wzL+KbWDlDR8fv14avjItGDPWiK7cj/M2OAfwhGDgk4BnDvOiB5NmFqGxB1LLkot0QIh6a3yZLxc+b0PhWjX0/ivqoCQYN5jy8AN6fpX688LiSv8a9pSfKFW2qVS1D0q2ZKA5Ubw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bcPEZFcjmRHpE2l+MQRNP+mIWWP2EvvsQHApnda30qSZsPL6dUiwkU8izpy3gIrky6p00gQVB2tqa/hk6Xrg1A/Rm0Vu7BQNAqQv7A7u9utw/U5193DObg+AHKdpIo4WMIC8z6HS2JMnvs8OQHhbfjzq7imAue47hBSZsOAZDtbS9F1xvO4x5YFEJUU3Puhau4N2NLSwOyEV1XN8lOVjCLrzZUiK9ua2aqN4f7aTOo1KnmuSrtzxnHQIMfFTQkQslnxzXacZ5uJ5TbQX2NAnzbpckeM1/ZrkykU14biZOlcDLFuYY6zLJGttSmZSIOwCjKdK1P6Ea0WsslAioooxcg==
  • Authentication-results: esa2.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 14:32:29 +0000
  • Ironport-data: A9a23:zgNHJ6vnjQMD/4t029Oji8QUeefnVKdZMUV32f8akzHdYApBsoF/q tZmKTiHPfmNM2Hycttzbt/k8R5XupLUndZqHgU9/HpkFisX+JbJXdiXEBz9bniYRiHhoOOLz Cm8hv3odp1coqr0/0/1WlTZQP0VOZigHtIQMsadUsxKbVIiGHdJZS5LwbZj2NYy2YPhWWthh PupyyHhEA79s9JLGjp8B5Kr8HuDa9yr5Vv0FnRnDRx6lAe2e0s9VfrzFonoR5fMeaFGH/bSe gr25OrRElU1XfsaIojNfr7TKiXmS1NJVOSEoiI+t6OK2nCuqsGuu0qS2TV1hUp/0l20c95NJ Nplsr3vcgoqO6z3xOlaDzJdPS4iLZdFweqSSZS/mZT7I0zudnLtx7NlDV0sPJ1e8eFyaY1M3 aVGcnZXNEnF3r/ohuLgIgVvrp1LwM3DJoQQt2sm1TjEJf0nXYrCU+PB4towMDIY2JsSRKmBP 5txhTxHYQbvYk1/Og4tNtFhxNeY22jkVxRhkQfAzUYwyzeKl1EguFT3C/LXdcaNXt59hVuDq yTN+GGRKhMQOcGbyDGF2mmxneKJliT+MKoCGbv9+vN0jVm7wm0IFAZQRVa9ueO+iEO1R5RYM UN80jUqhbg/8gqsVNaVYvGjiCfa5FhGAYMWSrBkrlHWokbJ3+qHLm8lEQVMa9knj5M7AmAB0 3GGw8PTBgU65dV5Vkmh3ruTqDqzPw0cImkDeTIIQGM53jXznG0gpkmRF4g+ScZZmvWwQGitm G7S8EDSkp1O1ZZj6kmtwbzQb9tATLDtRxV92AjYV3nNAuhRNN/8PNzABbQ2AJ99wGelorup4 SBsdyu2trlm4XSxeMqlGr5l8FaBvK7tDdEkqQQzd6TNDhz0k5JZQahe4StlOGBiOdsedDnib Sf74F0Nv88IYSX3PPQoOOpd7vjGK4C6TrwJsdiPNrJzjmVZLlfbrEmCm2bMt4wSrKTcuf5mY srKGSpdJX0bFb5m3FKLqxQ1itcWKtQF7TqLH/jTlk3/uZLHPSL9YepbbDOmM75ohIvZ8FS92 4sObKOilkQAONASlwGKq+b/23hQcyhibX03wuQKHtO+zv1OQzB8UqKBnO96JuSIXc19z4/1w 510YWcBoHLXjnzbMwSaLHdlbbLkR5FkqnwneycrOD6VN7ILO+5DNY8TKMk6e6cJ7utmwaImR vUJYZzYUP9OVi7G63IWapyk9N5ucxGihASvOSu5YWdgI848FlKRotK0LBHy8CQuDzassZdsq bOXyQ6GE4EIQB5vDZiKZav3nU+xp3UUhMl7Q1DMfotIYEzp/YUzc37xg/Y7LtsiMxLGwjfGh Q+aDQ1B/bvGopMv8cmPjqeB9t/7H+x7F0tcPm/a8bfpanWKojv9mddNCb/acyrcWWX4/LSZS d9Ul/ysYucamFtqspZnF+o5x6wJ+Nay9aRRyR5pHSuXYg3zWK9gOHSPweJGqrZJmu1CoQKzV 0+CpotaNLGONJ+3GVIdPlN4POGK1PVSkTjO9/UlZk794XYvrraAVExTOTiKiTBcc+QpYN90n 795tZ5E8RG7hzorLs2C33Jd+Gm7J3AdV7kq68MBC4jxhwt3klxPbPQw0MMtDE1jvzmUDnQXH w==
  • Ironport-hdrordr: A9a23:ETTkA68MonO2Z2R7Yypuk+E0db1zdoMgy1knxilNoENuHfBwxv rDoB1E73LJYVYqOU3Jmbi7Sc29qBTnhORICOgqTMyftWzd1ldAQ7sSi7cKrweQeREWldQtqp uIEZIOceEYZGIS5a2RgHjaLz9J+qj6zEnCv5a4854Cd3AOV0k2hD0JdzpzX3cGDTVuNN4cLt 6x98BHrz2vdTA+adm6PGAMW6zmq8fQnJzrTBYaD1p/gTP+xg+A2frfKVy1zx0eWzRAzfML9n XEqRXw4uGGv+ugwhHR+mfP59B9mcfnyPFEGMuQ4/JlYgnEu0KNXsBMSreCtDc6rKWG70srqs DFp1MaM8F6+xrqDxWIiCqo/zOl/Ccl6nfkx1Pdq2Dku9bFSDUzDNcErZ5FczPCgnBQ8O1U4e Zu5Sa0ppBXBRTPkGDW/N7TTSxnkUKyvD4LjfMTtXpCSoETAYUh4LD3xHklXqvoIRiKqbzOSI JVfYHhDbdtABmnhknizyZSKIfGZAVxIv+EKnJyz/B9nQIm3kyR9HFotfD3qE1whq7Ve6M0md gsDZ4Y5I2mNvVmFZ6VJN1xNvdfWVa9Ny4lDgqpUCfa/ec8Sjfwl6I=
  • Ironport-sdr: MCNAOIjh+atY4GbeYkBGJiiWl48Se2YP6bivFr9byG9pU1fhnyB8Gq59t8ksoVQXdxGrxcoxcz e8w3JbkNsIo/gK6wvJ5ACJS8Kzxsn90/q2/v3X3yFimzSHOqQrawz7txKA+Mp016TDQfdvMCmT WsAtXhK7KloPi4GcN02t4ApiMupvDYGGzI6zfSwGwijEcczqds3KCPCGXA0cHbITOvDCY/Jhfn 6ffFJNnNNUP4mGMgD4zpIi8AV1pgg58lubH3wGdh+tfZcK9y4NrLgU6xwxp8j9+uqiVpj42sWF Q6YiFzlQqeyqdB1JI1YRzspN
  • 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 PoD 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>
---
Changes since v1:
 - Reword commit message.
---
 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®.