From nobody Sun May 5 04:20:54 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1602076163; cv=none; d=zohomail.com; s=zohoarc; b=J+65skdIJTAA4YtssUqVF42ZmbsXDEl8yg1imjlg6ARPy2A7vXuP2MjuRWmVhANcgyoN60HaZWH6PXlbGupvMXD5Q0p2NqWk85RV+mNsfoOxNE1uGkf0q66gWUqK421aj9XszbhJLwf6GiT42zNy3CpyIKIhlqnw7al6Ens7mao= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602076163; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=leFTYk/5NmPwApUj6zKeOJkG359vX9M7E9mxceByRkY=; b=NyfiyhgTOL7eDdZNN5DwXQatQQhnNNpEAjmEHFXH8/KAiE+b1zunylY/h29gf3qCfHXF2q1uMkbpFJtcHRnDLR9xOgWdQFs+3UmgBHKe1iT2sXxtJT+YQK/OotYYqF59G1dg1UoBtuoDAV4Dfdd6FxoFG+utKMMjoKtsieoSscg= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 1602076163952932.4423915274871; Wed, 7 Oct 2020 06:09:23 -0700 (PDT) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-579-CnyJAxQrPnylSn3b4DANEg-1; Wed, 07 Oct 2020 09:09:20 -0400 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id AF28D18BE182; Wed, 7 Oct 2020 13:09:13 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 513615D9F1; Wed, 7 Oct 2020 13:09:13 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id CE926181A06B; Wed, 7 Oct 2020 13:09:12 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 097CpBDD014265 for ; Wed, 7 Oct 2020 08:51:12 -0400 Received: by smtp.corp.redhat.com (Postfix) id 2ACE02022799; Wed, 7 Oct 2020 12:51:11 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast05.extmail.prod.ext.rdu2.redhat.com [10.11.55.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 254A52022798 for ; Wed, 7 Oct 2020 12:51:08 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [207.211.31.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id AA172805B00 for ; Wed, 7 Oct 2020 12:51:08 +0000 (UTC) Received: from know-smtprelay-omc-11.server.virginmedia.net (know-smtprelay-omc-11.server.virginmedia.net [80.0.253.75]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-299-s2RUb8-yMsm45ALPE19yKQ-1; Wed, 07 Oct 2020 08:51:06 -0400 Received: from mail.snewbury.org.uk ([86.24.188.28]) by cmsmtp with ESMTPA id Q8tCkWY6QNqd7Q8tDkrySR; Wed, 07 Oct 2020 13:49:52 +0100 Received: from artifact.access.snewbury.org.uk ([IPv6:2001:470:6efd:f101:0:0:0:a58]) by mail.snewbury.org.uk (8.16.1/8.16.1) with ESMTP id 097ClXji1498734; Wed, 7 Oct 2020 13:47:33 +0100 X-MC-Unique: CnyJAxQrPnylSn3b4DANEg-1 X-MC-Unique: s2RUb8-yMsm45ALPE19yKQ-1 X-Originating-IP: [86.24.188.28] X-Authenticated-User: sjnewbury@virginmedia.com X-Authority: v=2.3 cv=bvv4+3Si c=1 sm=1 tr=0 a=1Au+4VMCrm8g9YIHxruHCQ==:117 a=1Au+4VMCrm8g9YIHxruHCQ==:17 a=xqWC_Br6kY4A:10 a=afefHYAZSVUA:10 a=N1CowNylAAAA:8 a=oilY8nwgKwAwU6eVj7AA:9 a=U7UF0mdKCWTxhWz5:21 a=0C2pRQm8qdZf0ACV:21 a=sPYuha5Ws6K-Rx_L469D:22 X-Virus-Scanned: amavisd-new at snewbury.org.uk From: Steven Newbury To: libvir-list@redhat.com Subject: [PATCH] qemu: Add support for -device ati-vga (models: rage128p and rv100) Date: Wed, 7 Oct 2020 13:50:20 +0100 Message-Id: <20201007125020.224096-1-steve@snewbury.org.uk> MIME-Version: 1.0 X-CMAE-Envelope: MS4wfKUox1rTRawIGfaKxctYOpDVpCD3AYBT9nv8bxIZGZsmh6gg7eVcMaFWPQW/87RhBiP4lBf9Hg6Rtiis4G91SN1557RAXCDS5eC91NlkFiIPegjQu9ex QTDeEUxzDZXrylChcbCpj1/ZSHnONDL9HNNxZU90lpt82CD+cJDIjp1aBKnsDN7unQLO0UL1tS2WWw== X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.78 on 10.11.54.4 X-loop: libvir-list@redhat.com X-Mailman-Approved-At: Wed, 07 Oct 2020 09:09:11 -0400 Cc: Steven Newbury X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When using a passthrough GPU with libvirt there is no option to pass "x-vga=3Don" to the device specification. This means legacy VGA support isn't available which prevents any non-UEFI cards from POSTing and prevents some drivers from initialising for example Windows 10 NVIDIA driver for GeForce 8800. Signed-off-by: Steven Newbury --- docs/schemas/domaincommon.rng | 2 ++ src/conf/domain_conf.c | 7 +++++++ src/conf/domain_conf.h | 2 ++ src/qemu/qemu_capabilities.c | 6 ++++++ src/qemu/qemu_capabilities.h | 1 + src/qemu/qemu_command.c | 6 ++++++ src/qemu/qemu_domain_address.c | 2 ++ src/qemu/qemu_process.c | 2 ++ tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml | 1 + tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml | 1 + tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml | 1 + 12 files changed, 32 insertions(+) diff --git a/docs/schemas/domaincommon.rng b/docs/schemas/domaincommon.rng index 7d4b105981..d52eb293a8 100644 --- a/docs/schemas/domaincommon.rng +++ b/docs/schemas/domaincommon.rng @@ -3915,6 +3915,8 @@ none bochs ramfb + rage128p + rv100 diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index c003b5c030..5d8b6a7611 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -811,6 +811,8 @@ VIR_ENUM_IMPL(virDomainVideo, "none", "bochs", "ramfb", + "rage128p", + "rv100", ); =20 VIR_ENUM_IMPL(virDomainVideoVGAConf, @@ -16016,6 +16018,11 @@ virDomainVideoDefaultRAM(const virDomainDef *def, /* QEMU use 64M as the minimal video memory for qxl device */ return 64 * 1024; =20 + case VIR_DOMAIN_VIDEO_TYPE_RAGE128P: + case VIR_DOMAIN_VIDEO_TYPE_RV100: + /* The real world devices started at 16M */ + return 16 * 1024; + case VIR_DOMAIN_VIDEO_TYPE_DEFAULT: case VIR_DOMAIN_VIDEO_TYPE_VBOX: case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 450686dfb5..b12c7ab00d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -1502,6 +1502,8 @@ typedef enum { VIR_DOMAIN_VIDEO_TYPE_NONE, VIR_DOMAIN_VIDEO_TYPE_BOCHS, VIR_DOMAIN_VIDEO_TYPE_RAMFB, + VIR_DOMAIN_VIDEO_TYPE_RAGE128P, + VIR_DOMAIN_VIDEO_TYPE_RV100, =20 VIR_DOMAIN_VIDEO_TYPE_LAST } virDomainVideoType; diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index 38b901a6c4..0b2bd24619 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -600,6 +600,7 @@ VIR_ENUM_IMPL(virQEMUCaps, =20 /* 380 */ "usb-host.hostdevice", + "ati-vga", ); =20 =20 @@ -1325,6 +1326,7 @@ struct virQEMUCapsStringFlags virQEMUCapsObjectTypes[= ] =3D { { "tcg-accel", QEMU_CAPS_TCG }, { "pvscsi", QEMU_CAPS_SCSI_PVSCSI }, { "spapr-tpm-proxy", QEMU_CAPS_DEVICE_SPAPR_TPM_PROXY }, + { "ati-vga", QEMU_CAPS_DEVICE_ATI_VGA }, }; =20 =20 @@ -6127,6 +6129,10 @@ virQEMUCapsFillDomainDeviceVideoCaps(virQEMUCapsPtr = qemuCaps, VIR_DOMAIN_CAPS_ENUM_SET(dev->modelType, VIR_DOMAIN_VIDEO_TYPE_BOC= HS); if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_RAMFB)) VIR_DOMAIN_CAPS_ENUM_SET(dev->modelType, VIR_DOMAIN_VIDEO_TYPE_RAM= FB); + if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_ATI_VGA)) { + VIR_DOMAIN_CAPS_ENUM_SET(dev->modelType, VIR_DOMAIN_VIDEO_TYPE_RAG= E128P); + VIR_DOMAIN_CAPS_ENUM_SET(dev->modelType, VIR_DOMAIN_VIDEO_TYPE_RV1= 00); + } } =20 =20 diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 107056ba17..e316bd1532 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -580,6 +580,7 @@ typedef enum { /* virQEMUCapsFlags grouping marker for = syntax-check */ =20 /* 380 */ QEMU_CAPS_USB_HOST_HOSTDEVICE, /* -device usb-host.hostdevice */ + QEMU_CAPS_DEVICE_ATI_VGA, /* -device ati-vga */ =20 QEMU_CAPS_LAST /* this must always be the last item */ } virQEMUCapsFlags; diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 476cf6972e..b501b8e3e2 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -101,6 +101,8 @@ VIR_ENUM_IMPL(qemuVideo, "" /* 'none' doesn't make sense here */, "bochs-display", "", /* ramfb can't be used with -vga */ + "rage128p", + "rv100", ); =20 VIR_ENUM_DECL(qemuDeviceVideo); @@ -120,6 +122,8 @@ VIR_ENUM_IMPL(qemuDeviceVideo, "" /* 'none' doesn't make sense here */, "bochs-display", "ramfb", + "ati-vga" /* (rage128p) */, + "ati-vga" /* (rv100) */, ); =20 VIR_ENUM_DECL(qemuDeviceVideoSecondary); @@ -139,6 +143,8 @@ VIR_ENUM_IMPL(qemuDeviceVideoSecondary, "" /* 'none' doesn't make sense here */, "" /* no secondary device for bochs */, "" /* no secondary device for ramfb */, + "" /* no secondary device for ati-vga? (rage128p) */, + "" /* no secondary device for ati-vga? (rv100) */, ); =20 VIR_ENUM_IMPL(qemuSoundCodec, diff --git a/src/qemu/qemu_domain_address.c b/src/qemu/qemu_domain_address.c index dd87915a97..d8273af92f 100644 --- a/src/qemu/qemu_domain_address.c +++ b/src/qemu/qemu_domain_address.c @@ -964,6 +964,8 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDevic= eDefPtr dev, case VIR_DOMAIN_VIDEO_TYPE_VBOX: case VIR_DOMAIN_VIDEO_TYPE_QXL: case VIR_DOMAIN_VIDEO_TYPE_PARALLELS: + case VIR_DOMAIN_VIDEO_TYPE_RAGE128P: + case VIR_DOMAIN_VIDEO_TYPE_RV100: return pciFlags; =20 case VIR_DOMAIN_VIDEO_TYPE_BOCHS: diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index 6b5de29fdb..09aac14430 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -3111,6 +3111,8 @@ qemuProcessUpdateVideoRamSize(virQEMUDriverPtr driver, case VIR_DOMAIN_VIDEO_TYPE_CIRRUS: case VIR_DOMAIN_VIDEO_TYPE_XEN: case VIR_DOMAIN_VIDEO_TYPE_VBOX: + case VIR_DOMAIN_VIDEO_TYPE_RAGE128P: + case VIR_DOMAIN_VIDEO_TYPE_RV100: case VIR_DOMAIN_VIDEO_TYPE_LAST: break; } diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml b/tests/qemu= capabilitiesdata/caps_5.0.0.aarch64.xml index 928af2a01c..30609085e1 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.aarch64.xml @@ -199,6 +199,7 @@ + 5000000 0 61700241 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml b/tests/qemuca= pabilitiesdata/caps_5.0.0.ppc64.xml index e8668a25a9..254da198b2 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.ppc64.xml @@ -208,6 +208,7 @@ + 5000000 0 42900241 diff --git a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.0.0.x86_64.xml index 546b9b0422..ae6e66679b 100644 --- a/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.0.0.x86_64.xml @@ -243,6 +243,7 @@ + 5000000 0 43100241 diff --git a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml b/tests/qemuc= apabilitiesdata/caps_5.1.0.x86_64.xml index 987beb965e..33929735f5 100644 --- a/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml +++ b/tests/qemucapabilitiesdata/caps_5.1.0.x86_64.xml @@ -243,6 +243,7 @@ + 5001000 0 43100242 --=20 2.28.0