From nobody Fri May 17 13:49:03 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1704820627; cv=none; d=zohomail.com; s=zohoarc; b=D+Lc62O9PPp4Bv7PB7rFHcuJCj6C/cJgrZzx8bCqJELCe2cmiIAPHE5JMnxHs37VVmO0XuCxBJijUaRK+62kTdwo7Qj4Mz8kuMuBCP6ukeVRqBesmlYSB7DmDKgkRkBsLhYifp9wl76wuwLyuSf83yi72xJ3B+nr81RAhpG0xBI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1704820627; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zLntkworFozqUhIj+VSpyXjWsszU3gOI1osMehFczYM=; b=ZaCoGKwbkTGPNnCbq4IykQOTC1L9JrDYa9oYrqMZUi6iLte9s13SR1C70P7NxiECStGdXFWf4EQBXTLJ1xmHJEODM5E7e16r93STpvXfZIAcXhcIo4g3PkKe+ZQ0+7p9TvOlY4DL0vxgJZRlDZgo9nuvj3d3yTO+z4OESUN2/jI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1704820627972448.1944421976907; Tue, 9 Jan 2024 09:17:07 -0800 (PST) Received: from list by lists.xenproject.org with outflank-mailman.664855.1034979 (Exim 4.92) (envelope-from ) id 1rNFiY-00052S-Gj; Tue, 09 Jan 2024 17:16:46 +0000 Received: by outflank-mailman (output) from mailman id 664855.1034979; Tue, 09 Jan 2024 17:16:46 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rNFiY-00052L-Dm; Tue, 09 Jan 2024 17:16:46 +0000 Received: by outflank-mailman (input) for mailman id 664855; Tue, 09 Jan 2024 17:16:45 +0000 Received: from se1-gles-sth1-in.inumbo.com ([159.253.27.254] helo=se1-gles-sth1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rNFiX-00052F-4E for xen-devel@lists.xenproject.org; Tue, 09 Jan 2024 17:16:45 +0000 Received: from mail-qk1-x72a.google.com (mail-qk1-x72a.google.com [2607:f8b0:4864:20::72a]) by se1-gles-sth1.inumbo.com (Halon) with ESMTPS id dc614c99-af12-11ee-98ef-6d05b1d4d9a1; Tue, 09 Jan 2024 18:16:44 +0100 (CET) Received: by mail-qk1-x72a.google.com with SMTP id af79cd13be357-783269124a8so128115485a.1 for ; Tue, 09 Jan 2024 09:16:44 -0800 (PST) Received: from pm2-ws13.praxislan02.com (207-172-141-204.s8906.c3-0.slvr-cbr1.lnh-slvr.md.cable.rcncustomer.com. [207.172.141.204]) by smtp.gmail.com with ESMTPSA id p17-20020ae9f311000000b007832f812b55sm554709qkg.82.2024.01.09.09.16.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jan 2024 09:16:41 -0800 (PST) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: dc614c99-af12-11ee-98ef-6d05b1d4d9a1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704820602; x=1705425402; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=zLntkworFozqUhIj+VSpyXjWsszU3gOI1osMehFczYM=; b=Gx5JFo/P3tR4G2uU9AqTxNMxbF/9SiqRKZ7+/ELiQINtLUv48wGegb0lQbsi6CNs80 RvryR8rO2pO7Jbc550IUZ8WBCbmazv8gYE6U89OBvFC5qt3APlLQHFa2yBjGN/RldQAP r97xRZZ8lDOZaD42BTiSjY835Njtnm5xeftAcpBb9ISWJBS/dwulIv9GaK/RsjF6cnsn K27d/eLoXXS4AqrnR1d8Qur7KTJlMewicbuBc1Rn5qc2hRTP9qdvqNByA5PfnlOhOxpr phd1OMzFuDOMoRWEkpEt/cMmxMKZiIBsjzET5vCaKyWQVZY8iTesr1aC8B0Oe60DxLfp 2www== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704820602; x=1705425402; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=zLntkworFozqUhIj+VSpyXjWsszU3gOI1osMehFczYM=; b=gizYfgJ/AR0ge/Y1yw0v1Wl26mFEeLqnwsf5GLmwvRCRV8rfkv7veK1jmGVauCZ07m gaX7aunwh8nx9wcZirKaZTzjp09Uj061hzl5enPvD0vYVrFP2X2AeVfUANj7HodfHn8w oA0tgcmx5JyUZej4NYcXg3hKX8CJuyswuz8XQ5gCNiqgc/rTu/c1xEFpBKTUPVOHR4bo Ms/LD4SjzYC5sQesLYxX7vaxIUVjzy7MIOJ2c840BW98IE0qOCPJate6QM70JyVWdXPG AuScVkqSN0wc0jnDu80+4B1DaF3O+Wlb1oT6jZ1mvHBHd3cf4sqrL19cxSFzft9ocBPq gtmQ== X-Gm-Message-State: AOJu0YwhsIKY2EI3Pm+mhkayWRWbk2EVXhEkE6A/qPG2jpseKxT6zQD4 ZJNK0qcS/JIFnmhg35j6lAjt+jhbV/4= X-Google-Smtp-Source: AGHT+IGpbora5pdnB3/OUkiqC2O3dLZLTuWijKCAy87CFi3pzqDSs3LwcYfbIv4ezQjE5MZHzO/YUA== X-Received: by 2002:a05:620a:4690:b0:781:bdfe:33b7 with SMTP id bq16-20020a05620a469000b00781bdfe33b7mr8514985qkb.151.1704820602223; Tue, 09 Jan 2024 09:16:42 -0800 (PST) From: Jason Andryuk To: xen-devel@lists.xenproject.org Cc: Jason Andryuk , Wei Liu , Anthony PERARD , Juergen Gross Subject: [PATCH] libxl: Use vkb=[] for HVMs Date: Tue, 9 Jan 2024 12:16:31 -0500 Message-ID: <20240109171631.40071-1-jandryuk@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1704820628966100001 Content-Type: text/plain; charset="utf-8" xl/libxl only applies vkb=3D[] to PV & PVH guests. HVM gets only a single vkb by default, but that can be disabled by the vkb_device boolean. Notably the HVM vkb cannot be configured, so feature-abs-pointer or the backend-type cannot be specified. Re-arrange the logic so that vkb=3D[] is handled regardless of domain type. If vkb is empty or unspecified, follow the vkb_device boolean for HVMs. Nothing changes for PVH & PV. HVMs can now get a configured vkb instead of just the default one. The chance for regression is an HVM config with vkb=3D["$something"] vkb_device=3Dfalse Which would now get a vkb. This is useful for vGlass which provides a VKB to HVMs. vGlass wants to specify feature-abs-pointer, but that is racily written by vGlass instead of coming through the xl.cfg. Unhelpfully, Linux xen-kbdfront reads the backend nodes without checking that the backend is in InitWait. Signed-off-by: Jason Andryuk --- tools/libs/light/libxl_create.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tools/libs/light/libxl_create.c b/tools/libs/light/libxl_creat= e.c index ce1d431103..39c50b3711 100644 --- a/tools/libs/light/libxl_create.c +++ b/tools/libs/light/libxl_create.c @@ -1771,24 +1771,31 @@ static void domcreate_launch_dm(libxl__egc *egc, li= bxl__multidev *multidev, libxl__device_add(gc, domid, &libxl__virtio_devtype, &d_config->virtios[i]); =20 + if (d_config->num_vkbs) { + for (i =3D 0; i < d_config->num_vkbs; i++) { + libxl__device_add(gc, domid, &libxl__vkb_devtype, + &d_config->vkbs[i]); + } + } else if (d_config->c_info.type =3D=3D LIBXL_DOMAIN_TYPE_HVM && + libxl_defbool_val(d_config->b_info.u.hvm.vkb_device)) { + libxl_device_vkb vkb; + + libxl_device_vkb_init(&vkb); + libxl__device_add(gc, domid, &libxl__vkb_devtype, &vkb); + libxl_device_vkb_dispose(&vkb); + } + switch (d_config->c_info.type) { case LIBXL_DOMAIN_TYPE_HVM: { libxl__device_console console; libxl__device device; - libxl_device_vkb vkb; =20 init_console_info(gc, &console, 0); console.backend_domid =3D state->console_domid; libxl__device_console_add(gc, domid, &console, state, &device); libxl__device_console_dispose(&console); =20 - if (libxl_defbool_val(d_config->b_info.u.hvm.vkb_device)) { - libxl_device_vkb_init(&vkb); - libxl__device_add(gc, domid, &libxl__vkb_devtype, &vkb); - libxl_device_vkb_dispose(&vkb); - } - dcs->sdss.dm.guest_domid =3D domid; if (libxl_defbool_val(d_config->b_info.device_model_stubdomain)) libxl__spawn_stub_dm(egc, &dcs->sdss); @@ -1816,11 +1823,6 @@ static void domcreate_launch_dm(libxl__egc *egc, lib= xl__multidev *multidev, &d_config->vfbs[i]); } =20 - for (i =3D 0; i < d_config->num_vkbs; i++) { - libxl__device_add(gc, domid, &libxl__vkb_devtype, - &d_config->vkbs[i]); - } - if (d_config->b_info.arch_arm.vuart =3D=3D LIBXL_VUART_TYPE_SBSA_U= ART) { init_console_info(gc, &vuart, 0); vuart.backend_domid =3D state->console_domid; --=20 2.43.0