From 9b330e482fc652b96a61e25a575aed87c091715d Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 7 Jun 2019 10:34:29 +0200 Subject: [PATCH 1/2] edid: add xmax + ymax properties Add new properties to allow setting the maximum display resolution. Resolutions larger than that will not be included in the mode list. In linux guests xrandr can be used to list modes. Note: The existing xres and yres properties set the preferred display resolution, i.e. the mode should be first in the mode list and guests should use it by default. Signed-off-by: Gerd Hoffmann Message-id: 20190607083429.31943-1-kraxel@redhat.com --- include/hw/display/edid.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/include/hw/display/edid.h b/include/hw/display/edid.h index bacf170889..7948bd2c40 100644 --- a/include/hw/display/edid.h +++ b/include/hw/display/edid.h @@ -22,6 +22,8 @@ void qemu_edid_region_io(MemoryRegion *region, Object *owner, #define DEFINE_EDID_PROPERTIES(_state, _edid_info) \ DEFINE_PROP_UINT32("xres", _state, _edid_info.prefx, 0), \ - DEFINE_PROP_UINT32("yres", _state, _edid_info.prefy, 0) + DEFINE_PROP_UINT32("yres", _state, _edid_info.prefy, 0), \ + DEFINE_PROP_UINT32("xmax", _state, _edid_info.maxx, 0), \ + DEFINE_PROP_UINT32("ymax", _state, _edid_info.maxy, 0) #endif /* EDID_H */ From 0a71966253c8b07586ebd6bee094a818e1e163b8 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 7 Jun 2019 10:34:44 +0200 Subject: [PATCH 2/2] edid: flip the default to enabled Signed-off-by: Gerd Hoffmann Reviewed-by: Michael S. Tsirkin Message-id: 20190607083444.32175-1-kraxel@redhat.com --- hw/core/machine.c | 8 +++++++- hw/display/bochs-display.c | 2 +- hw/display/vga-pci.c | 4 ++-- include/hw/virtio/virtio-gpu.h | 2 +- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/hw/core/machine.c b/hw/core/machine.c index f1a0f45f9c..84ebb8d247 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -24,7 +24,13 @@ #include "hw/pci/pci.h" #include "hw/mem/nvdimm.h" -GlobalProperty hw_compat_4_0_1[] = {}; +GlobalProperty hw_compat_4_0_1[] = { + { "VGA", "edid", "false" }, + { "secondary-vga", "edid", "false" }, + { "bochs-display", "edid", "false" }, + { "virtio-vga", "edid", "false" }, + { "virtio-gpu-pci", "edid", "false" }, +}; const size_t hw_compat_4_0_1_len = G_N_ELEMENTS(hw_compat_4_0_1); GlobalProperty hw_compat_4_0[] = {}; diff --git a/hw/display/bochs-display.c b/hw/display/bochs-display.c index 0a2a3e27c4..582133dd71 100644 --- a/hw/display/bochs-display.c +++ b/hw/display/bochs-display.c @@ -338,7 +338,7 @@ static void bochs_display_exit(PCIDevice *dev) static Property bochs_display_properties[] = { DEFINE_PROP_SIZE("vgamem", BochsDisplayState, vgamem, 16 * MiB), - DEFINE_PROP_BOOL("edid", BochsDisplayState, enable_edid, false), + DEFINE_PROP_BOOL("edid", BochsDisplayState, enable_edid, true), DEFINE_EDID_PROPERTIES(BochsDisplayState, edid_info), DEFINE_PROP_END_OF_LIST(), }; diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c index c66d9ec7ee..dedac5d128 100644 --- a/hw/display/vga-pci.c +++ b/hw/display/vga-pci.c @@ -340,7 +340,7 @@ static Property vga_pci_properties[] = { DEFINE_PROP_BIT("qemu-extended-regs", PCIVGAState, flags, PCI_VGA_FLAG_ENABLE_QEXT, true), DEFINE_PROP_BIT("edid", - PCIVGAState, flags, PCI_VGA_FLAG_ENABLE_EDID, false), + PCIVGAState, flags, PCI_VGA_FLAG_ENABLE_EDID, true), DEFINE_EDID_PROPERTIES(PCIVGAState, edid_info), DEFINE_PROP_BOOL("global-vmstate", PCIVGAState, vga.global_vmstate, false), DEFINE_PROP_END_OF_LIST(), @@ -351,7 +351,7 @@ static Property secondary_pci_properties[] = { DEFINE_PROP_BIT("qemu-extended-regs", PCIVGAState, flags, PCI_VGA_FLAG_ENABLE_QEXT, true), DEFINE_PROP_BIT("edid", - PCIVGAState, flags, PCI_VGA_FLAG_ENABLE_EDID, false), + PCIVGAState, flags, PCI_VGA_FLAG_ENABLE_EDID, true), DEFINE_EDID_PROPERTIES(PCIVGAState, edid_info), DEFINE_PROP_END_OF_LIST(), }; diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h index 8ecac1987a..6dd57f2025 100644 --- a/include/hw/virtio/virtio-gpu.h +++ b/include/hw/virtio/virtio-gpu.h @@ -125,7 +125,7 @@ typedef struct VirtIOGPUBaseClass { #define VIRTIO_GPU_BASE_PROPERTIES(_state, _conf) \ DEFINE_PROP_UINT32("max_outputs", _state, _conf.max_outputs, 1), \ DEFINE_PROP_BIT("edid", _state, _conf.flags, \ - VIRTIO_GPU_FLAG_EDID_ENABLED, false), \ + VIRTIO_GPU_FLAG_EDID_ENABLED, true), \ DEFINE_PROP_UINT32("xres", _state, _conf.xres, 1024), \ DEFINE_PROP_UINT32("yres", _state, _conf.yres, 768)