diff options
Diffstat (limited to 'qemu/docs/multiseat.txt')
-rw-r--r-- | qemu/docs/multiseat.txt | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/qemu/docs/multiseat.txt b/qemu/docs/multiseat.txt deleted file mode 100644 index 807518c8a..000000000 --- a/qemu/docs/multiseat.txt +++ /dev/null @@ -1,145 +0,0 @@ - -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> |