qemu: invalid serial port configuration

Bug #1715296 reported by Tomasz Rostanski
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

The tty_serial_init() function sets the port c_oflags as follows:
tty.c_oflag |= OPOST not clearing ONLCR, ONLRET and others.
The result is that the postprocess output is enabled and host translates 0xa (LF) to 0xd 0xa (CR LF) which breaks the binary transmissions on serial port even if you set the port to raw mode (no matters if on host and/or guest).
The issue has been reported 11 years ago on qemu-devel mailing list:
https://lists.nongnu.org/archive/html/qemu-devel/2006-06/msg00196.html
There was also a FreeBSD patch including the fix:
https://lists.freebsd.org/pipermail/freebsd-ports/2006-October/036390.html

I think the correct port configuration is:
tty.c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IMAXBEL);
tty.c_oflag &= ~OPOST;

In such case the host will perform no output processing and will pass the data as is.
And the guest will be able to configure input/output processing exactly as it wants.

Revision history for this message
Tomasz Rostanski (dorregaray) wrote :

I believe the following bug is related: https://bugs.launchpad.net/qemu/+bug/1407813

Revision history for this message
Thomas Huth (th-huth) wrote :
Changed in qemu:
status: New → Fix Committed
Thomas Huth (th-huth)
Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.