
multiseat howto (with some multihead coverage)
==============================================

host devices
------------

First you must compile qemu with a user interface supporting
multihead/multiseat and input event routing.  Right now this
list includes sdl2, gtk (both 2+3) and vnc:

  ./configure --enable-sdl --with-sdlabi=2.0

or

  ./configure --enable-gtk


Next put together the qemu command line (sdk/gtk):

qemu	-enable-kvm -usb $memory $disk $whatever \
	-display [ sdl | gtk ] \
	-vga std \
	-device usb-tablet

That is it for the first seat, which will use the standard vga, the
standard ps/2 keyboard (implicitly there) and the usb-tablet.  Now the
additional switches for the second seat:

	-device pci-bridge,addr=12.0,chassis_nr=2,id=head.2 \
	-device secondary-vga,bus=head.2,addr=02.0,id=video.2 \
	-device nec-usb-xhci,bus=head.2,addr=0f.0,id=usb.2 \
	-device usb-kbd,bus=usb.2.0,port=1,display=video.2 \
	-device usb-tablet,bus=usb.2.0,port=2,display=video.2

This places a pci bridge in slot 12, connects a display adapter and
xhci (usb) controller to the bridge.  Then it adds a usb keyboard and
usb mouse, both connected to the xhci and linked to the display.

The "display=video2" sets up the input routing.  Any input coming from
the window which belongs to the video.2 display adapter will be routed
to these input devices.

Starting with qemu 2.4 and linux kernel 4.1 you can also use virtio
for the input devices, using this ...

	-device pci-bridge,addr=12.0,chassis_nr=2,id=head.2 \
	-device secondary-vga,bus=head.2,addr=02.0,id=video.2 \
	-device virtio-keyboard-pci,bus=head.2,addr=03.0,display=video.2 \
	-device virtio-tablet-pci,bus=head.2,addr=03.0,display=video.2

... instead of xhci and usb hid devices.

host ui
-------

The sdl2 ui will start up with two windows, one for each display
device.  The gtk ui will start with a single window and each display
in a separate tab.  You can either simply switch tabs to switch heads,
or use the "View / Detach tab" menu item to move one of the displays
to its own window so you can see both display devices side-by-side.

For vnc some additional configuration on the command line is needed.
We'll create two vnc server instances, and bind the second one to the
second seat, simliar to input devices:

	-display vnc=:1,id=primary \
	-display vnc=:2,id=secondary,display=video.2

Connecting to vnc display :1 gives you access to the first seat, and
likewise connecting to vnc display :2 shows the second seat.

Note on spice: Spice handles multihead just fine.  But it can't do
multiseat.  For tablet events the event source is sent to the spice
agent.  But qemu can't figure it, so it can't do input routing.
Fixing this needs a new or extended input interface between
libspice-server and qemu.  For keyboard events it is even worse:  The
event source isn't included in the spice protocol, so the wire
protocol must be extended to support this.


guest side
----------

You need a pretty recent linux guest.  systemd with loginctl.  kernel
3.14+ with CONFIG_DRM_BOCHS enabled.  Fedora 20 will do.  Must be
fully updated for the new kernel though, i.e. the live iso doesn't cut
it.

Now we'll have to configure the guest.  Boot and login.  "lspci -vt"
should list the pci bridge with the display adapter and usb controller:

    [root@fedora ~]# lspci -vt
    -[0000:00]-+-00.0  Intel Corporation 440FX - 82441FX PMC [Natoma]
               [ ... ]
               \-12.0-[01]--+-02.0  Device 1234:1111
                            \-0f.0  NEC Corporation USB 3.0 Host Controller

Good.  Now lets tell the system that the pci bridge and all devices
below it belong to a separate seat by dropping a file into
/etc/udev/rules.d:

    [root@fedora ~]# cat /etc/udev/rules.d/70-qemu-autoseat.rules
    SUBSYSTEMS=="pci", DEVPATH=="*/0000:00:12.0", TAG+="seat", ENV{ID_AUTOSEAT}="1"

Reboot.  System should come up with two seats.  With loginctl you can
check the configuration:

    [root@fedora ~]# loginctl list-seats
    SEAT
    seat0
    seat-pci-pci-0000_00_12_0

    2 seats listed.

You can use "loginctl seat-status seat-pci-pci-0000_00_12_0" to list
the devices attached to the seat.

Background info is here:
  http://www.freedesktop.org/wiki/Software/systemd/multiseat/


guest side with pci-bridge-seat
-------------------------------

Qemu version 2.4 and newer has a new pci-bridge-seat device which
can be used instead of pci-bridge.  Just swap the device name in the
qemu command line above.  The only difference between the two devices
is the pci id.  We can match the pci id instead of the device path
with a nice generic rule now, which simplifies the guest
configuration:

    [root@fedora ~]# cat /etc/udev/rules.d/70-qemu-pci-bridge-seat.rules
    SUBSYSTEM=="pci", ATTR{vendor}=="0x1b36", ATTR{device}=="0x000a", \
            TAG+="seat", ENV{ID_AUTOSEAT}="1"

Patch with this rule has been submitted to upstream udev/systemd, was
accepted and should be included in the next systemd release (222).
So, if your guest has this or a newer version, multiseat will work just
fine without any manual guest configuration.

Enjoy!

--
Gerd Hoffmann <kraxel@redhat.com>
