From nobody Mon Sep 8 17:03:37 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 1754987226384470.3673715605711; Tue, 12 Aug 2025 01:27:06 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 4EA9F978; Tue, 12 Aug 2025 04:27:05 -0400 (EDT) Received: from lists.libvirt.org (localhost [IPv6:::1]) by lists.libvirt.org (Postfix) with ESMTP id B586D865; Tue, 12 Aug 2025 04:10:55 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 996) id 72A512912; Thu, 7 Aug 2025 07:05:26 -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 B922D2911 for ; Thu, 7 Aug 2025 07:05:25 -0400 (EDT) Received: from pps.filterd (m0127838.ppops.net [127.0.0.1]) by mx0a-002c1b01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 577AHh0f028556 for ; Thu, 7 Aug 2025 04:05:25 -0700 Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11on2096.outbound.protection.outlook.com [40.107.223.96]) by mx0a-002c1b01.pphosted.com (PPS) with ESMTPS id 48bpxev6we-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 07 Aug 2025 04:05:24 -0700 (PDT) Received: from PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) by CY8PR02MB9469.namprd02.prod.outlook.com (2603:10b6:930:70::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9009.15; Thu, 7 Aug 2025 11:05:22 +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.9009.016; Thu, 7 Aug 2025 11:05:22 +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.4 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_LOW, 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=0qQ0oo3CeMFEmjhEusVt9TU5lfjUqxq7zH7rQFf3j x4=; b=pG/VmXhDct9HHGOtaMbou2oPqOT6woY+6hxPTbxAXQK08NK6FCmlV5CWN fZRmX13uoMscicgDpTXPVtjFVKCSIRRd+rMMGOqpx7MFC07RnRy6PG6Tdpknvgvc TrUpVUMgFrzWl1d7glLxe9SPJjCduJiqz7wY+Tv86J0G12EFPfmvq8s4ihIeJsVk 6QLygzC4N3NmgZPwWmaIrMGNMh7RGkSqC84kCiFjhADxXGqQC8eTy7IH84hWEjEm iMNCdzNyoAvyy59ILe3hSjy0r3YSKiCPfFqgNZ0musYP/1QwINE79Q3Jpt1zaJp0 iIF8hFz04UG111IiZtk2mk/6+Guxg== ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=TIvwk2OAJ1FbL1bQBlgFio+Lkxc5+lLJen3oLnyGN6n1JJKE0ORXp8u54HBemoM2GMEg3hXirA/We9hzh3702Cf5JudJsK+R3Yzgkk9bIoHbgC2LPvqv4xFI4RSul5j8SmWsr10AZTQCNi2KMhB1zLsUupAIDGkn0gxSNBMxypYF2dr6+6RBQi0tgDf81sjMsdxJw0EAJBhkzqqiKUtQJgF23hhQGS1DIKlFsalxosEcEOawwN/n6tS2pAH3rt31bGAymSZOcnijWCa1Y0l581ztH2lUoXKeZAojqNT3gf5J2/kqeheDAwB2YREzvzbKJSsWv4AMuwIFcEterNiPsQ== 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=0qQ0oo3CeMFEmjhEusVt9TU5lfjUqxq7zH7rQFf3jx4=; b=bgSPiAQAPl/xU5eLsZDRXalwMr33leoJsWCO96QjUse40onRbrOAstOXCjEUZkk+oJU8maIsHtpqnLTc7eM/gmH+D3/E3CSaXdQ/9JGWY3RSUg8zNxu2TwlHBYvqppgA6c3z6XtGDyuL5gEoPwrryPCv129UmXz4l5v8DJhf2v+3sYgbZyAxzLrBI1oNu4T9jK/Nw1/HblIdB92aZBhM5qmNFooNFrBE4TPBmHqX8rr4aF4QgxB//lZlCEiGm0xz1Rof4NO+MN7Ixy8JPd8cbfv5K9VnrDrYLNaVJwVtazIhEuW2qnpah9xUqTXYoEgWHvw5meoOyJFrt/F5TPnB1w== 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=0qQ0oo3CeMFEmjhEusVt9TU5lfjUqxq7zH7rQFf3jx4=; b=HAFz24Y5eW8vap/hO+pOm2wi28Msl4sMGL5AiRtTQMAwNn1bjkMk8XuMq1bX0Hdnmijttb+MfHrvguhyBnbbnPOQk+JrKUQFm+ZlD+ks2LUD7Z/e4cY5aaV/Vg/geJn0RPOoxFx+DaUJwDc1NfFwo2OkV9+TbzZoKcIhy+OxLmTdAdJjvZIXpVTvqV1aC+IicMWy7cTrAo4YT5qOYyJ3VWzErKC5tn7A9GZc//wiUbmj8HjwUyBZC935eiCqJ0/NTXAV/LuV/HfyshtCyksxOhydF+lHvVNaOvgiXb/vSq/3NkMbpkbR4WYItXYQXuhgh5xRApW9w/vZC6ihdKnH5w== From: Mark Cave-Ayland To: devel@lists.libvirt.org Subject: [PATCH v3 1/2] conf: add support for 'edid' attribute to video model Date: Thu, 7 Aug 2025 12:05:09 +0100 Message-ID: <20250807110516.1452867-2-mark.caveayland@nutanix.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250807110516.1452867-1-mark.caveayland@nutanix.com> References: <20250807110516.1452867-1-mark.caveayland@nutanix.com> X-ClientProxiedBy: AM8P251CA0017.EURP251.PROD.OUTLOOK.COM (2603:10a6:20b:21b::22) To PH0PR02MB7159.namprd02.prod.outlook.com (2603:10b6:510:16::8) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PH0PR02MB7159:EE_|CY8PR02MB9469:EE_ X-MS-Office365-Filtering-Correlation-Id: e11b8740-0c84-41c0-9010-08ddd5a24df1 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?mVKxC0k/yUlA6FwP2HwmAffPflJyu+BuS3k1maFjjrDUMmITbOz1u0D+xY95?= =?us-ascii?Q?mvJOSGnAaZ5z3bO6K2f7vrhqPUzgAue53lwsdyIzPEhQpRCazfFeBwC/G9SA?= =?us-ascii?Q?5FwxxNWCoe9JQ6454/mkcVhDFIIsaViwwSgK5cGzEe5C3045vUDl+yyKA8EB?= =?us-ascii?Q?00d1Ml1qOk64+lo0He9e6HnxD+JSS6rXvCFJTW4WzecQiW8RJsa+SdGiwoi7?= =?us-ascii?Q?R8vOBzn405Onj/s4Uv3RVW2UrUJw6d2ijGuK8whS6QIRY+9QvP/sgme/Ra2R?= =?us-ascii?Q?PbVx32Rq9WMBULux8WbycVoCSEDp3eQ1NlPEJF73Ard+X19JJP2baxYoZpq9?= =?us-ascii?Q?/M+U870i+RR9zf9+7lqwYa1T1GQqWaE0eu8MAKuyEjfK4Duk7spYVJ9ZpUTv?= =?us-ascii?Q?9a8UnkJxQ0KdiZojih1bMmYqgc94P7TsS1plLTmWn2UJPwEPCWw0EmNA59Ha?= =?us-ascii?Q?tyqSg0J28yGU3jjYAfoEhNt/5j3Dsiavplu+r4NkmKmRDDdc0thYjCIKwnXu?= =?us-ascii?Q?z0ghFHwWCZSlv9NUSgWLlB8WEw2yv/0z+XlMzUZvwtOboSverK3qClx5p2XP?= =?us-ascii?Q?d0RmYi/RIhhXAXF/F2Z4E42jgurAV69yTg024Nx/2b8X5AIuvwcc4zFCenQq?= =?us-ascii?Q?2DFzwZBQ9ALxS0m+WiI69AsKuBm9RJWJEjisISSfoIy48L5c289Wdf/2p6dC?= =?us-ascii?Q?o0EuVwFPO2cZanDfyMcBGRaTQ0cFCVTqX1NF3aXRNRq2d2t11lxBH6n+R1Hb?= =?us-ascii?Q?3JDX2beD9CtGY28fkZ/vFN4HFSAA5n7kCollI49aMIuW3kE8WUc8CVKnd1PR?= =?us-ascii?Q?7yEeiNq2L7ChUSsEaB9bgvwh3t/CNUPH9cyrrgXo7hqjA3v4u7x5KtaYJlFd?= =?us-ascii?Q?Y2egMh1dddF29XQ4wIol+ZK2BhF/6tFwioiSCj+2Z+htdHS6ezGSubOHx8PV?= =?us-ascii?Q?sfoZKXNB7nR9FehPIT+3YKSljZ/KG2E8KNPI6smK/2sE7uPft6z/9aKjIRp1?= =?us-ascii?Q?cX5erVPeI42O3iFC/+x7++cjfQaZpB7FqleHbCdlj7zadl+rkPnXtZ/Cd1jV?= =?us-ascii?Q?w13926P5Uq2RwSan6v4ZxyQ/TQNaEDiN6sK91fKz5zhKvYj1ETLPy58YZxSD?= =?us-ascii?Q?0MfPzrasuuu6PMixS4ZstvgDDBPz+pbiryZbk1pKCkD9oBNzhJm821vVmtZ3?= =?us-ascii?Q?8VDIXxcP9a+PZQ4HLwDARr7HwT6wkMVxi6gbZlrGrrUg83l5r38paCZ3ofkZ?= =?us-ascii?Q?cUTmmB29NvJSVg7vkOnyTrYXgouBN59t5buzD+Q8P+/jbg+gmtGdaG0KiyO+?= =?us-ascii?Q?p2DB63pfwjfgL8TWBTKp2S10kkIpxzPuvs5Kf+A+g0MbOokaH27+UbN86z7X?= =?us-ascii?Q?jbCknvL2KbQq+SYK6v4YyndKUYyyZ8NnG+dLDzSCHDD3aZ6uDA=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?JLu74J54LnEXcTGvc84pmtLawl7PmcPPObuRSH38B5FNjsiu2cYSEMUHZoKQ?= =?us-ascii?Q?zLVHLtVUIDmVm66PBIFA5q44nauCaXXH8MtVyb7ry7E1sdX4sadWXgIxaWRH?= =?us-ascii?Q?RoTPPU4Arf6X7leFCeTKBsJ03xIddoIZKzUO3IVjgfzTHTKqYeVkoW9him4C?= =?us-ascii?Q?G+s9Ahzfyowwup5VYqtvWCjmtWZSoP3G3zwMCHFCFGazsM9OTBq4UWJ2uN5O?= =?us-ascii?Q?TRRusmy+FMFsXjXqHnpG/GweKG4WUMVaXISgb6sCUH5cl3jNwmozpWOJY11t?= =?us-ascii?Q?p4cwUhrFUO1fSAAyX+23NWuMLoadv8240RXJHETFG9DGdLLNpRZmYwYUqC0H?= =?us-ascii?Q?pC3kGY9cb+oYBjjaiVp518q4pzTIa/W8qbCrW98ZRHZ4yGLC+legRjGzJjfK?= =?us-ascii?Q?q6fD9GVZ3j/jUkiJmIdTGB+MkqvLpBSo5lfwMlV4mqm89d8BkNq2GlrTPd36?= =?us-ascii?Q?+A0hSVhtKDQCfx+qbB1A7GsRHsEEdkc9Zqrxl28xv/aTnjTn9H2Wl9tplHOO?= =?us-ascii?Q?kC/ZMiztUZAGifI++vCrcIGWqsGwoq+35e66ZPxVQGjnACuvons2vckuJ4aB?= =?us-ascii?Q?U18WvGYQXyf6/IWROVlI9AZdmSv+uONPx6YiOGkz34BqzI9w6GaZSt4jRYFm?= =?us-ascii?Q?+Oq50g4yZKDrUXlCaa9UoUqdVT+m1gyiAuy46WHyTMPPIJfH9x1qCkMmOeQp?= =?us-ascii?Q?iikp8yBwnmftfdpm4swrQ6tZNClmwqS2asV9Wo4FuX8s5Fq5sz4p0lp8fsq2?= =?us-ascii?Q?G9s/VnR+rWam4eKBXeBG/Y1wJ/qGmFsTNCRmsMY6kqWlroYhG7qKk+tFCxII?= =?us-ascii?Q?3W31m5S5jL62kIlkFg4/WLGaTSnXggRE0t67KZk7/WKTHUm51VTfMoEGDtfo?= =?us-ascii?Q?1qbcsi10OwtvjHB2ONB9Y01+FSpxlvXQMqqoAemXvAubgMRtUAN1CEqXl7tL?= =?us-ascii?Q?KdKAteYPP0lcxdtaM+osBcuWuc6us0nAsfWrt5xwNMKq+QBCuPdF41bjInL0?= =?us-ascii?Q?mA/gda8ZKW2mZAdqxMFLP1KZhQ73E7YlaZsXy9cW4iLj6Rl/d3G3j9xwhtwi?= =?us-ascii?Q?Zx37jXWQWd5Sy3NCNDDZ69P/EM1urd3zAyQl59N/V0HGkWjagrnwKPWm5VyV?= =?us-ascii?Q?Tojo49zmG3Fsbs5R8zUIOoRO5bYwcS+m4j+OfHe8o/glmgKXyu6S3I9gJYej?= =?us-ascii?Q?5TDEwNLJpuhawX7B1M4LgYGYjM+kMUPFuE9fvizr/ZIzpzzX6TeLIXf/ulDR?= =?us-ascii?Q?qshuQb7+K2RVFwStn7icFqEvQYQO6rhnQfXk2Z+qmbyU8ofwzLTUqZfx4tNk?= =?us-ascii?Q?gHzb+XxL6aBi1sXFaYbybsouTmktLGTv+Qm/qWjW7hnf+lbbzHDKfpW33h6V?= =?us-ascii?Q?sWbxPwYAeZYnJYgtvTwxuv5HLRQHG0AM86XljQJDefyGG47FQ8SAPwDdJNEP?= =?us-ascii?Q?GsxFWoZgafv3KSI2VeJ0pb9j6hvEov/Oi9qRViJy9Jv3sqde4a9Lp2p4Lmhg?= =?us-ascii?Q?6d6vP8YanwHCygkStCJnPf1QXXo1+QBhnDSOdjBqlDRlhS1CX/S2Q5Qcw2Yu?= =?us-ascii?Q?FdaluVFQ3ltE++0GfZoI0BLGoJVuthakkPoOhNeDOKSdmC6X2QJ74GxjTgT5?= =?us-ascii?Q?T5QOnNNX9DDjXxhUL7Cgg0s0zHV3f5AC82WWT1UxYS76B/Cs3kRL36wKU9tm?= =?us-ascii?Q?lTWp5A=3D=3D?= X-OriginatorOrg: nutanix.com X-MS-Exchange-CrossTenant-Network-Message-Id: e11b8740-0c84-41c0-9010-08ddd5a24df1 X-MS-Exchange-CrossTenant-AuthSource: PH0PR02MB7159.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Aug 2025 11:05:22.7276 (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: 5eYISD+w3c4HJm6R0rx2b1RqS+kJtoWiTepaCU1NThX+NK4vjO6L0cFHPx6N09szrNpd5Hft8nZOaws8mgCzhy3xP112UIX9z8hDs4pNPuE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR02MB9469 X-Authority-Analysis: v=2.4 cv=Qcdmvtbv c=1 sm=1 tr=0 ts=68948874 cx=c_pps a=GDZr2dl6+9TGnY0VEvXriA==: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=gSa5WHMw4tvvIIKkp2gA:9 X-Proofpoint-GUID: 3QITA_506tYM1ZuGE0V7qAg8lq0CrbMU X-Proofpoint-ORIG-GUID: 3QITA_506tYM1ZuGE0V7qAg8lq0CrbMU X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwODA1MDEyNyBTYWx0ZWRfX7BwRcsBg+UDk hafZCxnb/7mg8LsMzOnHPekTBe1epPp9k9+N7kcgHIKv8XMk+NH26av3bmokNqJEKHHqXtlvm03 nPTcIRNqL3vf72FDFNmpch6peSkkcJYCgzMQ2u9YQfdxAsEzdeLqPY9ECCCikIrOVfWdYRo2e1v bLtOzO1K6W6HBHG1F1/SfrUmGRmx4V5GumN/O8/pFazCaOjXVHUD6crHmcIY2ZeLff1bp/adrzR beRdp4Sz2bM/i0ZfNrViyzx+vaefSbOzqNyxkQWIF8eWMJxfFzIbH6aTd2g6EmpJzbamK3VM5Sj Ag8dZTK6vBnyKgqYnyI2tMhxUWjdDbmhv4Vg38+V7UGBgqU5aDD6GqIoxIze5aHLhA/CjrciUD7 x8pWNTum 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-07_02,2025-08-06_01,2025-03-28_01 X-Proofpoint-Spam-Reason: safe Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 66GN7L2Y4L3H5BABCTKFTEM6MRS6BQYX X-Message-ID-Hash: 66GN7L2Y4L3H5BABCTKFTEM6MRS6BQYX 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: 1754987227853116600 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 | 13 +++++++++++++ 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, 41 insertions(+) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index d3c04d8b2a..9f7311b6d5 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 defaul= t value. + Otherwise setting ``edid`` to ``on`` will expose the device EDID blob t= o the + guest, whilst setting it to ``off`` will hide the device EDID blob from= the + guest. The ``edid`` attribute is only valid for model types ``vga``, ``= bochs``, + 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..7766e302ec 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 @@ -21051,6 +21054,14 @@ virDomainVideoDefCheckABIStability(virDomainVideoD= ef *src, } } =20 + if (src->edid !=3D dst->edid) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Target video card edid %1$s does not match sourc= e %2$s"), + virTristateSwitchTypeToString(dst->type), + virTristateSwitchTypeToString(src->type)); + return false; + } + if (!virDomainVirtioOptionsCheckABIStability(src->virtio, dst->virtio)) return false; =20 @@ -26657,6 +26668,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