svn commit: r285217 - head/usr.sbin/bhyve

John-Mark Gurney jmg at funkthat.com
Mon Jul 6 21:52:27 UTC 2015


Ian Lepore wrote this message on Mon, Jul 06, 2015 at 14:11 -0600:
> On Mon, 2015-07-06 at 19:33 +0000, Neel Natu wrote:
> > Author: neel
> > Date: Mon Jul  6 19:33:29 2015
> > New Revision: 285217
> > URL: https://svnweb.freebsd.org/changeset/base/285217
> > 
> > Log:
> >   Always assert DCD and DSR in bhyve's uart emulation.
> >   
> >   The /etc/ttys entry for a serial console in FreeBSD/x86 is as follows:
> >   ttyu0   "/usr/libexec/getty 3wire"      vt100   onifconsole secure
> >   
> >   The initial terminal type passed to getty(8) is "3wire" which sets the
> >   CLOCAL flag. However reset(1) clears this flag and any programs that try
> >   to open the terminal will hang waiting for DCD to be asserted.
> >   
> >   Fix this by always asserting DCD and DSR in the emulated uart.
> >   
> >   The following discussion on virtualization@ has more details:
> >   https://lists.freebsd.org/pipermail/freebsd-virtualization/2015-June/003666.html
> >   
> >   Reported by: jmg
> >   Discussed with: grehan
> 
> This seems like a wrong fix.  A real 3-wire serial console doesn't have
> DCD and DSR wired on.  Why isn't the right fix here having the user with
> this problem to do "stty -f /dev/ttyu0.lock clocal", maybe in rc.local? 
> 
> Hmmm, or maybe it would be right for getty to do the equivelent when it
> sees a 3wire type?

This seems more sane to me...

Ok, so I just tested on real hardware, and something is wrong w/
FreeBSD's behavior...  Could this be a change between 10 and HEAD?

One a real machine (I manually added 3wire from HEAD so /etc/ttys is
exactly the same between the two):
# uname -a
FreeBSD  10.1-STABLE FreeBSD 10.1-STABLE #102: Mon Jun 22 18:28:28 PDT 2015     jmg at carbon.funkthat.com:/a/home/jmg/consulting/netflix/new_sys/amd64/compile/bhgdb  amd64
# echo $TERM
vt100
# stty -a | grep clocal
cflags: cread cs8 -parenb -parodd -hupcl clocal -cstopb -crtscts -dsrflow
# reset
Erase is backspace.
# stty -a | grep clocal
cflags: cread cs8 -parenb -parodd -hupcl clocal -cstopb -crtscts -dsrflow

and under bhyve:
# uname -a
FreeBSD  11.0-CURRENT FreeBSD 11.0-CURRENT #11 r284880M: Fri Jul  3 14:14:49 PDT 2015     jmg at carbon.funkthat.com:/a/obj/a/home/jmg/FreeBSD.svn/HEAD/sys/IPSEC  amd64
# echo $TERM
vt100
# stty -a | grep clocal
cflags: cread cs8 -parenb -parodd hupcl clocal -cstopb -crtscts -dsrflow
# reset
<screen clears here, unlike real hardware>
# stty -a | grep clocal                                                 
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow

I check and both .init and .lock have the same settings...  reset -S
both return the same termcap entry...

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the svn-src-all mailing list