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.)
I do know that QEMU doesn't clean up things the guest does
to the terminal, because for instance if you have a serial
terminal and the guest puts it into "emit boldface/bright",
that doesn't go back to normal non-bold text when QEMU exits.
(It would be nice if it did do that...)
It would be nice indeed. Trouble is quarrying the state beforehand to know what to reset by random software producing effectively random bytes..
ESC c
is the reset sequence as well...but that's likely too big a hammer.
Warner