vfio: Introduce VFIO address spaces
[qemu/ar7.git] / docs / multiseat.txt
bloba6c71dd74f4bf7fbdfe6801689f1a77d57e75ff1
2 multiseat howto (with some multihead coverage)
3 ==============================================
5 host side
6 ---------
8 First you must compile qemu with a user interface supporting
9 multihead/multiseat and input event routing.  Right now this list is
10 pretty short: sdl2.
12   ./configure --enable-sdl --with-sdlabi=2.0
15 Next put together the qemu command line:
17 qemu    -enable-kvm -usb $memory $disk $whatever \
18         -display sdl \
19         -vga std \
20         -device usb-tablet
22 That is it for the first head, which will use the standard vga, the
23 standard ps/2 keyboard (implicitly there) and the usb-tablet.  Now the
24 additional switches for the second head:
26         -device pci-bridge,addr=12.0,chassis_nr=2,id=head.2 \
27         -device secondary-vga,bus=head.2,addr=02.0,id=video.2 \
28         -device nec-usb-xhci,bus=head.2,addr=0f.0,id=usb.2 \
29         -device usb-kbd,bus=usb.2.0,port=1,display=video.2 \
30         -device usb-tablet,bus=usb.2.0,port=2,display=video.2
32 This places a pci bridge in slot 12, connects a display adapter and
33 xhci (usb) controller to the bridge.  Then it adds a usb keyboard and
34 usb mouse, both connected to the xhci and linked to the display.
36 The "display=video2" sets up the input routing.  Any input coming from
37 the window which belongs to the video.2 display adapter will be routed
38 to these input devices.
41 guest side
42 ----------
44 You need a pretty recent linux guest.  systemd with loginctl.  kernel
45 3.14+ with CONFIG_DRM_BOCHS enabled.  Fedora 20 will do.  Must be
46 fully updated for the new kernel though, i.e. the live iso doesn't cut
47 it.
49 Now we'll have to configure the guest.  Boot and login.  By default
50 all devices belong to seat0.  You can use "loginctl seat-status seat0"
51 to list them all (and to get the sysfs paths for cut+paste).  Now
52 we'll go assign all pci devices connected the pci bridge in slot 12 to
53 a new head:
55 loginctl attach seat-qemu \
56          /sys/devices/pci0000:00/0000:00:12.0/0000:01:02.0/drm/card1
57 loginctl attach seat-qemu \
58          /sys/devices/pci0000:00/0000:00:12.0/0000:01:02.0/graphics/fb1
59 loginctl attach seat-qemu \
60          /sys/devices/pci0000:00/0000:00:12.0/0000:01:0f.0/usb2
62 Use "loginctl seat-status seat-qemu" to check the result.  It isn't
63 needed to assign the usb devices to the head individually, assigning a
64 usb (root) hub will automatically assign all usb devices connected to
65 it too.
67 BTW: loginctl writes udev rules to /etc/udev/rules.d to make these
68 device assignments permanent, so you need to do this only once.
70 Now simply restart gdm (rebooting will do too), and a login screen
71 should show up on the second head.
73 Enjoy!
76 Gerd Hoffmann <kraxel@redhat.com>