[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH v2 6/6] Add a general description of the channel mechanism to docs/misc/

Hi Ian,

On 18 Jun 2014, at 14:41, Ian Campbell <Ian.Campbell@xxxxxxxxxx> wrote:

> On Mon, 2014-06-16 at 10:49 +0100, David Scott wrote:
>> +  type = (NONE | FILE | PTY | SOCKET | ... )
> Are these the literal xenstore key values, shouty caps and all?

In the current qemu-based implementation they don’t appear in xenstore. Instead 
xenstore has a reference to a “-chardev” on the qemu command line.

  /local/domain/$DOMID/device/console/$DEVID/output = chardev:libxl-channel0

(for some reason the ‘output’ key is in the frontend. At least it’s readonly)

  qemu-system-i386 -M xenpv -chardev 

Actually I think it would probably be good to include these keys in xenstore as 
well even if they aren’t currently used (minus the shouty caps) since then they 
could be read by console backends in other domains.

> Is this stuff all forward compatible with the existing xenconsoled etc?
> What stops it trying to manage these guys?

To handle this through xenconsoled would involve:

1. extending xenconsoled to watch for console device backends (like any other 
device backend). Currently xenconsoled is limited to the initial console only.

2. changing the libxl implementation to remove the -chardevs from the qemu 
command-line and add the keys (type/path) to the backend directory

It ought to be possible to get xenconsoled running in multiple domains and 
choose between them by setting the ‘backend’ in the libxl device.

Importantly no libxl client would need to change.

I took the qemu approach for the initial implementation because this is how 
libxl arranges for  the second/third/fourth/… consoles to be served (possibly 
because xenconsoled has never been extended). Personally I’d like to switch 
over to xenconsoled eventually rather than rely on qemu for ever more stuff.


>> +  path = <some path>
>> +
>> +In the default implementation where the backend is run in the toolstack
>> +domain, the qemu "chardev" mechanism is used. This implementation
>> +interprets the configuration as follows:
>> +
>> +  type = NONE: the backend will be connected to /dev/null
>> +  type = FILE: the channel will be read the the output appended
> "the the".
>> +    to the file given by 'path'
>> +  type = PTY: the backend will connect to a PTY like a regular console
>> +  type = SOCKET: the backend will accept a connection on the Unix
>> +    domain socket given by 'path' and proxy data to and from the device.
>> +
>> +If the implementation is in another domain (for example via a Mirage
>> +console backend) then the behaviour will be defined by this other domain.

Xen-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.