From nobody Mon Sep 8 17:06:05 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 1754316524139712.7644895597225; Mon, 4 Aug 2025 07:08:44 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 1B223B69; Mon, 4 Aug 2025 10:08:43 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id C7B231214; Mon, 4 Aug 2025 10:07:41 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 37E8EA96; Mon, 4 Aug 2025 10:07:37 -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 7680494D for ; Mon, 4 Aug 2025 10:07:36 -0400 (EDT) Received: from pps.filterd (m0127840.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 574CGr3j023720 for ; Mon, 4 Aug 2025 07:07:35 -0700 Received: from bn1pr04cu002.outbound.protection.outlook.com (mail-eastus2azon11020141.outbound.protection.outlook.com [52.101.56.141]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 489f0t38b8-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Mon, 04 Aug 2025 07:07:35 -0700 (PDT) Received: from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) by PH7PR02MB9052.namprd02.prod.outlook.com (2603:10b6:510:1f0::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8989.18; Mon, 4 Aug 2025 14:07:32 +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.018; Mon, 4 Aug 2025 14:07:32 +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:in-reply-to :message-id:mime-version:references:subject:to; s= proofpoint20171006; bh=AhFgKOj4f7nz2Hh8RO2FCPHlTl1dWBxfFuRXQ4TrW KE=; b=Noc6FgBHRmDac+N0uQL+r1PXng6TXcPodav84YQUBrd8pXd14bzQQc7Ly 38OPxJ1d5ZwZPXjUGe7ZVPAhvCbFPpY1QTwCxMFQjUWOdGw9afJxYiS/y/1x8VHq FlUM5xqlE3osnKkqie2366Lcfu/se440x4MLfdSopu4/OLspmOacGtxp1q0OaL2n ElZLvxpWyKMpxf0fQ+v02a4+ebFWVa6LP76H3lUJj35vVbASddQcXDWagI7+97hT 5DpDDOMBf+VnywgRi93n0WQhKI3g4rgTU7Zr2B4wU0/AYvLJk6FjHJqujVEriiX/ 1cLX7FBWevcHmaLU5ms0yi2OcWs1Q== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=KmabeaUCIIhbUQuTEN4s02M32KnUdBcDcSwC4yG/C4oY/U4vqlja6lnmwIx1T5JnEIxYMduvFPDBmzgFd2oW7PXPhbIW7kTBfM0ChUB3prQUWv184QJOBP9wEhzjQMSYY2Ng+Ar6lKvF1mHhtK3SChU26Rxz4340pExHaq4V9XlqhtoJ7u8azVsV42qHahXpeJI47j8caLH5UV7r+7rgvvB0VOEpFcuk0BISqdTyBxqZwtg8dUjwWbk2X6epWgO+rmKe9UQ8mz3a5L0sGGMi/I5kH+rBN4RBOV/C6rkUjXcJrVuOxOhRlfqpOSGy47f4CE70DraiBv8bLw+sF4fWcA== 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=AhFgKOj4f7nz2Hh8RO2FCPHlTl1dWBxfFuRXQ4TrWKE=; b=XPxfMnwBbxhZN7Y+J7k4Jkj2XlX7/kHTXzfl+8Y+l4HmnP/wOF6W3k0llSroK+a0KXIOk91OaghKFbC9EJi1hRdM1lAkaOcJ+RUiyFGPYBtl8IjbCKM8cHyEnH3cb6IPkLC0aPsyL8smmnoav0PzRmShgQFDSgmUrL2LC7E/VBlRjmaasVwCL9maCyyEPc9cyHxNphjS+pzIJbBkKDJTbcnHgJq23hWxQesdGdrwwNssXnu51kQGZWdrswyX/+kKTR4VI3Io/Qs64YxeruFoyWq/br+Vc8ckjhV/Orem6TWJMiekYyNhhj6FjYY4eTCXgw34dfaHJqkznJeuSRK7OQ== 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=AhFgKOj4f7nz2Hh8RO2FCPHlTl1dWBxfFuRXQ4TrWKE=; b=PiyfWpJRcv0ZQ8HO/V9rFP8iC2zRoAO2MUvZg9xtrlkFiyzaCG5lqwt2PVt0TSnb/LtucM3kMLg2vwwI6tVt3gbaM9S6fdyGW87ZwYNkJdQPpta2FICsLQyn8XVdpe/Juu3jrVr8Ly8DfwFcdwKxYllcQ9yo3z3VrHBqK399Ips39JKnnmkLzxFxYZjB4YIIa/22iFxoeasGn4LdRRjeLT9RDrEbsi3ddJM8E9C0bguyVOZcC5Urrgot/Iz2aMI4sSG8BhM4jge0Jk+QVgxbDEzF9fU0QA9V2xZH88mp/WWJSA7HCXoNfREpLq3pZvK+tnb0KJ+YdqZj/2icVgL1yA== From: Mark Cave-Ayland To: devel@lists.libvirt.org Subject: [PATCH v2 1/2] conf: add support for 'edid' attribute to video model Date: Mon, 4 Aug 2025 15:07:19 +0100 Message-ID: <20250804140726.466440-2-mark.caveayland@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250804140726.466440-1-mark.caveayland@nutanix.com> References: <20250804140726.466440-1-mark.caveayland@nutanix.com> X-ClientProxiedBy: AM0PR02CA0200.eurprd02.prod.outlook.com (2603:10a6:20b:28f::7) To PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7159:EE_|PH7PR02MB9052:EE_ X-MS-Office365-Filtering-Correlation-Id: ee516588-a7af-4713-cf76-08ddd360413f x-proofpoint-crosstenant: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|10070799003|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?P81gaKe3lRxfYu9uNhSd4+m6vf88bEXsY/OABhiUuvBjNE92P53FhJ9J4b33?= =?us-ascii?Q?zwmhJY4tql5JGFipxc+Ytnk/TInVci0ja2Bunk2mROBAntcVsGsBU7vuNEcp?= =?us-ascii?Q?ZOO5sEBZFfZK0zwvq1D24eMatatCx5JBIVVzish2s7d8PwdecJ8sQAyRdz8G?= =?us-ascii?Q?gsWeFBTROyaD7Sq0XmAEJ/O2HeYUcEZcvN+UxGP9ksQrzL0hjiK07KP9jjgN?= =?us-ascii?Q?60j/ywj4KgSN/xZWVSq5N7OTn5Rp0dyL4LgyhbQvhz7tklmwSm+iX5jAGaJ1?= =?us-ascii?Q?7Qxkp99U02iqOlu4M9Y5co77kcHfzrilg6XpmSnr6XNWbhMNWSIBbkDs71Px?= =?us-ascii?Q?r/tKXTeGEypWFy8E2PEsWKTSeWmAI3IR/b8ocgVc+aLNgeDMnkMvK/McDuKB?= =?us-ascii?Q?lnerUQu0J4UnnTdVa92mR4hW4aVKAp3u9asrE0vtXQJSmN8E/vL20Mga2Kyx?= =?us-ascii?Q?S8rSdl8JpVszbZmgHR5CUfGaX61VfAk4n9HbQ7N8HbO1Z84wC0s5gwzqDhj4?= =?us-ascii?Q?1qJrzwpXTivMNTWAYsHH1kZP5c+gzMLRzCrmrx+GlfX+06V62W5xqhVUWNfD?= =?us-ascii?Q?wENnrebMsVmJlcWKZiR2ic0codA1whydeomOOK+hJ6z8dc8m0M5J1vdMqGUI?= =?us-ascii?Q?P1Y/v1t2EXeshNCI+JXYcWL92ecmA4HVKuLCMffk52fTTgkMycwJCzRvtVwV?= =?us-ascii?Q?0Yyl+6YatkMMv9ZlFKOxZdzQoZIYqZqaHxr2y+gyJF+BiyUKQarfa9nZeC6G?= =?us-ascii?Q?G3BvOEp8gfyyThVtIQ3aq2xVku1ed7wkWIlBu22bGqpREEqCVuluVXXP3Rba?= =?us-ascii?Q?1a1K+AVCCjYPj+WjKC+51AukoYAHu4Fip7k+mOEl2XQe8j0lOC5nRzd4XqKI?= =?us-ascii?Q?0fIG715sQ3YwW+F/9Dv3wlM9MECPKF8j/aF1kOwucYZV5gldcCmkNEzamOO9?= =?us-ascii?Q?7RR6WEwCVc/DKf7eAfdhCQhSnL9taXJjKQCMA9Y3n4/VbuKm09T5Ab1vT9po?= =?us-ascii?Q?d2oEpQ4GWdie2gpuLXDtgwwFkZiWtCumf2ws0VHzxCZb4HAv6DEl3qFYTwcT?= =?us-ascii?Q?Eca0yV90hkOJPVju6Kv2Xfm4Hj6IOyfGCwoYQGzo9R1XI7KFUcOHoeJQTa5V?= =?us-ascii?Q?cOKd4GTjjw7ATdaDCauiqFl1WPLv10BePIkQ2UGk88Bn+NNbi3zOk+HRGeci?= =?us-ascii?Q?4PIU8WXb716W9Z0AC3cbvrckfG3kaNW1qe7d1iGC1O01mpWLa+k/ssIsZP7r?= =?us-ascii?Q?qrYySncSqHBYqSjnbcT889KwjSOHc5O61U1RR/c9cGp1mE6k61QzPEpvwu6u?= =?us-ascii?Q?850g9mYtYxy0TBUmBM5UVadSuCyrWRDppBCOavYaQT5UKNAbNp/hmX0AxB9O?= =?us-ascii?Q?Nv0z3gigNn5LWV1gbRrU625jLVkwGgqnTePUIx2Eg+H6OlOWjw=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)(376014)(10070799003)(1800799024);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4P6jZ8h5YpbF5GpGAWmJxKpZEa6cEj8IU+PJJpXzczkk0wfUK0Vr7zclUA4f?= =?us-ascii?Q?g/pYAcWtFgp9qPqof/n5pxqaFx5Aejzg9rIcXetJKRQfd0HxLXTWM/nSx6Ko?= =?us-ascii?Q?nKMEXt9GVIs/Ly8Kujhx+R3qN4urBeP4Pr3xZBujaFiUPmQ2TDVVGRS42uih?= =?us-ascii?Q?Dx6P06kgJtNFbXbJjVSfdOB6bYpvEGYesI+b+3VpsPbw2n0qUQ68aAP/q+km?= =?us-ascii?Q?VN/I2lorgmmNijD9rwv4x0S7vzoH7favMRFN1xExA3i/nNPpgwRdWbAcd6TV?= =?us-ascii?Q?qKHFY5C02XCXRv+peFYoib+XNG4Fck3RVG75PbHm8FaZjCAMYqs7ij0IYBo8?= =?us-ascii?Q?d6sZr5KdS2bmq5HUCaDUM0UwH1U1sQdoGLJu+CYuVUroQorN2hvY0mpHGaob?= =?us-ascii?Q?cog96mqfhTom3qaC+xIm07LdlJwZM1A33fYbPIoEO6sCtT0e6yDakm9WJFSY?= =?us-ascii?Q?NLfA+zFzlv/vRSJh3Wur/gH98sPteLTv5wM3u/iIVU9kGGHFILGJl/JkGX2l?= =?us-ascii?Q?D0lNyggtahcAPBK4n+/b806KnihD5S5WQ1H264rg0c1VCuO89ddokuS/UTMX?= =?us-ascii?Q?oBzH4JP/1MfZhGpwyelkCxnLrMpxodrbD9uKU/Y/DTtEXzTUFlYMCESxb+vy?= =?us-ascii?Q?l3l39eeoU50aLj4X32Aj5Vb6M0wp3ZJPFKGwIyU5MSUHOupbs+pnJL+SFxMn?= =?us-ascii?Q?AfYvOIfVLjax3mPDNo/6rPQOWMItHWkSLfNf2oL8/vPZrItwSC1vXVwW53Sg?= =?us-ascii?Q?x3WBie2Q41sqtzA3/2DC8RwtAZn9Cyz7nX2CHK5fBYqY3Wxh8n/MDa3Jr1cK?= =?us-ascii?Q?uM13s2rwDZJxG+OXQ+/7n8PLXKrvb53x9/ayo5ZZcfSZheVRDeHwDRaLl5tJ?= =?us-ascii?Q?W3G6mO6o6AtbWvJ46+LtbdJmEKUo1Ui2ngi73FaBVQhsqQnAk3KAppLgszv5?= =?us-ascii?Q?qLLojt/tJnNhScUJ/7gB1jALlQDpbRPMF/Akvu6uvKJ+uvIttx0cuXWI4x9r?= =?us-ascii?Q?zesTPtbvNKnvI31dkC+UA2Omlh0jws6KxYTWLmIRvUTPejo4hRexp20K0pTH?= =?us-ascii?Q?MIdGEXwhPTqKIRGNEIEx9aAtpp+Po28FWGmpe9oRccrqnlwT/dgq6zTeR/mq?= =?us-ascii?Q?gJ36UTkbzdKOK+xJcZPyJjmKplGgr9TQIHqqUpOQdbJDLcP7p6DdSLiL75B8?= =?us-ascii?Q?w+rjj/nAf2EX9Sen4eoLs7J+Kq/rJ8s+XjDPpwiCbxxlbS1B8iyhX5TRttOs?= =?us-ascii?Q?Kkb2dE38jxEOmCkWo/iggAlzHQejzTOSdVKneeo2+69b04pDNqspAAKmpi+d?= =?us-ascii?Q?TLOMQrnWGvs/QmQBKM6Qn+AYshMOkHaTPCcLy6du/zk1sfPDu3EWV4VZhGLa?= =?us-ascii?Q?WT+wmgfo3KrqqCs/WpTL3TgNETSLr/LZM/6rR5t/dOHHkE8t+FjCD2QfwjyP?= =?us-ascii?Q?rEkc12NQdnF6CD2z/7mLpSzVHuM724e4DjBoFxZtNB6iwSr6WRFUHGxW6N40?= =?us-ascii?Q?23jmq2RjPaXZkMbmrVzWFzEvn57A/kERVL/xMz9PCZZNdNyWY5AJKXIEfunZ?= =?us-ascii?Q?yHr/hVCKcE3v3GJl1/kGy3PrWG0vBK9BcM+G66VFd6yFNNFooiAP37U+DGES?= =?us-ascii?Q?IDZLeK8we6vIIlyWH3n+K699FkQ8ophpbmc/RfNoR3IQ0glyYyWcwqv/5MUx?= =?us-ascii?Q?vYk6JA=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: ee516588-a7af-4713-cf76-08ddd360413f X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7159.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Aug 2025 14:07:32.4961 (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: H31VORZGX3F80C9RI4fI5vMEwywTFz4TxDuXF6e9bmq7aaUVKI3BBA29AUmf39yiXovXVDAaZ/lLvlNfOBkpcq+2r647NZS8mAG1tQ9p/Kg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR02MB9052 X-Proofpoint-GUID: StJQWA-0-kQhyFhbrqSpHqlYrX_qkFG7 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODAyMDA2OSBTYWx0ZWRfX433Cg3XSl/+c BqWzUnFB+VhVlvAUBB++mJZeoTrv/bzI4WRFlwcev7FWVNg1cFR4MJ7Ud9pUzzMqbZVC8nyOHYc 3ijLOgJ1brz3fFWTJM77ZT4/THuCqUwH5dLZ8zrCmU0b90QgPn5Eftl96kzkUPMV1n7Iw31dQ5u 3vPeH/2TtUccAEEjMmRus3FWx09dE20MQ8rUJM+mxO59DRo46zwyE62rYTffGS2azVwKkg+iR8k DjPUsezI5ugYBU4eLNy1vaIRXK7J/O0RCP3rwNX33/GvdaI3UHyCaAPPbkks+D7zs80i0sLUPQF mcqte5rHlFggRJcTHJCk5lg77aTHOanvXgks1qmNLECTe/VaiIXacXixbDkc+x42wJb5UUD5b2A 4Qd98nDH X-Proofpoint-ORIG-GUID: StJQWA-0-kQhyFhbrqSpHqlYrX_qkFG7 X-Authority-Analysis: v=2.4 cv=WJd/XmsR c=1 sm=1 tr=0 ts=6890bea7 cx=c_pps a=8dnTEL0w31pCL/ZHUAqC1A==: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=2OwXVqhp2XgA:10 a=0kUYKlekyDsA:10 a=64Cc0HZtAAAA:8 a=adZG2X102bNMX6mm5EgA:9 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-08-04_06,2025-08-04_01,2025-03-28_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 33MTBBOIS7MMNCKG3RYGU6WAMUKD3IP3 X-Message-ID-Hash: 33MTBBOIS7MMNCKG3RYGU6WAMUKD3IP3 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: 1754316527369116600 Content-Type: text/plain; charset="utf-8" Add the ability to enable/disable exposing the EDID information to the gues= t. 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 | 3 +++ 6 files changed, 33 insertions(+) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index d3c04d8b2a..e66db10abe 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -7110,6 +7110,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 cb096f2e1e..9939d83513 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -13547,6 +13547,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 @@ -26657,6 +26660,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 984e5bfc76..eca820892e 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 9782dca147..e369fb6e81 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -4812,6 +4812,11 @@ + + + + + diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 4e4f1e87eb..e8de386f30 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4739,6 +4739,9 @@ qemuBuildDeviceVideoCmd(virCommand *cmd, return -1; } =20 + 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