From nobody Thu May 9 02:14:34 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 63.128.21.124 as permitted sender) client-ip=63.128.21.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 63.128.21.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1602075496; cv=none; d=zohomail.com; s=zohoarc; b=Lqh8sYOBgLo5FPz2c32rdNM/ofcp545uKgKw2aGFbSe4Lc8gsJY576qu19YdC7Wqu/3wzSz0dKzq4ZgDWmbOW/v/q8VCO8CA9G9Til3ryFc1D2WMu3n/1wSS6j03GWVgesh3UNsZ7YYEvwNtpEiA202oi9X6tdMFRCUWowu+BD8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1602075496; 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=bshAApD1piI+LKt+PXG9lzm6VRfCM9BgOXB4XP44Vic=; b=HkxbgUZR42dx2cKvOXIONpmcZ1abq3JUPr4xIKKZYylfyB9jJY/2oXE1Ii8UniIXT8T28giQ0rJ1AADRHnNsiK1ju9Crvx5JT8YjmIZB8fTQ7mK3dSuQMjCYbiSUYx1FXa/n3hosyCN3CGToOjA/B6sdUOXR6v/VE1znjVq+Po8= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 63.128.21.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 [63.128.21.124]) by mx.zohomail.com with SMTPS id 1602075496548827.5461889242226; Wed, 7 Oct 2020 05:58:16 -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-358-SmeQXb-ZOqqWfREDbYCqAQ-1; Wed, 07 Oct 2020 08:58:13 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 5900618BE165; Wed, 7 Oct 2020 12:58:07 +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 BB4E11002C29; Wed, 7 Oct 2020 12:58:06 +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 6FE561826D37; Wed, 7 Oct 2020 12:58:05 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 097Cw4Pa015169 for ; Wed, 7 Oct 2020 08:58:04 -0400 Received: by smtp.corp.redhat.com (Postfix) id 0C35DF641D; Wed, 7 Oct 2020 12:58:04 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast01.extmail.prod.ext.rdu2.redhat.com [10.11.55.17]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 00C6CF6403 for ; Wed, 7 Oct 2020 12:58:00 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.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 9D3C98EDB36 for ; Wed, 7 Oct 2020 12:58:00 +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-504-AUrxlWqVO8evXg7QavhoBw-1; Wed, 07 Oct 2020 08:57:57 -0400 Received: from mail.snewbury.org.uk ([86.24.188.28]) by cmsmtp with ESMTPA id Q911kWdbVNqd7Q911krylQ; Wed, 07 Oct 2020 13:57:55 +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 097Ctc8I1499562; Wed, 7 Oct 2020 13:55:38 +0100 X-MC-Unique: SmeQXb-ZOqqWfREDbYCqAQ-1 X-MC-Unique: AUrxlWqVO8evXg7QavhoBw-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=87cKUeWWiASn5HcW:21 a=A0nO67IQ3yAjShlw: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:58:33 +0100 Message-Id: <20201007125834.224913-1-steve@snewbury.org.uk> MIME-Version: 1.0 X-CMAE-Envelope: MS4wfNf/WwQmNW/vO3ythK3JMQCYWzkW/MYH0hYHP0+fwaOXUXSGeCvd/KEBWKwvsghfH6q5bFYlh++oC1EwOFtbJ43gnkeU9kHajF9uhzdOohEueedTHoAx HVzDQuCMee+N6EscybgKYZXcpkbfU6CV6fn9PXTJZZalnCkxUbHTQ4e0FKZXq8xbei7F5on/0VTi8Q== 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.79 on 10.11.54.5 X-loop: libvir-list@redhat.com 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.84 on 10.5.11.22 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" QEMU since 5.0 has two new video devices rage128p and rv100. These emulate ATI Rage128 Pro and Radeon GPUs respectively, at least to some extent. This can be useful for OS without virtualisation drivers or support for VBE or the old Cirrus emulation. 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