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

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


  • To: <xen-devel@xxxxxxxxxxxxxxxxxxxx>
  • From: Roger Pau Monne <roger.pau@xxxxxxxxxx>
  • Date: Thu, 17 Feb 2022 15:09:23 +0100
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=citrix.com; dmarc=pass action=none header.from=citrix.com; dkim=pass header.d=citrix.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=RmFW8G1SOY+FkPII6jLYpk2BttaqjF96Q4Wld3f0da8=; b=lTSbvFXO8gPAtngUkUS/7fomtZ4HftlRFBr4e3luRuoEeIy2o6q++Il4R1o8L+sHUL/8qp4hFToQijE0OPTwISgSe4lSvAiMKoC25YtGHB1tg2lQr7XIIblIZXcvnJrAMh6edTbtqI+TbGyXbzXsY4qtb51hzUz4MEq8yME/aHE8yeuhdtw3ZZXRQRDH4Z8yNNutym/wiglLULFNZHO0EYyxzBtJpZlocgSFuVi+hQ4Pl0Rxdwb8behJDjn5ncdD1VtChHB+sbxPh8wlgJbdcmS0T17J/ZXH9iAI5tOBlklRB2BBEev1kKz9zaI5klVYHJprU2PyxSyXCSYmRTzQ5w==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=facQYtpmeQKqa/rBz8SWgotskqCSQh6TYNjmYh/he0qEuWxZgvsRjHQ5CbAuso3yCzyF36j5CLXLfo/cMiKT2zop5TvW3ETkxlXkO0MP1mTn6iYpPsbFb2UUyEEimFCDLMIY3Cm/3HUNMjfyUVjGiZw3GzNs4SqDQ3YmbI1rNn1JFcq/hbp3PhQgkiFCjekjgbVmxst5XzRKyxsHIRld9AIQUjIJB8AO6bsh+Jo/4Yn9Lumz1SqXqtKvX7evcPG/N3+T1R1fN04wYYBrOsOTifOg4aG0yrPsyt2J7xUZQZTYQCuIJX/EzCbAxMsQd5zaGCB7bL+r9ZbdjTwbckGGUQ==
  • Authentication-results: esa3.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, 17 Feb 2022 14:09:47 +0000
  • Ironport-data: A9a23:jVllGa0Mwj19pTUr/fbD5Tx2kn2cJEfYwER7XKvMYLTBsI5bp2FUn WMaC26CbPuCYmvyLdEnOt639E4F7Z6HndVlSwI+pC1hF35El5HIVI+TRqvS04J+DSFhoGZPt Zh2hgzodZhsJpPkS5PE3oHJ9RGQ74nRLlbHILOCanAZqTNMEn9700o5wrFh2OaEvPDia++zk YKqyyHgEAfNNw5cagr4PIra9XuDFNyr0N8plgRWicJj5TcypFFMZH4rHomjLmOQf2VhNrXSq 9Avbl2O1jixEx8FUrtJm1tgG6EAaua60QOm0hK6V0U+6/TrS+NbPqsTbZIhhUlrZzqhvNB76 /IcmKaMVV0JOrHUku5BWkZBHHQrVUFG0OevzXmXtMWSywvNcmf2wuUoB0YzVWEa0r8pWycUr 6VecW1TKEDY7w616OvTpu1EnMMsIdOtJIoCknph0SvYHbAtRpWrr6Diu4MEh2tv25wm8fD2O 8weN2B2MTL6UTYTJ3o7Wbtit8ivryyqG9FfgA3M/vdmi4TJ9yRz36LqK8H9YcGRSINemUPwj mDM8nn9AxoaHMeC0jfD+XWp7sffkCW+VI8MGbmQ8v9xnEbV1mEVEAcRV1awvb++kEHWc81bA 1wZ/Gwpt6dayaCwZoCjBVvi+ifC50NCHYoLewEn1O2T4onU6SW+V0U+ciIbSNg6rMU8GTV1z 1DcyrsFGgdTmLGSTHuc8JKdojWzJTUZIAc+WMMUcecWy4K9+d9u13ojWv4mSffo1YOtRVkc1 hjX9HBWulkFsSIcO0xXF3jjiinkmJXGRxVdCu7/DjP8tVMRiGJIiuWVBbnnARRocNfxorqp5 iFsdy2iAAYmV87leMulGrhlIV1Rz6zZWAAweHY2d3Xbyxyj+mS4Yadb6yxkKUFiP64sIGG1P ReI5l0NucQMYRNGiJObharrVKzGKoC6SLzYug38NIISMvCdiifclM2RWaJg9z+0yxV9+U3OE ZyabdytHR4n5VdPl1KLqxMm+eZznEgWnDqLLbiilkjP+efONRa9FOZeWHPTP79R0U9xiFiMm zqpH5DRkEs3vSyXSnS/zLP/2nhRfCJkW86n8J0MHgNBSyI/cFwc5zbq6epJU6RunrhPl/eO+ Xe4W0RCz0H4i2GBIgKPAk2Popu1NXqmhX5kbyEqI3iy3H0vPdSm4KsFLsNldrg77u1zi/VzS qBdKcmHB/1OTBXB+igcMsah/NAzKkzziFLcJTehbRg+Y4VkG17D9Oj7c1a97yIJFCe265cz+ uXyygPBTJMfbA1+F8KKOum3xla8sCFFyuJ/VkfFOPdJf0Do/NQ4IiD9lKZvccoNNQ/C1n2R0 APPWUUUouzEookU9tjVhP/b89f1QrUmRkcDRjvV97e7MyXe71GP+44YXbbaZy3ZWUP15L6mO bdfwcbjPaBVh11NqYd9TepmlPps+9v1qrZG5Q14B3GXPU+zA7ZtL3Taj8lCsqpBmu1QtQesA x/d/9BbPfOCOd//EU5XLw0gN7zR2fYRkzjUzPI0PESlu3MnoOvZCR1fb0uWlShQDLppK4d0k +4utfkf5xG7lhd3YM2NiTpZ9jjUI3ENO0n9Wkr23GM/ZtIX92x/
  • Ironport-hdrordr: A9a23:K6vRhq0o2mJFrx7TBwJA5wqjBV5yeYIsimQD101hICG9Lfb2qy n+ppgmPEHP5Qr5OEtApTiBUJPwJU80kqQFm7X5XI3SJzUO3VHHEGgM1/qF/9SNIVydygc/79 YeT0EdMqyIMbESt6+Ti2PZYrUdKbG8gdyVbIzlvhBQpG9RGsRdB1ATMHfnLqQ6fngOObMJUL 6nouZXrTupfnoaKuy9G3k+RuDG4/nGjojvbxIqDwMurFDmt0Li1JfKVzyjmjsOWTJGxrkvtU DDjgzC/62m99W20AXV2WP/54lf3PHh1txALsqRjdV9EESlti+YIKBaH5GStjE8p++irH4sjd n3uh8le/9+7nvAF1vF1SfF6k3F6nID+nXiwViXjT/IusriXg83DMJHmMZwbgbZw1BIhqAx7I t7m0ai87ZHBxLJmyrwo/LSUQtxq0ayqX0+1cYOkn1kV5cEYrM5l/1TwKpsKuZPIMvG0vFnLA E3Z/uspMq+MGnqJUwxh1Mfj+BFBR8Ib1S7qktrgL3h79EZpgE686Ii/r1vop43zuNOd3B13Z W7Dk1WrsA/ciZvV9MEOA4ge7rBNoWfe2O7DIqtSW6XZ53vfUi97qLK3A==
  • Ironport-sdr: 0c5sTZ7sv4VGS7eBVNASqvWdxYBNWSFNbEZAVoAure3ceqSF46EHxBpwVW32mJ0WOr7QT1NRbf m1zNcE38Cy/0Rf6oqkNIqqgY2Bu89H8trZ0Za3z00eti2vdE6ZJzLg/hCw+Z67gvKRo3F8ApKU auSrBVjOQKXsGZv6UWVHC35D8CbI1hTeYivhjRyso7CqPzFEV7CzbssvHNv1j6g1r6lgH9SVrP ZyL3HMz4jmVFs77iHH/zwW8spMGq2SmHWfQqoBBlr0a3cTL2uZyLlB7uwUxZb2lDZ1SVEccYgH COAe9ORfCwGG2Lpc4vMKh7xW
  • 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>
Reviewed-by: Anthony PERARD <anthony.perard@xxxxxxxxxx>
---
Cc: Jan Beulich <jbeulich@xxxxxxxx>
---
Changes since v2:
 - Reword error message.

Changes since v1:
 - Reword commit message.
---
 tools/libs/light/libxl_create.c | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_create.c
index d7a40d7550..15ed021f41 100644
--- a/tools/libs/light/libxl_create.c
+++ b/tools/libs/light/libxl_create.c
@@ -1160,17 +1160,17 @@ 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");
+             "IOMMU required for device passthrough but 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®.