aboutsummaryrefslogtreecommitdiff
path: root/hw/vfio/display.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2019-03-11 11:14:40 -0600
committerAlex Williamson <alex.williamson@redhat.com>2019-03-11 12:59:59 -0600
commitc62a0c7ce34ed99a7c45199b9fddeafaba73f3bf (patch)
treee4df9af942b85e7dc4f56291c58b34ccd17af63d /hw/vfio/display.c
parent08479114b0de29f7cdd6ae20f3490b45753db083 (diff)
vfio/display: add xres + yres properties
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 <kraxel@redhat.com> Reviewed-by: Liam Merwick <liam.merwick@oracle.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Diffstat (limited to 'hw/vfio/display.c')
-rw-r--r--hw/vfio/display.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/hw/vfio/display.c b/hw/vfio/display.c
index 276fba090d..212ad1674e 100644
--- a/hw/vfio/display.c
+++ b/hw/vfio/display.c
@@ -45,8 +45,8 @@ static void vfio_display_edid_update(VFIOPCIDevice *vdev, bool enabled,
qemu_edid_info edid = {
.maxx = dpy->edid_regs->max_xres,
.maxy = dpy->edid_regs->max_yres,
- .prefx = prefx,
- .prefy = prefy,
+ .prefx = prefx ?: vdev->display_xres,
+ .prefy = prefy ?: vdev->display_yres,
};
dpy->edid_regs->link_state = VFIO_DEVICE_GFX_LINK_STATE_DOWN;
@@ -142,6 +142,14 @@ static void vfio_display_edid_init(VFIOPCIDevice *vdev)
dpy->edid_blob = g_malloc0(dpy->edid_regs->edid_max_size);
+ /* if xres + yres properties are unset use the maximum resolution */
+ if (!vdev->display_xres) {
+ vdev->display_xres = dpy->edid_regs->max_xres;
+ }
+ if (!vdev->display_yres) {
+ vdev->display_yres = dpy->edid_regs->max_yres;
+ }
+
vfio_display_edid_update(vdev, true, 0, 0);
return;