From nobody Mon Sep 8 20:03:58 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; arc=fail (BodyHash is different from the expected one); dmarc=fail(p=none dis=none) header.from=nutanix.com Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 175395549307127.07454567136142; Thu, 31 Jul 2025 02:51:33 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 09CD411CF; Thu, 31 Jul 2025 05:51:32 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id 3903EC5E; Thu, 31 Jul 2025 05:51:01 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 07B41C33; Thu, 31 Jul 2025 05:50:58 -0400 (EDT) Received: from mx0a-002c1b01.pphosted.com (mx0a-002c1b01.pphosted.com [148.163.151.68]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id E5B21B6E for ; Thu, 31 Jul 2025 05:50:56 -0400 (EDT) Received: from pps.filterd (m0127839.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 56V5jTuM032170 for ; Thu, 31 Jul 2025 02:50:56 -0700 Received: from ch5pr02cu005.outbound.protection.outlook.com (mail-northcentralusazon11022094.outbound.protection.outlook.com [40.107.200.94]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 484x3g3jdy-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 31 Jul 2025 02:50:55 -0700 (PDT) Received: from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) by LV3PR02MB10641.namprd02.prod.outlook.com (2603:10b6:408:287::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8964.27; Thu, 31 Jul 2025 09:50:54 +0000 Received: from PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88]) by PH0PR02MB7159.namprd02.prod.outlook.com ([fe80::6cf9:b35c:b143:bb88%3]) with mapi id 15.20.8989.010; Thu, 31 Jul 2025 09:50:53 +0000 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-1.5 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=3.4.4 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; h= content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=proofpoint20171006; bh=vnTvX+4pJKlk8 MwrhyeVpHugilJvbYqOy/ffCt4XJ6g=; b=wi+U8HEqvud5ZcZejrjr9fy8FT3i1 dfZDwtml/BGz+sg2HfPd/wbHLe0oaj+8vrb35iDMhtFJ5vzz9ELsE1lgZKNWPAf+ AiANlxbnIZIK626AhA4u/sl+JlIcmfsUAxi9ckO7jGU7v2zaxrsRlduY217XA+Ly KxgfLbdo/M0iqkHyKErzTs/pnyIxFEwXkRT4nyDs8NdpfPAta+yZCASQiRoxqWxo Qd0tsZ9ocNkKd8xTYDZLxXHkfcpKrB6ZBq/W5/mRHtGXllQd9gl2Ia4zREtYD4Cl 8kn38dm/HMR1WYRek3C/tE7Amibcq/7SVq8+UG50eEs5Ran2FltzzUVfA== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=GxWY5MmFaWq0wOkVpBqJVrOLIgv/xT9VSGPoRgxFuZxe/nQNK7UW/Ux8USx2JuhqA2AlD17yrKS0IM2uZ4bcmGZPvmWDilZTXUCZc+HgyF2BkSKY7JvMXqe0gLLcrcHDoEcgSJIZjYfzyRXKS7kUjhVpFLD/nZ2AStoj5h6xU0OrrXcUeOvkbY2WYL7wdmsRAI7+vdIlyCrVrhYZ5G0F634HojEPUJ/A9FupaFgi+0B2rsm1QDRb9YB9XMzhWKlnTGm3nTqxPfL3399FkqykZUX+4Yb/RDC2bhlK+jfjcNoQTuxsa5ugLPi5JxXNG/jhcnc5lO6CONHEyK6xMyl6Jw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=vnTvX+4pJKlk8MwrhyeVpHugilJvbYqOy/ffCt4XJ6g=; b=Wcu6lrK3uA5HddkU1ntScnR0TyBC0vQlBLaYqSlGdNrjEEmnAdxidw/NicMusfWgEp+p8ln78glHevEt2eEUf9DkdFnBWpumQ84Z9yUIjtfh3gLJZTeDNuKUKQzcnWAMl9Z3Io4/YQmjpGcGk1t9X9tlibAHazTcFhe1bY3Gt+UUq8ZnJB31BPYyiayxUOIn5Ltq7k1nOiCpoe6O+H/Bd0p3EFpTOe1pa2vkxtbNzj+4FVdQ1GyDHawJmIVxdDqyRvjvDK1ef2MQ4tjPoG4gwhl3L7naeR9tl3NC6RCIUSpKGW8LQnzyfAcNr+Pdi7f4pBCwJItZpkq+RNNgpLqyyw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nutanix.com; dmarc=pass action=none header.from=nutanix.com; dkim=pass header.d=nutanix.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nutanix.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vnTvX+4pJKlk8MwrhyeVpHugilJvbYqOy/ffCt4XJ6g=; b=tMRvhzKbNeFYbK6cB6HwIBSD62Pu7QLxX8aUtSomweqaelVldOufmvXykZX/E9DRoaCDnQemCqE+ju4BRtbKBo3/rmj4sYmdDzlBjzpdwPDwFPyWdc1RZ38TBUzVFmMxw6xtBfDtRd/LEcH9oby9M2AS4RtqQV7G9ne58N1f1d6wjXRhPqmDLpmEKZsIuetuOPa1LJH/7ehXVM+zMSjyrT91rE802maarqirSmC4db+0vOLGhQ4ycb/IX4UfSGvHsFze9XZSFqgz4nBINedXxavpXZMPkKWrbPON0iYfIYIbAv0ML7b54ToPlOtqd5NZsQV2Z6juHmif/dsO/B3Y7w== From: Mark Cave-Ayland To: devel@lists.libvirt.org Subject: [PATCH] conf: add support for 'edid' attribute to video model Date: Thu, 31 Jul 2025 10:50:40 +0100 Message-ID: <20250731095051.16331-1-mark.caveayland@nutanix.com> X-Mailer: git-send-email 2.43.0 X-ClientProxiedBy: LO2P265CA0478.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a2::34) To PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7159:EE_|LV3PR02MB10641:EE_ X-MS-Office365-Filtering-Correlation-Id: d61a9d88-46f8-459c-9944-08ddd017bd6a x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|10070799003|1800799024|376014; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?ifk94apM8t1di/RojCluhEdj3oOgt4Gh7Px0MNdYzPlqfEoB3MF4M0fH5goK?= =?us-ascii?Q?CGcxhU+IX7TCbZtJ1wb9lPom7T4/NWUSdYmWZsW3hQ7tg60m4zSFgj4AyBnf?= =?us-ascii?Q?a0cunbYFSerSDZHV1wYbmUwYxQoRmIIvTobOel7ywOp7XZjr/1Dr8B3mceRh?= =?us-ascii?Q?P1qY5j7jsLoaILVn/8BOEf0f6vky0IyXpHk0XduBpDXh41lhC0IcnKbbBRdd?= =?us-ascii?Q?GZZ1NSzMQD4cpBuciItuOhLo0nEy6EZAvsvGtU1ZbTK3KL0q9JLEtcHf/1aW?= =?us-ascii?Q?hjqm+P2mUO5xxq0zQC1pmpcQW1bbdvwnt70g05LNFH+yHAD72jDmx0IprzgT?= =?us-ascii?Q?EHil8+42jE+xhDey+Wj0iZDLBLLj1WfVbGilcvwTEcXMxeRCHivPpQyH59tZ?= =?us-ascii?Q?u6f7GYqeNrTQ9HdHlwzSujZobwNPkakVh8ddTQp0r+LutLdS4rcjmoqxQcLx?= =?us-ascii?Q?3QPRYUqEbroLEUCza1/IHEzG5wKLNfuNGQC0/I+QTQS2x2BBplSgBwppIiG8?= =?us-ascii?Q?w0cPhQUNXmV9jvz7ay38mSU2kV8F7b5MBz7KJ+G6MtdjByudK/ajqu9Z9bkj?= =?us-ascii?Q?CqdVGjNu2uqtmMrgo1zLu0VI6tAU+dJfXgooN+kP/rd7pPjzUszGMOBkxBne?= =?us-ascii?Q?1C2G7CReBnBiSindzOStYeZlov9LtSxGImIujDUvhA5C2rtNBSocWCV8Gj9H?= =?us-ascii?Q?PLnXnCuJZ9M+gmovlvjH3/uhMO/kH7JTqJh/uOXHBN9Dkw+FcSfopmckD/dA?= =?us-ascii?Q?NU4PU9IZg6OLbjET72NW+pflJKjQfGtn2xO2M1blJZPhC/Q2xsoHeskbH8nU?= =?us-ascii?Q?tFqtJi0hc546uxQfnLZi9FqDRBDiJVQXceIoxm5oz+NyniqgMDICfwiuPLV+?= =?us-ascii?Q?90wTC4v2esaPp0tyEZadS9HfYBPQXAkbHTGKygNdV20lpdzhVrmbmXG4xMsL?= =?us-ascii?Q?i2pKT4z2bNEZpmLhTVyPwT31Vr0azNThhUtHjE+gVlsXJRGI/xFnJwbRUpFj?= =?us-ascii?Q?Pb6s9M/81NDOt9Uo0Wfz0tBiUk+CQp5o2/lVlQJt/nt8gNfyQZ2O3huHxnGt?= =?us-ascii?Q?4zZ0uOyAc4oSPvIvUJnkfsg+eplgQKWcBeB4kF+Kb6taJ6t5+oi9aVMIRGBT?= =?us-ascii?Q?pN6gUHmoHlw+bCk4yOvqEoim4U7r8fgqdnJtf1iaaZfc9f3GsJFGr6OOJQlL?= =?us-ascii?Q?2FFbEWV0vpNt6wEURUazDIC7JXL1c3PkOHWTSQWTw4KM+AIzjiC1bKZf6FaJ?= =?us-ascii?Q?TfiaS0gFq9V1huDnLsdNTNxe/Y5WRi5yik9BgjXalbGUAIFfEyXp72yLBp+u?= =?us-ascii?Q?7GSWi72UmSlA90YZHU6GJ/DzFSfpqPMGEzpqGe36LzlE3vm8MFKrD/iviu6k?= =?us-ascii?Q?B46U8/iegnrllFqIZSz9iq8qevOpABX3uSK/gsUQZYUglfuEUA=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR02MB7159.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(10070799003)(1800799024)(376014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?t3aDtMsoOUZOwuqBzuVXSeqm209FPAqNSkoY9RlokQ3Hvamk7hD/PxSnwslq?= =?us-ascii?Q?W4v0xXnevwlxjGESGLcPIQuuZukvMTacg+w8AQAUdhKccn0Fq+TMUUAAKiAv?= =?us-ascii?Q?lubfw+CBdI9c4J9YIuvwwxm56IzE9tx6x3G9Qj/oAZjFFINXPUzlTqfRRX5t?= =?us-ascii?Q?qKhQNPfe7+ILGXZGmgaJsW/trzqgZDd+xn7bKQbkM75duWcyrJEQun9SCHFo?= =?us-ascii?Q?cyH02PLAKx3PujjCb8oa9isK4d8lemE0IPyoR/eBSIhdus/mWbdza7uvDqT2?= =?us-ascii?Q?XgpXj6BfAgSFBegA6sBLQvhRfY2Yt5XiLtEWf/4P7ePaHc0o/74EuekVJ2Xb?= =?us-ascii?Q?Tje7+bmsVnJmOU9COXmDqEuCJkTNGcZ+ft433McdjjYkr6JdTt4iKTWhrcGw?= =?us-ascii?Q?BtQp+KZjZP3syFZeaDlY7+qa8PrIMOGxxhuzAZmeoq3XOnSyYtQ0ONXnGbwr?= =?us-ascii?Q?S0rt3PxyQRtwvaSiKURfo4tIymET1CNxnarUA/PiRrH/1XM2xMKmUGD2mxTh?= =?us-ascii?Q?nTRsehuFm8c3h7FEpxpoTfuK35xgU1Y5jNEDHiv+eT3QPnFzchOEvnpBSFCp?= =?us-ascii?Q?Yba0lBsTP47lFA1e9uulbSP4TwzOwJdbVsnyBC9Yzj194HU9PBYzPuG6VgO6?= =?us-ascii?Q?kq33ZAsJxQoyddNTJeV9aopsZn4CjnBRKy+p+DDPCo+o01VzM6XVIGibNxpO?= =?us-ascii?Q?WsoEp187EFADL/9GV7rf+9Z3ft8XfYx5kLpXnP1rHnP1xN35MoL4H5NTKOjv?= =?us-ascii?Q?f0q7vuNJ9xnuZwCswj1nhU8+6Pdenp+GWHhmNzHsQ/6wwJ5mVXPq9oV5nQEm?= =?us-ascii?Q?vr/U5VxpZlmkknlLwcEwFto38pEU6Ulje5Uk094yoEv95StnKpymKJmehQMp?= =?us-ascii?Q?QjS7NQguWozSJxcrp02fviSDYW2oIh3wn2TT0DIO8d4fd+msJshFjAZyB4gw?= =?us-ascii?Q?0AjBTfgU5e5QL72yqND/gGO0D3uaOTvSj/EB1BtGKhS/SJ20VTkcL/jcJtAN?= =?us-ascii?Q?YBokBhuezXk1xrSaHze9Ru+SqAfja9wyHquM+haMIjoxsFBiS1Acaz9KyR9v?= =?us-ascii?Q?GZvRze9Hx86aoT02bfgY4qnsmMKlBZp80COlwblcPCF629wYfS+r44t4NkeU?= =?us-ascii?Q?DZNoBwdmsyP98N7eDQ+yxMnTfD9VAZCTgAdoO9JywZD23IAUKuNpuRhQRKom?= =?us-ascii?Q?cJGF0tbm1K2YFqxQu0dSxhlcHrLJlgtqiprUP1Xmut2iVzyq7Xwi+Y0tM+qT?= =?us-ascii?Q?R97C/mW/AzEcH3k6FDYMIaubObDoGM4zWWxS06b7ZIrYSq5dZSqyP2tGO67+?= =?us-ascii?Q?PqiDHnG0BZRNDwcuM97RbK9PuIJwd42ITX1BEhDBDIi9jL2I2cLDZTV+SAB3?= =?us-ascii?Q?Qonea3Rm8arnde930JXGlAFyvKWJxgX0L/aIT/Zzia1yOCum8hgtcayD3HBM?= =?us-ascii?Q?HSc+k02V2qstgBV1QUTMBt6KeCmT/cOIIgJ3evafI6EeqY5y/j56mLtFO0AG?= =?us-ascii?Q?HkfxAQHGZbv8gA7n2blgM0q2sqUtkAkcIs2xXbORySfoBMBNREq8+QAuLURf?= =?us-ascii?Q?zJIpa273pyFMnGRgoBO+SMkK5u5r9FOPo6EUzE7i6DgCqf+ngQv3bDkXTj/H?= =?us-ascii?Q?zDwMeoPq+3auMIWlHljqC7n1tlf3diGvdaVAqsdYIJ0IKIGhYj7rqQpMC7TB?= =?us-ascii?Q?h+thJw=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: d61a9d88-46f8-459c-9944-08ddd017bd6a X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7159.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 31 Jul 2025 09:50:53.9245 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bb047546-786f-4de1-bd75-24e5b6f79043 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Mrf6RImmefvZLa4GT4GKpZGWzFB+P6b3CSjq6hjgA5mU85rDP1XQtgY07P8YnMLRrvM3Z0GRJjw9nlT1QkadndYK1PBnK4PYC+XRGLFqZ2I= X-MS-Exchange-Transport-CrossTenantHeadersStamped: LV3PR02MB10641 X-Proofpoint-ORIG-GUID: Py-MhyIC2S8jZu13jBpcWCdLQsFuxaqU X-Authority-Analysis: v=2.4 cv=BrqdwZX5 c=1 sm=1 tr=0 ts=688b3c7f cx=c_pps a=t88XDKUlDquqCT1Kmp1J9g==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=b3GgYJ4MOYeoD8hnOXAA:9 X-Proofpoint-GUID: Py-MhyIC2S8jZu13jBpcWCdLQsFuxaqU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzI2MDA5OCBTYWx0ZWRfXwDbDf8Ru/NtL jWK51auPWtFpWtTggFIMSDw+G14CZCIJWcw1iJQkPhGDwocWaTS1vndSNPOgpVjfmvvSLtAStdI eQcqquGrCW8jQayQb9vfn9jnHEmZm9WuqW0OGnkmM/tqp2OSJrWxEtOGPDJ3aJh4AStocMeBM0L r0RAySRaYm54ZI0yfmjLXKZ5GvILXANBCFR1soilZjyuP4fTSjRJ5Rd01K6U2yz2OS5sLBV3J0N /W0jX1FRtcnOBRIk1FUHyV6RvhoJrurxLVIyG3rdZbZ1WA8+hdVUISTFgnWoTilUTayO/GNS05C QaUfykxtiZokPOYP490d05njRnX47bktZQOhadYJHPlRKgvCbJIUqTOwdPS5BovGoL5/fN+iL2T /GB3wBbB X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-31_01,2025-07-31_01,2025-03-28_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: DNUJAOHE7HGWPNULHIINDZK5V7MIE7AQ X-Message-ID-Hash: DNUJAOHE7HGWPNULHIINDZK5V7MIE7AQ X-MailFrom: mark.caveayland@nutanix.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-config-1; header-match-config-2; header-match-config-3; header-match-devel.lists.libvirt.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; suspicious-header X-Mailman-Version: 3.2.2 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: fail (found 2 invalid signatures) X-ZM-MESSAGEID: 1753955495709116600 Content-Type: text/plain; charset="utf-8" Add the ability to enable/disable exposing the EDID information to the gues= t. This allows migration from legacy machine types that have EDID disabled to a newer machine type without any change becoming visible to the guest. The edid attribute can specified in the domain XML as below: If the edid attribute is unspecified, it is not generated so that the virtualisation platform will continue to use its default. The edid attribute is only valid for the vga, boch and virtio display models and is currently only implemented for the QEMU driver. Signed-off-by: Mark Cave-Ayland --- docs/formatdomain.rst | 8 ++++++++ src/conf/domain_conf.c | 5 +++++ src/conf/domain_conf.h | 1 + src/conf/domain_validate.c | 11 +++++++++++ src/conf/schemas/domaincommon.rng | 5 +++++ src/qemu/qemu_command.c | 7 +++++++ 6 files changed, 37 insertions(+) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 976746e292..7fe8b03a56 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -7103,6 +7103,14 @@ A video device. sub-element is valid for model types "vga", "qxl", "bochs", "gop", and "virtio". =20 + :since:`Since 11.7.0` (QEMU driver only), the ``model`` element may hav= e an + optional ``edid`` attribute that can be set to "on" or "off". If the ``= edid`` + attribute is not specified then the device will use its default value. + Otherwise setting ``edid`` to "on" will expose the device EDID blob to = the + guest, whilst setting it to "off" will hide the device EDID blob from t= he + guest. The ``edid`` attribute is only valid for model types "vga", "boc= hs", + and "virtio". + ``acceleration`` Configure if video acceleration should be enabled. =20 diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 59958c2f08..10cc6d7432 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13535,6 +13535,9 @@ virDomainVideoModelDefParseXML(virDomainVideoDef *d= ef, if (virXMLPropTristateSwitch(node, "blob", VIR_XML_PROP_NONE, &def->bl= ob) < 0) return -1; =20 + if (virXMLPropTristateSwitch(node, "edid", VIR_XML_PROP_NONE, &def->ed= id) < 0) + return -1; + return 0; } =20 @@ -26629,6 +26632,8 @@ virDomainVideoDefFormat(virBuffer *buf, virBufferAddLit(buf, " primary=3D'yes'"); if (def->blob !=3D VIR_TRISTATE_SWITCH_ABSENT) virBufferAsprintf(buf, " blob=3D'%s'", virTristateSwitchTypeToStri= ng(def->blob)); + if (def->edid !=3D VIR_TRISTATE_SWITCH_ABSENT) + virBufferAsprintf(buf, " edid=3D'%s'", virTristateSwitchTypeToStri= ng(def->edid)); if (def->accel || def->res) { virBufferAddLit(buf, ">\n"); virBufferAdjustIndent(buf, 2); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 596d138973..425ccfa97c 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1895,6 +1895,7 @@ struct _virDomainVideoDef { virDomainDeviceInfo info; virDomainVirtioOptions *virtio; virDomainVideoBackendType backend; + virTristateSwitch edid; }; =20 /* graphics console modes */ diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 40edecef83..60a2e46b7e 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -231,6 +231,17 @@ virDomainVideoDefValidate(const virDomainVideoDef *vid= eo, } } =20 + if ((video->type !=3D VIR_DOMAIN_VIDEO_TYPE_BOCHS) && + (video->type !=3D VIR_DOMAIN_VIDEO_TYPE_VGA) && + (video->type !=3D VIR_DOMAIN_VIDEO_TYPE_VIRTIO)) { + if (video->edid !=3D VIR_TRISTATE_SWITCH_ABSENT) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("video type '%1$s' does not support edid"= ), + virDomainVideoTypeToString(video->type)); + return -1; + } + } + return 0; } =20 diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincom= mon.rng index a714c3fcc5..d84f20637c 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -4807,6 +4807,11 @@ + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 457dee7029..db00f9b173 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4739,6 +4739,13 @@ qemuBuildDeviceVideoCmd(virCommand *cmd, return -1; } =20 + if ((video->type =3D=3D VIR_DOMAIN_VIDEO_TYPE_BOCHS) || + (video->type =3D=3D VIR_DOMAIN_VIDEO_TYPE_VGA) || + (video->type =3D=3D VIR_DOMAIN_VIDEO_TYPE_VIRTIO)) { + if (virJSONValueObjectAdd(&props, "T:edid", video->edid, NULL)= < 0) + return -1; + } + if (video->res) { if (virJSONValueObjectAdd(&props, "p:xres", video->res->x, --=20 2.43.0