#974969 The "-full-screen" option causes guest display to overflow outside the host screen

Package:
qemu-system-x86
Source:
qemu
Description:
QEMU full system emulation binaries (x86)
Submitter:
Date:
2020-11-19 21:45:05 UTC
Severity:
normal
#974969#5
Date:
2020-11-17 12:07:19 UTC
From:
To:
Dear Maintainers,

On each VM start with the "-full-screen" option there is a delay.
Duration varies from about a minute to a few seconds. With repeated VM
starts the delay seems to shorten. Then the following message quickly
appears (usually for less than 1 or 2 seconds) before the real guest
display is shown: "Guest has not initialized display (yet).".

When guest display is shown it is expanded and overflows outside the
host screen. Using "Ctrl+Alt+f" two times to toggle the QEMU fullscreen
seems to rescale the guest display correctly. Also after the first
"Ctrl+Alt+f" the QEMU non-fullscreen window is expanded and overflows
outside the host monitor. The QEMU non-fullscreen window seems to
rescale the guest display correctly after using "Ctrl+Alt+2" followed by
"Ctrl+Alt+1".

I tested this with my dual monitor setup (laptop screen + external
monitor both with the same resolution 1920x1080) for which I use the
following "xrandr" commands:

xrandr --output "$displayOne" --below "$displayTwo" # <- Extended

xrandr --output "$displayOne" --same-as "$displayTwo" # <- Mirrored

The described overflowing of the VM display was identical in both dual
monitor modes and also in a single monitor setup. Single monitor test
was with just the laptop screen and without any "xrandr" commands.

HOW TO REPRODUCE:
The overflowing behavior is reproducible with the following simplified
"qemu-system-x86" command when I run it manually from terminal (it is
single line in case email reformats it):

qemu-system-x86_64 -full-screen -enable-kvm -machine type=q35,accel=kvm
-netdev user,id=vnet -device e1000,netdev=vnet -cpu host -smp cores=2 -m 
2048 -drive file=DISK.raw,format=raw,index=0,media=disk -drive
file=IMAGE.iso,index=2,media=cdrom

Test is reproducible with empty/formated "DISK.raw" and for example
Debian 10 Netinst ISO as "IMAGE.iso" (= no need to install VM just start
the empty one:). Then it is very easy: if you do not see the Debian
swirl in bottom right corner after starting VM, the guest display
overflows outside the host screen:).

RELEVANT SYSTEM DETAILS:
My system has enabled only the integrated graphics in Intel Core
i7-3632QM CPU and uses XFCE with "xfwm4" window manager. All packages
are automatically updated from Debian 10 "main" repository - current
versions for relevant packages are:

linux-image-4.19.0-12-amd64	4.19.152-1
qemu-system-gui			3.1+dfsg-8+deb10u8
qemu-system-x86			3.1+dfsg-8+deb10u8
qemu-utils			3.1+dfsg-8+deb10u8
xfce4-session			4.12.1-6
xfdesktop4			4.12.4-2
xfwm4				4.12.5-1
xserver-xorg			7.7+19
xserver-xorg-video-fbdev	0.5.0-1
xserver-xorg-video-vesa		2.4.0-1

Let me know if you need any more info. I will try to test
"qemu-system-x86" 5.0 or 5.1 from Debian Backports or Unstable when I
have more time.

Best Regards
Bakhelit

#974969#10
Date:
2020-11-17 16:38:44 UTC
From:
To:
Ok, I was able to test "qemu-system-x86" from Debian Backports - the
following packages were upgraded on my system:

libpmem1	1.5.1-1 (new installed package)
libslirp0	4.3.1-1~bpo10+1 (new installed package)
liburing1	0.6-3~bpo10+1 (new installed package)

qemu-system-common	5.0-14~bpo10+1 (upgraded package)
qemu-system-data	5.0-14~bpo10+1 (upgraded package)
qemu-system-gui		5.0-14~bpo10+1 (upgraded package)
qemu-system-x86		5.0-14~bpo10+1 (upgraded package)
qemu-utils		5.0-14~bpo10+1 (upgraded package)

Unfortunately, the problem persists - the "-full-screen" option still
behaves exactly as described in the initial bug report
(https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=974969#5).

Further more another option seems to be broken in the backports version.
The "-soundhw hda" option seems to prevent VM from starting at all. The
following modified test command (it is single line in case email
reformats it):

QEMU_PA_SERVER='/run/user/1000/pulse/native' QEMU_AUDIO_DRV='pa'
qemu-system-x86_64 -full-screen -enable-kvm -machine type=q35,accel=kvm
-soundhw hda -netdev user,id=vnet -device e1000,netdev=vnet -cpu host 
-smp cores=2 -m 2048 -drive file=DISK.raw,format=raw,index=0,media=disk 
-drive file=IMAGE.iso,index=2,media=cdrom

Results in QEMU processes appearing in HTOP for a while and then
disappearing. No QEMU window appears and no output is produced by QEMU
(not even a warning or error). Only after QEMU processes disappear
PULSEAUDIO complains with the following:

pulseaudio: Wrong context state
pulseaudio: Reason: Timeout
pulseaudio: Failed to initialize PA contextaudio: warning: Using timer
based audio emulation
Aborted

Looks like I will have to finish tuning my Debian 10 configs on my old
Debian 9 system, where QEMU is working without problems. But, I hope to
make QEMU usable on my Debian 10 systems eventually, so let me know if
you need some more info:).

Thanks
Bakhelit

#974969#15
Date:
2020-11-19 21:43:10 UTC
From:
To:
After, further testing (basically 2 days of reading all QEMU docs and
changelogs I found and messing around with various QEMU options:) I was
able to solve my problems with the "-full-screen" option.

The solution was to add the following option to my QEMU command: