diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2022-03-19 11:28:54 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2022-03-19 11:28:54 +0000 |
| commit | 2058fdbe81e2985c226a026851dd26b146d3395c (patch) | |
| tree | 2a9ad1887e77a9e0de8ff52ae28d7b5e23940f09 /hw/display/vga.c | |
| parent | c9020c8e6c0d8eedb7f66b75bfb8c3c03a16b14b (diff) | |
| parent | 9eb840a20998a97c0ad0f5ced6ebc7e6a88a4dc4 (diff) | |
| download | focaccia-qemu-2058fdbe81e2985c226a026851dd26b146d3395c.tar.gz focaccia-qemu-2058fdbe81e2985c226a026851dd26b146d3395c.zip | |
Merge tag 'fixes-20220318-pull-request' of git://git.kraxel.org/qemu into staging
bugfixes for vga, audio, vnc # gpg: Signature made Fri 18 Mar 2022 13:56:22 GMT # gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full] # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [full] # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full] # Primary key fingerprint: A032 8CFF B93A 17A7 9901 FE7D 4CB6 D8EE D3E8 7138 * tag 'fixes-20220318-pull-request' of git://git.kraxel.org/qemu: hw/display/vga: Report a proper error when adding a 2nd ISA VGA hw/display: Allow vga_common_init() to return errors hw/display/cirrus_vga: Clean up indentation in pci_cirrus_vga_realize() audio/mixeng: Do not declare unused variables ui: avoid unnecessary memory operations in vnc_refresh_server_surface() ui/gtk: Ignore 2- and 3-button press events Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/display/vga.c')
| -rw-r--r-- | hw/display/vga.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/hw/display/vga.c b/hw/display/vga.c index 9d1f66af40..a7a291fa20 100644 --- a/hw/display/vga.c +++ b/hw/display/vga.c @@ -2168,9 +2168,10 @@ static inline uint32_t uint_clamp(uint32_t val, uint32_t vmin, uint32_t vmax) return val; } -void vga_common_init(VGACommonState *s, Object *obj) +bool vga_common_init(VGACommonState *s, Object *obj, Error **errp) { int i, j, v, b; + Error *local_err = NULL; for(i = 0;i < 256; i++) { v = 0; @@ -2205,8 +2206,18 @@ void vga_common_init(VGACommonState *s, Object *obj) s->vbe_size_mask = s->vbe_size - 1; s->is_vbe_vmstate = 1; + + if (s->global_vmstate && qemu_ram_block_by_name("vga.vram")) { + error_setg(errp, "Only one global VGA device can be used at a time"); + return false; + } + memory_region_init_ram_nomigrate(&s->vram, obj, "vga.vram", s->vram_size, - &error_fatal); + &local_err); + if (local_err) { + error_propagate(errp, local_err); + return false; + } vmstate_register_ram(&s->vram, s->global_vmstate ? NULL : DEVICE(obj)); xen_register_framebuffer(&s->vram); s->vram_ptr = memory_region_get_ram_ptr(&s->vram); @@ -2237,6 +2248,8 @@ void vga_common_init(VGACommonState *s, Object *obj) s->default_endian_fb = false; #endif vga_dirty_log_start(s); + + return true; } static const MemoryRegionPortio vga_portio_list[] = { |