On Thu, Jan 20, 2022 at 06:14:07PM +0000, Daniel P. Berrangé wrote:
To me I think of <console> as exclusively reflecting a text
I/O
channel targetting humans, while <serial> is a more general
purpose data channel that can be used for multiple purposes.
Either running app protocols or for plain text console I/O.
In terms of an low level implementation isa-debugcon could be
argued to be a general purpose (unidirectional) data channel,
that is just passing arbitrary bytes. That would push towards
<serial> as a mapping
In terms of the actual real world use cases though, isa-debugcon
is (AFAIK) only used for spewing text debugging messages aimed
at humans. That pushes towards <console> as a mapping.
On balance I felt <console> was/is the winner. Essentially every
impl of <console> can be said to be a general purpose data
channel for passing arbitrary bytes. We choose to explicitly
distinguish <console> from <serial> based on the intended use
case of the thing.
This interpretation directly contradicts our documentation,
specifically
https://libvirt.org/formatdomain.html#console
The console element is used to represent interactive serial
consoles.
https://libvirt.org/formatdomain.html#relationship-between-serial-ports-a...
Due to historical reasons, the serial and console elements have
partially overlapping scopes.
In general, both elements are used to configure one or more
serial consoles to be used for interacting with the guest. The
main difference between the two is that serial is used for
emulated, usually native, serial consoles, whereas console is
used for paravirtualized ones.
Now, to be completely transparent: I happen to be the one who wrote
the bulk of that :) But I believe that, in doing so, I have neither
inaccurately described the existing practice nor contradicted what
the documentation said at the time. And at this point that text has
been up on our website for 4+ years without being contested.
On account of isa-debugcon being neither interactive nor
paravirtualized, I feel that it should be exposed as a <serial>
device rather than a <console>.
--
Andrea Bolognani / Red Hat / Virtualization