From d82b11f69953cf15cee819bcf02dfd87325980a9 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 28 Jul 2022 08:41:28 +0200 Subject: [PATCH 1/6] ui: dbus-display requires CONFIG_GBM MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without CONFIG_GBM, compiling dbus-display fails with ../ui/dbus.c: In function ‘dbus_create_context’: ../ui/dbus.c:47:20: error: ‘qemu_egl_rn_ctx’ undeclared (first use in this function); did you mean ‘qemu_egl_init_ctx’? 47 | qemu_egl_rn_ctx); | ^~~~~~~~~~~~~~~ | qemu_egl_init_ctx ../ui/dbus.c:47:20: note: each undeclared identifier is reported only once for each function it appears in and many other similar errors, because include/ui/egl-helpers.h only has these declaration if gbm is found on the system. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1108 Reviewed-by: Marc-André Lureau Reviewed-by: Daniel P. Berrangé Signed-off-by: Paolo Bonzini --- meson.build | 4 ++-- ui/meson.build | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/meson.build b/meson.build index 75aaca8462..294e9a8f32 100644 --- a/meson.build +++ b/meson.build @@ -1677,8 +1677,8 @@ dbus_display = get_option('dbus_display') \ error_message: '-display dbus requires --enable-modules') \ .require(gdbus_codegen.found(), error_message: '-display dbus requires gdbus-codegen') \ - .require(opengl.found(), - error_message: '-display dbus requires epoxy/egl') \ + .require(opengl.found() and gbm.found(), + error_message: '-display dbus requires epoxy/egl and gbm') \ .allowed() have_virtfs = get_option('virtfs') \ diff --git a/ui/meson.build b/ui/meson.build index e9f48c5315..ec13949776 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -81,7 +81,7 @@ if dbus_display '--interface-prefix', 'org.qemu.', '--c-namespace', 'QemuDBus', '--generate-c-code', '@BASENAME@']) - dbus_ss.add(when: [gio, pixman, opengl], + dbus_ss.add(when: [gio, pixman, opengl, gbm], if_true: [files( 'dbus-chardev.c', 'dbus-clipboard.c', From 37e7b86766244b62a406747bb78e049390d0b528 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Thu, 28 Jul 2022 15:32:18 +0200 Subject: [PATCH 2/6] vga: fix incorrect line height in 640x200x2 mode When in CGA modes, QEMU wants to ignore the maximum scan field (bits 0..4) of the maximum scan length register in the CRTC. It is not clear why this is needed---for example, Bochs ignores bit 7 instead. The issue is that the CGA modes are not detected correctly, and in particular mode 6 results in multi_scan==3 according to how SeaBIOS programs it. The right way to check for CGA graphics modes is to check whether bit 13 of the address is special cased by the CRT controller to achieve line interleaving, i.e. whether bit 0 of the CRTC mode control register is clear. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1020 Reported-by: Korneliusz Osmenda Signed-off-by: Paolo Bonzini --- hw/display/vga.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/display/vga.c b/hw/display/vga.c index 5dca2d1528..50ecb1ad02 100644 --- a/hw/display/vga.c +++ b/hw/display/vga.c @@ -1514,9 +1514,10 @@ static void vga_draw_graphic(VGACommonState *s, int full_update) force_shadow = true; } + /* bits 5-6: 0 = 16-color mode, 1 = 4-color mode, 2 = 256-color mode. */ shift_control = (s->gr[VGA_GFX_MODE] >> 5) & 3; double_scan = (s->cr[VGA_CRTC_MAX_SCAN] >> 7); - if (shift_control != 1) { + if (s->cr[VGA_CRTC_MODE] & 1) { multi_scan = (((s->cr[VGA_CRTC_MAX_SCAN] & 0x1f) + 1) << double_scan) - 1; } else { From bb7e03cb5677b570c5966c7dd946f9ed7acd11bc Mon Sep 17 00:00:00 2001 From: Claudio Fontana Date: Mon, 4 Jul 2022 09:58:32 +0200 Subject: [PATCH 3/6] stubs: update replay-tools to match replay.h types detected with GCC 13 [-Werror=enum-int-mismatch] Solves Issue #1096. Signed-off-by: Claudio Fontana Cc: Pavel Dovgalyuk Reviewed-by: Thomas Huth Message-Id: <20220704075832.31537-1-cfontana@suse.de> Signed-off-by: Paolo Bonzini --- stubs/replay-tools.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/stubs/replay-tools.c b/stubs/replay-tools.c index 43296b3d4e..f2e72bb225 100644 --- a/stubs/replay-tools.c +++ b/stubs/replay-tools.c @@ -7,13 +7,14 @@ bool replay_events_enabled(void) return false; } -int64_t replay_save_clock(unsigned int kind, int64_t clock, int64_t raw_icount) +int64_t replay_save_clock(ReplayClockKind kind, + int64_t clock, int64_t raw_icount) { abort(); return 0; } -int64_t replay_read_clock(unsigned int kind, int64_t raw_icount) +int64_t replay_read_clock(ReplayClockKind kind, int64_t raw_icount) { abort(); return 0; @@ -48,11 +49,11 @@ void replay_mutex_unlock(void) { } -void replay_register_char_driver(Chardev *chr) +void replay_register_char_driver(struct Chardev *chr) { } -void replay_chr_be_write(Chardev *s, uint8_t *buf, int len) +void replay_chr_be_write(struct Chardev *s, uint8_t *buf, int len) { abort(); } From 705c881f7d8573d7520de2566396feb6a1223d57 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Thu, 28 Jul 2022 11:39:01 -0700 Subject: [PATCH 4/6] configure: Fix ppc container_cross_cc substitution When moving this code out of probe_target_compiler(), we failed to adjust the variable in which the target is located, resulting in e.g. powerpc64-linux-user-linux-gnu-gcc-10 Fixes: cd362defbbd ("tests/tcg: merge configure.sh back into main configure script") Signed-off-by: Richard Henderson Message-Id: <20220728183901.1290113-1-richard.henderson@linaro.org> Signed-off-by: Paolo Bonzini --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index 2c19329d58..c4c02b8438 100755 --- a/configure +++ b/configure @@ -2028,7 +2028,7 @@ probe_target_compiler() { ;; ppc64|ppc64le) container_image=debian-powerpc-test-cross - container_cross_prefix=powerpc${1#ppc}-linux-gnu- + container_cross_prefix=powerpc${target_arch#ppc}-linux-gnu- container_cross_cc=${container_cross_prefix}gcc-10 ;; riscv64) From 47c182fe8b03c0c40059fb95840923e65c9bdb4f Mon Sep 17 00:00:00 2001 From: Cornelia Huck Date: Thu, 28 Jul 2022 16:24:46 +0200 Subject: [PATCH 5/6] kvm: don't use perror() without useful errno perror() is designed to append the decoded errno value to a string. This, however, only makes sense if we called something that actually sets errno prior to that. For the callers that check for split irqchip support that is not the case, and we end up with confusing error messages that end in "success". Use error_report() instead. Signed-off-by: Cornelia Huck Message-Id: <20220728142446.438177-1-cohuck@redhat.com> Signed-off-by: Paolo Bonzini --- accel/kvm/kvm-all.c | 2 +- target/arm/kvm.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index f165074e99..645f0a249a 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2265,7 +2265,7 @@ static void kvm_irqchip_create(KVMState *s) ret = kvm_arch_irqchip_create(s); if (ret == 0) { if (s->kernel_irqchip_split == ON_OFF_AUTO_ON) { - perror("Split IRQ chip mode not supported."); + error_report("Split IRQ chip mode not supported."); exit(1); } else { ret = kvm_vm_ioctl(s, KVM_CREATE_IRQCHIP); diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 4339e1cd6e..e5c1bd50d2 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -959,7 +959,7 @@ void kvm_arch_init_irq_routing(KVMState *s) int kvm_arch_irqchip_create(KVMState *s) { if (kvm_kernel_irqchip_split()) { - perror("-machine kernel_irqchip=split is not supported on ARM."); + error_report("-machine kernel_irqchip=split is not supported on ARM."); exit(1); } From ebc55f523c2f406e30ec8fad77bd3b9aad5d4579 Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Fri, 29 Jul 2022 00:21:32 +0200 Subject: [PATCH 6/6] configure: pass correct cflags to container-based cross compilers probe_target_compiler returns nonempty $target_cc for installed toolchains and $container_cross_cc for container-based toolchains. In both cases however the flags (coming from $cross_cc_cflags_${target_arch}) must be in $target_cflags. Therefore, do not clear them prior to returning from probe_target_compiler. Reported-by: Taylor Simpson Fixes: 92e288fcfb ("build: try both native and cross compilers", 2022-07-08) Signed-off-by: Paolo Bonzini --- configure | 1 - 1 file changed, 1 deletion(-) diff --git a/configure b/configure index c4c02b8438..72ab03f11a 100755 --- a/configure +++ b/configure @@ -2173,7 +2173,6 @@ probe_target_compiler() { build_static= target_cc= target_ccas= - target_cflags= target_ar= target_as= target_ld=