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