On Tue, 19 Dec 2023 at 19:40, Fabiano Rosas <farosas@suse.de> wrote:
Dave Blanchard <dave@killthe.net> writes:
Hello all, can you please help me to understand what Qemu is doing
here?
When connecting to the guest for example using a serial/tcp/telnet
link, some kind of code is being immediately transmitted over the link
which screws up my Xterm terminal settings, including changing the text
cursor shape and most notably, disabling wraparound of long lines, so that
they get truncated at the edge of the window instead.
Can this behavior be disabled by command line, and if not, what is the
code doing exactly so I can know where to disable it? I tried disabling all
calls to tcsetattr() but that had no effect.
I looked into the automatic margins issue a long time ago and I seem to
remember it was caused by the firmware (SeaBIOS) configuring the
terminal and QEMU just never returning it to the original state. I
eventually gave up trying to fix it because I was having trouble finding
a reliable point in QEMU shutdown sequence to enable the capability
back. Nowadays I just run 'tput smam' after quitting QEMU.
To check whether this is happening because of the BIOS (or other
guest code) vs QEMU itself, you can try running QEMU in a configuration
where it doesn't run any BIOS code. One I happen to know offhand
is an arm one:
qemu-system-aarch64 -M virt -serial stdio
This won't print anything, because we haven't loaded any guest
code at all and there's no default BIOS on this machine type.
(The emulated CPU is sat in effectively a tight loop taking
exceptions.) If that messes up the terminal settings, then it's
likely being done by something inside QEMU. If it doesn't, then
it sounds like as you say it'll be because of the SeaBIOS
firmware writing stuff to the terminal.
(There might be a way to run the x86 PC machine without it
running a BIOS, for a similar test, but I don't know if there
is or how to do it off the top of my head.)