From nobody Mon Feb 9 22:03:57 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (209.51.188.17 [209.51.188.17]) by mx.zohomail.com with SMTPS id 1547199257776930.3426027488644; Fri, 11 Jan 2019 01:34:17 -0800 (PST) Received: from localhost ([127.0.0.1]:43934 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghtCb-0001qv-LY for importer@patchew.org; Fri, 11 Jan 2019 04:34:09 -0500 Received: from eggs.gnu.org ([209.51.188.92]:34561) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ghtAH-0000ix-Kk for qemu-devel@nongnu.org; Fri, 11 Jan 2019 04:31:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ghtAB-0003GM-AA for qemu-devel@nongnu.org; Fri, 11 Jan 2019 04:31:41 -0500 Received: from mx1.redhat.com ([209.132.183.28]:40426) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ghtA7-00034x-4v for qemu-devel@nongnu.org; Fri, 11 Jan 2019 04:31:37 -0500 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 049CA356F3; Fri, 11 Jan 2019 09:31:23 +0000 (UTC) Received: from sirius.home.kraxel.org (ovpn-117-186.ams2.redhat.com [10.36.117.186]) by smtp.corp.redhat.com (Postfix) with ESMTP id 1FBE81F0; Fri, 11 Jan 2019 09:31:17 +0000 (UTC) Received: by sirius.home.kraxel.org (Postfix, from userid 1000) id 6D2299AD8; Fri, 11 Jan 2019 10:31:16 +0100 (CET) From: Gerd Hoffmann To: qemu-devel@nongnu.org Date: Fri, 11 Jan 2019 10:31:14 +0100 Message-Id: <20190111093116.17188-4-kraxel@redhat.com> In-Reply-To: <20190111093116.17188-1-kraxel@redhat.com> References: <20190111093116.17188-1-kraxel@redhat.com> X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Fri, 11 Jan 2019 09:31:23 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH 3/5] vfio/display: add xres + yres properties X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Alex Williamson , intel-gvt-dev@lists.freedesktop.org, Gerd Hoffmann Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" This allows configure the display resolution which the vgpu should use. The information will be passed to the guest using EDID, so the mdev driver must support the vfio edid region for this to work. Signed-off-by: Gerd Hoffmann --- hw/vfio/pci.h | 2 ++ hw/vfio/display.c | 10 ++++++++-- hw/vfio/pci.c | 2 ++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/hw/vfio/pci.h b/hw/vfio/pci.h index b1ae4c0754..c11c3f1670 100644 --- a/hw/vfio/pci.h +++ b/hw/vfio/pci.h @@ -149,6 +149,8 @@ typedef struct VFIOPCIDevice { #define VFIO_FEATURE_ENABLE_IGD_OPREGION \ (1 << VFIO_FEATURE_ENABLE_IGD_OPREGION_BIT) OnOffAuto display; + uint32_t display_xres; + uint32_t display_yres; int32_t bootindex; uint32_t igd_gms; OffAutoPCIBAR msix_relo; diff --git a/hw/vfio/display.c b/hw/vfio/display.c index 0ef4d77e21..3a10072823 100644 --- a/hw/vfio/display.c +++ b/hw/vfio/display.c @@ -43,8 +43,8 @@ static void vfio_display_edid_update(VFIOPCIDevice *vdev,= bool enabled, int pref qemu_edid_info edid =3D { .maxx =3D dpy->edid_regs->max_xres, .maxy =3D dpy->edid_regs->max_yres, - .prefx =3D prefx, - .prefy =3D prefy, + .prefx =3D prefx ?: vdev->display_xres, + .prefy =3D prefy ?: vdev->display_yres, }; =20 dpy->edid_regs->link_state =3D VFIO_DEVICE_GFX_LINK_STATE_DOWN; @@ -120,6 +120,12 @@ static void vfio_display_edid_init(VFIOPCIDevice *vdev) pread_field(vdev->vbasedev.fd, dpy->edid_info, dpy->edid_regs, max_yre= s); dpy->edid_blob =3D g_malloc0(dpy->edid_regs->edid_max_size); =20 + /* if xres + yres properties are unset use the maximum resolution */ + if (!vdev->display_xres) + vdev->display_xres =3D dpy->edid_regs->max_xres; + if (!vdev->display_yres) + vdev->display_yres =3D dpy->edid_regs->max_yres; + vfio_display_edid_update(vdev, true, 0, 0); return; =20 diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index c0cb1ec289..6f9b6992fc 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3182,6 +3182,8 @@ static Property vfio_pci_dev_properties[] =3D { DEFINE_PROP_STRING("sysfsdev", VFIOPCIDevice, vbasedev.sysfsdev), DEFINE_PROP_ON_OFF_AUTO("display", VFIOPCIDevice, display, ON_OFF_AUTO_OFF), + DEFINE_PROP_UINT32("xres", VFIOPCIDevice, display_xres, 0), + DEFINE_PROP_UINT32("yres", VFIOPCIDevice, display_yres, 0), DEFINE_PROP_UINT32("x-intx-mmap-timeout-ms", VFIOPCIDevice, intx.mmap_timeout, 1100), DEFINE_PROP_BIT("x-vga", VFIOPCIDevice, features, --=20 2.9.3