From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 8BE17C54EBD for ; Mon, 9 Jan 2023 23:08:59 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pF1Fx-0008Jp-W4; Mon, 09 Jan 2023 18:08:42 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pF1Fw-0008Il-7q for qemu-devel@nongnu.org; Mon, 09 Jan 2023 18:08:40 -0500 Received: from sonic308-8.consmr.mail.gq1.yahoo.com ([98.137.68.32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pF1Fu-0003dW-Fj for qemu-devel@nongnu.org; Mon, 09 Jan 2023 18:08:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1673305715; bh=ywgbO8lubWpnCassvIu6bBFzCJ/Z2sgLUfL80HdpzLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=pxzV/H1HM06MpAMRVFL0ssYCJXP59bXc5GrKUx/QcQJz7S71dqm4BINX2rzahxX81MtJ3y6CVWoFA+Z+Yvgmo6ZVoj16k+n0jLXlMLmUGbVqJE84JQ4p85+kGNkvkZ+CV3G3IVhDqZXv8Dr2rU0tVBF9iP1z0HwzRVp6x8KAHGEMS7q2ZCfeFIysV2I3RHAkuX8M4I5xj4vKnkI7rl/dsIfHsF+8921Wr5K1wPt2gMyHI+eTg8B2Lwfenjxuz9UX2sw8CglGE+K7lJLFfjSPx6RSsEPaGgY5LceZhom1Eg4fk0O1PK2D4Q/HnAm9NnGscRgslm01AHt6AiaU1UA4ZQ== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1673305715; bh=keMjmw88+NB73GNZ0YN7HfypUkwkByV4+3fnszfn8CF=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=o5oc++gedcFxnVQru4ndLDTH+4PHQV48uZlZYgPEpbc9FMkTUtRJaY8ZIkTBLQ9efm7MNUoNRoYQnfOqkxARaYxTn/ztbDwwrODbc224H2IWyAX+TBSF1kLYjVlyGY6omgdm0a7VCaxl0USk+DiuFfy7uCVCauu1/xE9QsAb+cGlcbD+60pewrrq1aKWcKGuCZ2nPcelXtbFD9hyDybbZ/tCH1FtccsiuUBwWONs0gVITU8DORaBTRcDW9rQNQ5RCGYm5So2t35HzP30oAv5CjIuBFRrupoQ9UF26cgAB8YIBmCnsldzZZipBmKZq9RxiDZGaXsJ9YEBnZ0/lwvPCQ== X-YMail-OSG: vQZpqCcVM1mUk8i0Yg6trsInc6cIWbw5_m7__7CkDb5NTL8YxNrrPG2YebLlzam cbBzvm1Qfug0CdK_EKzy9o7NDqNQ.oDx1dGzXpsW1UizBPvq8F5GwcOBS.9eepfelo2Hc068dSZg PFRNQRvtTcgxfA9dR.lOLBFOP25MpPq4pTWjtTC5DdLdlcdEDFg14WJHM_ruSYuLeOJMwtm8r6c9 t0_IxRGikpcmywJ8l0GYmNert7SRfUAh_TwQKxpjYgoh0C5DBiJs.sXBqpZqmoCfw98iOO8F0B1v BDe8VwfbQ9LyLe6R9qNFsHW_4CylMgaDyfi6F1L6YUuHVzkGTL.zvCPjrPxZo1JhUkI9pbrlEjVq QZ07JAl9zztA3m_F9mdSrNIShZML8F7D8biOje2C.zDIdxp.wOwCMXbp5TAahcygh2q9AmJfItAd w3krBHXcXWT5UrE00TTFA_MVSoqQhqomFTu3x5VWZUSJGjXc4BEXiMxf.K_yT7uX4jtA.k0rAdHX jWw1b7zXKomaPLHmV3Hjg576CP0BeS.v2Owvv1ymlnWXvQNeWFVj10av1tH_9FXoT5BkGhNtGaxK q6aRWbSlcpT6lACd8EXQjUig6HuYvzGGYDIpm_L8R3wA_XKdCuzSxpFfHJ9oqaNyp0F_mNPQ7xfY H_OMYWsTwp0wIRtnUE3epufHf_ZwrqgVz7E.CVtvi_lQWBBMCO6zQsaaRWzver3NRHhDqJKzdllU Ki9Q6ypU1sKtHeCDN6uQivu0LUl3m3kXOLrDa8fIz4Hx23rrvtZ2y5feJ7mvXxEEqBRLjxBrSqBH usd0r_3usqyCBDIXyEU6yCm4G9lr8R1bhjdcdGEVxYbnGcQ22yqgQkisyrCjJhk2wlm1BnXFibeM bVIm6sis5av5BHgjo6FZkg02DT34K56H725bfkaGTGSm6hIsHYSTKa5TLoD3uLUtj.tObqcSdYuT mI4qH.3ADGN8fWZHaSnbmWl.S_5JucXWDsQrX.6eXSFhBX_anNtCFkCbUkihkXZV1Sva8EmqHs3R DBHRUidj68bGpq6rC6HGpakt55ONoI1_iiQGSAklpsBEaXB8GTqrBWQyEgy8mKdMHQn9.cDBkhn4 YQQ8GIjjyzmbNWkNkTZmUw7F6lZ8Rsi8P4_RX1Cmg0h3AZ2o3DldWH8NUIIjzxVSAydONH8cYVCi _KCuEbj6K9MtQJtiAi8mWVIAHZMtngEcXb4vetP6QXoa3bscDARG8c3DrlrKeV0xWJh9IsPn_fO6 lCKp7_j6NqmTG3oNlVhfZCpwNXDsWWmkw0zCBwxMxX_C0kDjoHK42ePacU4DtKyU5ggLQzPjoBZR 8MIjGW9HtAzBnQyXoNK5iHTMx6hk8mDXEGvucUmkG6bSOk5iHb4bZuaDyibxfjnn1gu2vErd._91 k8GmjuSozC_fApfkJ.yolqbPpOWW2dKb2vtwl3q78PlTqTbFzMGVVg.p_Zx8kt1ePl7x97FNTy1L YU5t77MmDasd5dfcapCgontTo.7eKb6EtANIjKOZF.IGxD0FSSPTKtRJiraMZrW1xThL3pjzBXy_ idlDgeBz4V_.RbOd1GpUGTiZkTKP34mpwQ8aLNPXsEFSuX7yz4gPbrVSsRowIaus2sJxQnvbkQlf hG7JcMfmePc.u4hu7clkU23J3HU3KRyV8Zc3nJZLYXG8LFtWGYqdAdBDgjm0LV_KByE36kM3YgCW vrrmyF3IateQLwYucxGimj5zcjl8t9bAYDcEtIsZSg8DPWjty1LbAmJdxoj2WPbquYvnktxGBfdg 0QznWRWZGIrkjLNC2QloR.OOMnb09ahDk9nJ9q9xtJ4voF05Q8c2Jvzg0FvkezRWl8LK2VhYpFs9 W4M631i9xLc6yU5aZnWRrsB7joBr4FEDvkSxCzU_cBhRAjHfUTyoByUkBxTxMb9yt6ZM2ghZoX7M 4X44tPVu604f.o9ZuWAJy7zhT2IAzwp1aYlqfKywOZ8iwK89zwurgxNux8odcJGe8wTK_NaFL1kI 4UFtlTJ3XYeRL6fjGS6415Z5PVgwMpQ9qwVDnoW7fmctSGop.iWJO6ImljqeBecgMRDO0UFB.hbn rpzFDd3it6GvDxcNBoCdQDUkXIw_RwrNeqgzjAP2cKVqLBVt7Ft1u.ciEP9bWBj0_nhtGG.lPkDG y9c_Poj1g_5DWY9FwycTRu2KCaslyzwI2.DyIuP23TmQA0qm41xKWUkKkiK6wucoCyxzfS8lCYQ- - X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic308.consmr.mail.gq1.yahoo.com with HTTP; Mon, 9 Jan 2023 23:08:35 +0000 Received: by hermes--production-ne1-7b69748c4d-bgkrh (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 21a3ec8339abfccbadeaea4f5ef812e7; Mon, 09 Jan 2023 23:08:32 +0000 (UTC) From: Chuck Zmudzinski To: anthony.perard@citrix.com Cc: xen-devel@lists.xenproject.org, Wei Liu , Juergen Gross , qemu-devel@nongnu.org Subject: [XEN PATCH 3/3] libxl/dm: Assign slot 2 by default for Intel IGD passthrough Date: Mon, 9 Jan 2023 18:08:13 -0500 Message-Id: <27bb3979f234c8de6b51be7bb8195e3cacb5181c.1673300848.git.brchuckz@aol.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=98.137.68.32; envelope-from=brchuckz@aim.com; helo=sonic308-8.consmr.mail.gq1.yahoo.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.096, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org It is possible for the administrator to manually specify the virtual slot addresses of passed through pci devices on the guest's pci bus using the @VSLOT parameter in xl.cfg. With this patch, libxl will by default assign the Intel IGD to slot 2 when gfx_passthru is configured for the Intel IGD so it will no longer be necessary to use the @VSLOT setting to configure the IGD correctly. Also, with this patch, libxl will not override explicit @VSLOT settings by the administrator so in that case the patch will have no effect on guest behavior. The default behavior of letting qemu manage the slot addresses of passed through pci devices when gfx_passthru is disabled and the administrator does not set @VSLOT for passed through pci devices is also preserved. Signed-off-by: Chuck Zmudzinski --- tools/libs/light/libxl_dm.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index 2720b5d4d0..b51ebae643 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -1207,6 +1207,7 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, int rc; int next_slot; bool configure_pci_for_igd = false; + const int igd_slot = 2; /* * next_slot is only used when we need to configure the pci * slots for the Intel IGD. Slot 2 will be for the Intel IGD. @@ -2173,6 +2174,27 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, flexarray_append(dm_envs, NULL); if (envs) *envs = (char **) flexarray_contents(dm_envs); + if (configure_pci_for_igd) { + libxl_device_pci *pci = NULL; + for (i = 0; i < guest_config->num_pcidevs; i++) { + pci = &guest_config->pcidevs[i]; + if (!pci->vdevfn) { + /* + * Find the Intel IGD and configure it for slot 2. + * Configure any other devices for slot next_slot. + * Since the guest is configured for IGD passthrough, + * assume the device on the host at slot 2 is the IGD. + */ + if (pci->domain == 0 && pci->bus == 0 && + pci->dev == igd_slot && pci->func == 0) { + pci->vdevfn = PCI_DEVFN(igd_slot, 0); + } else { + pci->vdevfn = PCI_DEVFN(next_slot, 0); + next_slot++; + } + } + } + } return 0; } -- 2.39.0 From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 0E15DC46467 for ; Tue, 10 Jan 2023 07:32:51 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pF97b-0007VN-Ok; Tue, 10 Jan 2023 02:32:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pF97a-0007UP-V9 for qemu-devel@nongnu.org; Tue, 10 Jan 2023 02:32:34 -0500 Received: from sonic307-54.consmr.mail.gq1.yahoo.com ([98.137.64.30]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pF97Z-0007EY-6m for qemu-devel@nongnu.org; Tue, 10 Jan 2023 02:32:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aol.com; s=a2048; t=1673335949; bh=IXWL0zBe+TGnnQx6f+FhHQ+rLQndNCxwY9B4xdroKxQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From:Subject:Reply-To; b=PNwFrlYzMqzEwT/E+oGS8Q3uNQiE/OwLQvqWhehSCNsxbDjavxCS2Sx8ioWWaFwUYqodd3doNUaSKpxANvRfBKu8kh5Zbfgr4KVEACUx2bt97TACZILrnvWl+ERevY7hkGQtPlr6wRnpAxmXcVqkSHDwUZNcv548y4ZowDS9k4bV0knixD185V9gY89QyzzvaGA2hwU9sf0fiGgpdUb18kkIw3C2tSD2Y98q3/PHf40hCTOoePRgx7yzME6wE8pDJ/0HnuKh6CntYEpgCOVJQRMVec2VDvXVRFOyM7r0P982BJI6wbXPu2tJ22h0N8ryoSZSqYA+QJ6z8ggtESDi+w== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1673335949; bh=AcbauxwS4/wmmJiS90weiJNhYtz0Z33GTuCvWkIVR9N=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=R+0zo2IvCY4Wdqy39uABgWGBzxRkNsP/6w02TVt8zAAEAJ7qaxYix6aANJFwgSo9bs/3YvGyROciezOFt9kh4hauvB0kd/dcihnAmt+9uPQFfA3otKnUArLgypXRE9CCW9XiR51i56IS8MSOUjDlPClbnleiURDdHDUtVnPm2hZwpUY1dU8+1JnTJXESdxmE4hwqOSQjxXOVKKom+Q/fmWAY6oPM8famKfl7kmZQ12UluEuw1agvKsOylMxAlDaWWYeDkRESZIxOtLAC/uXrJikGcB+MXwAE+ijoi6iQghdV+ZCHLuOCBqgEL3Nhlfwc35XVXxb70P93FbhtsLa4JA== X-YMail-OSG: RPsCyUQVM1k.LODvx.GNliRJADa_2tXrnOIqgPgucpoj5u6.CpSyWjRtcPImtju 339tm95k_C7yv8umF6C71xfAWUd84RoLbc6nKjHQm7oHCkh_6njsVKVs_qSt2wwA1aPzbx8CFgG2 zJ.agJbugSWvNtkov7LFHNe86z8fXnWdEAllAD3OwKDFVLq9lQ296y5G8B61ZeLMmrJ_v36XcGRR OWbxebwCkNmUUZ.RA09YkBG97TQ1nXfDGt7QQCU543EQuGe4cJMP2sZ.7eB1a2FHvdp3AWGR9JAc 4.sGgwA22xa1rBuAPJ7TUK38k64iWJ8K1hGy5uVr9o4yQcBpw_E7plLwUY38fdX6CrT5QDC_Pt3U ahEljvRm34WeTm_vmH9cTF9l8ZV.oNXtBUtiGPt1lURtvx41uh35KYkW_9bEumxZfM7fEN3UaOtl phHDSNJREvg17vG851M9ZL_WkFslVK.RhZeNG0e85Fm9A3pHr0IwevJPd3GMG5C06Kegz_D8_XKm Xut4nGyC5I.Lmq8mrtfdHHeUDXIEO4izHBCFLDX5EImJoTsR70Jct8zUqe882WUlg.5FjtiU2Rk3 gf7Wmr7DperFZ0DJHiF8vOPshIND3UeGxiGmdq0C7BVF7Z4N10IujB.QMKPC19X4omLZEvVtQl0V 4LAV8l_88rrbE8elgun25dKvNzV3J5T1mVwxBInc._djySsUDklDq28dDTf8TOc4PT9liwaxmeWZ gCflHuVx6CgDhM6YQfBJQXBpDfdqJrlZYww902ziQykuqJ5ZyHQGBuxUJq6MuwyPTvd69G14vpk9 1qxeb94lNfReWZjAzTeB0lz6wGFOfqgDDrnbeQ9rsMvd9mqhB7ZS_m6dN.5r1uoKqFoMZvkMHCrC tC2KYlaPwxLpSZjjbApkXiAdb5C2tYddx8jO8MMPdjgPOMR0vox14Qqsxi9oTWdYobYd6T2e.f85 srZBVJPzHCbsaJyP655r7jmnvBSVmH1FwTnDrOKl51fXWS_3v1w1Ax_2fktc4uAKpayeztPgZsYl y8c8cwopkSEz23LS.NVlJBYlbdY0paxHJDUhCnQZWGlqjxgmlqJDpwaFHjYXosY2QBZc3gW4_Q05 J9hezO0y82shqUdUxC2bFtq2thdd65Y73aWNFIo5LbPN0ltqdAgXSWuDK8OygZi2gEmLp2cAE4EW HL2gUYnie_iiLC94uA0O_BF37MjpBh_AtNaTc7eYUXZkdPyJ3T6QY1K14OUhKsIFqPbtJ08tlE2x C8g.aMBsaFJK3_khjKclTj7V4T_2S5hChdXUWnIHW62dmF_KBjfnJBSPor9U.9XiXuOT7I9n4poA I.aOXMaQuecUE96diL01U2Cfx70M5buWt2RfwVno5H.GBD3_JmCuOhjJMPPdEFGAn7jEc0MPbNoH .cds9poGCLn6wJ_..nGMl_axjUiX4AJqovtaVNczhiw4zU6Wru01tAtxDRX3BoNPMCkLn9BvcP8x YZnaxjCclwuDtrt13TrAIFHwQwGPERQyNfZsRVgXNepSmpWTNKTnskrB542Vyu61XuQAOPldhJFQ nmyGACKPtvnIob2kUw8PRz8IK2Q_eAPqq2q_5Q8T8oMK21TbZn5DT_GnXHkQh5CtRHBFSC01aTcX na7ok0e96Ocm39RqobRCeRXrbPaHOb4vTPds88eEN1FYYvWJBdmagzeO53SVpd4yPAj9q0_zxTa. 9GrKIu.Hw.9SjsW_KVZqxNva9lQScce13CdQpWw8seKlvUHLlQZYUOJwBEJLgsovBbwwfz5Evk23 eCdyO9xo1stpB952fx.Y57qR3hLRbi0HqMSk2LWfA9FF9mk.UepVv7i1cyKQ62RYT8L0817RKpJ4 rxp.XDq9G3kkqHxoZ6DytIMoxi_e7Z3fYVhyXIqb7ms3HZIo5iCaLtGmB.6Xze.pPB6cBmYdgVuU OeypV.6piH64Onmwy7tN_N28ldOdHsvQ_kuON2I9s.oMprO4Ryw2oBgILQ1_tNfxVJjKJdQtxd_2 vx3Vl3MI.XRnJfz2kii6_CirNVs1qPRZL5K7s4Y_SryUouAwLV77xuU9fW5hdVMn6YbbrpACscUV QJxcZ5JjX58rSZsS1dRi36MVCpmYKZm9s5jAWegD.V8l.VYVSAIK.avN_LtLfexcX3hZYnauiAMn qoDCQ08ni_riiw5jhegOlF41Q.mQJKPebCYe.hEzPnHhN7LxLJDDOyDbGpUQ3QftcAci4SKCErh8 - X-Sonic-MF: Received: from sonic.gate.mail.ne1.yahoo.com by sonic307.consmr.mail.gq1.yahoo.com with HTTP; Tue, 10 Jan 2023 07:32:29 +0000 Received: by hermes--production-ne1-7b69748c4d-bxfkx (Yahoo Inc. Hermes SMTP Server) with ESMTPA ID 00995f78f0d4fd001b9b8f1699ee7ed7; Tue, 10 Jan 2023 07:32:25 +0000 (UTC) From: Chuck Zmudzinski To: anthony.perard@citrix.com Cc: xen-devel@lists.xenproject.org, Wei Liu , Juergen Gross , qemu-devel@nongnu.org Subject: [XEN PATCH v2 3/3] libxl/dm: Assign slot 2 by default for Intel IGD passthrough Date: Tue, 10 Jan 2023 02:32:04 -0500 Message-ID: <27bb3979f234c8de6b51be7bb8195e3cacb5181c.1673300848.git.brchuckz@aol.com> X-Mailer: git-send-email 2.39.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=98.137.64.30; envelope-from=brchuckz@aim.com; helo=sonic307-54.consmr.mail.gq1.yahoo.com X-Spam_score_int: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FORGED_FROMDOMAIN=0.096, FREEMAIL_FROM=0.001, HEADER_FROM_DIFFERENT_DOMAINS=0.25, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Message-ID: <20230110073204.36sUJ7alZn0D1V_dVzB7uhs27gZ8NCscTT7zmjx2dkM@z> It is possible for the administrator to manually specify the virtual slot addresses of passed through pci devices on the guest's pci bus using the @VSLOT parameter in xl.cfg. With this patch, libxl will by default assign the Intel IGD to slot 2 when gfx_passthru is configured for the Intel IGD so it will no longer be necessary to use the @VSLOT setting to configure the IGD correctly. Also, with this patch, libxl will not override explicit @VSLOT settings by the administrator so in that case the patch will have no effect on guest behavior. The default behavior of letting qemu manage the slot addresses of passed through pci devices when gfx_passthru is disabled and the administrator does not set @VSLOT for passed through pci devices is also preserved. Signed-off-by: Chuck Zmudzinski --- v2: No changes to this patch since v1 tools/libs/light/libxl_dm.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/tools/libs/light/libxl_dm.c b/tools/libs/light/libxl_dm.c index 2720b5d4d0..b51ebae643 100644 --- a/tools/libs/light/libxl_dm.c +++ b/tools/libs/light/libxl_dm.c @@ -1207,6 +1207,7 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, int rc; int next_slot; bool configure_pci_for_igd = false; + const int igd_slot = 2; /* * next_slot is only used when we need to configure the pci * slots for the Intel IGD. Slot 2 will be for the Intel IGD. @@ -2173,6 +2174,27 @@ static int libxl__build_device_model_args_new(libxl__gc *gc, flexarray_append(dm_envs, NULL); if (envs) *envs = (char **) flexarray_contents(dm_envs); + if (configure_pci_for_igd) { + libxl_device_pci *pci = NULL; + for (i = 0; i < guest_config->num_pcidevs; i++) { + pci = &guest_config->pcidevs[i]; + if (!pci->vdevfn) { + /* + * Find the Intel IGD and configure it for slot 2. + * Configure any other devices for slot next_slot. + * Since the guest is configured for IGD passthrough, + * assume the device on the host at slot 2 is the IGD. + */ + if (pci->domain == 0 && pci->bus == 0 && + pci->dev == igd_slot && pci->func == 0) { + pci->vdevfn = PCI_DEVFN(igd_slot, 0); + } else { + pci->vdevfn = PCI_DEVFN(next_slot, 0); + next_slot++; + } + } + } + } return 0; } -- 2.39.0