[libvirt] [PATCH] bhyve: add console support through nmdm device

Roman Bogorodskiy bogorodskiy at gmail.com
Mon Mar 17 17:26:00 UTC 2014


  Daniel P. Berrange wrote:

> But client apps have to munge the path before opening it. I must say I'm
> still finding this a little wierd as an XML design.
> 
> Looking at the type=pty case, the XML has no path, but is filled in with
> the path that the client can open - QEMU is just opening /dev/ptmx. If
> giving QEMU a real TTY, then the XML contains the path that QEMU itself
> should open and there's nothing a client can open since the client side
> is a real physical serial cable or linux virtual tty. So no real consistent
> approach there.

I like the idea of openpty() on client and passing an fd like LXC does.
I've submitted a patch to add support for that to bhyve:

http://docs.freebsd.org/cgi/getmsg.cgi?fetch=384757+0+current/freebsd-virtualization

But I don't know how long that will take to get landed. And then it'll
also make some time to be MFC to -STABLE, so I guess it will not be
available in a near future. 

> Looking at this nmdm driver
> 
> > + * <serial type="nmdm">
> > + *   <source path="/dev/nmdm0A"/>
> > + *   <target port="1">
> > + * </serial>
> 
> We could just go with the device prefix eg
> 
>    <source path='/dev/nmdm0'/>
> 
> and let clients append 'B' before opening the device and append 'A' 
> on bhyve command line. That feels like it is exposing the FreBSD private
> impl in the XML though. ie if some other OS implemented a similar nmdm
> concept, we can't guarantee they'd pick A & B as device names.

Yeah. And it not only exposes internals, but looks strange from user's
point of view: I guess it could be not obvious for a user that he needs
to specify some device name that will never exist. 

> So I wonder if we should just include both paths ?  eg
> 
>    <source deva='/dev/nmdm0A' devb='/dev/nmdm0B'/>
> 
> and declare that whatever is in 'deva' side is the hypervisor's dev
> and 'devb' is the client's path.
> 
> The FreeBSD driver would sanity check to make sure both devices match
> up though.

That's the only way not to expose internals, I think. And actually this
way of expressing devices doesn't require it to be nmdm at all, it could
be pty devices created with 'socat -d -d pty,raw,echo=0 pty,raw,echo=0'
(or some similar tool), but I'm not sure how to add a general validation
that these devices match.

Roman Bogorodskiy
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140317/878a2a24/attachment-0001.sig>


More information about the libvir-list mailing list