QMP
The basics on QMP can be found here:
QMP Helper
When QEMU is run in dom0 with the toolstack (xl in this case), it will typically be setup to create a UNIX socket that xl can connect to and communicate with QEMU. This is done using a QEMU command line argument like this (where N is the quest's domain ID):
-qmp unix:/var/run/xen/qmp-libxl-N,server,nowait
The argument after unix:
is the name of the UNIX socket that is created and set to listen for connections.
When QEMU is moved to a stub-domain, this communication method is no longer available. The QMP helper is the means by which QMP communications can be established with a QEMU running in a stub-domain. The QMP helper bits work a lot like the other stub-domain helpers in xctools.git
. It consists of two components:
- A chardrv implementation that is introduced into the
qemu-char.c
code. This new type of chardrv can sit below other monitors and consoles and route traffic over V4V. - A proxy process called
qmp_helper
runs indom0
and can talk to the V4V chardrv in QEMU in the stubdom. Theqmp_helper
also creates a UNIX socket exactly as QEMU would have above indom0
. The toolstack (xl
) can then connect directly to the UNIX socket and the rest is invisible to it.
NOTE: the implementations currently resides here until it is brought into OpenXT proper:
https://github.com/rossphilipson/xctools/tree/qmp_helper/qmp_helper
QMP Shell
safsdf