Paravirtualization Game Streaming


This isn't really an issue, so i'm posting it in community. It's more of a question if anyone has done this. Feel free to move it if there is a better place.

I'm looking to run an Ubuntu virtual machine with KVM paravirtualization on an nvidia graphics card. One of my girlfriends wants to play FFXIV with me, but her computer is an old desktop workstation and will not handle it. I've streamed with moonlight from garuda before so i could play in the basement with my partners on a cell phone, but i've never done it from a virtual machine. I have posted my garuda-inxi in case there's a reason i won't be able to do it with my machine.

I do have a GTX 980 lying around i could install and entirely passthrough to the virtual machine too in case that's a better option.

Kernel: 6.1.1-zen1-1-zen arch: x86_64 bits: 64 compiler: gcc v: 12.2.0
parameters: BOOT_IMAGE=/@/boot/vmlinuz-linux-zen
root=UUID=f6cccf9c-8580-435e-8f33-927e3e31bb2d rw [email protected]
quiet splash rd.udev.log_priority=3 vt.global_cursor_default=0
resume=UUID=2e9cba84-8fd3-4884-995e-6ac1c54716ad loglevel=3 ibt=off
Desktop: KDE Plasma v: 5.26.4 tk: Qt v: 5.15.7 info: latte-dock
wm: kwin_x11 vt: 1 dm: SDDM Distro: Garuda Linux base: Arch Linux
Type: Desktop System: Gigabyte product: X570 AORUS ELITE v: -CF
serial: <superuser required>
Mobo: Gigabyte model: X570 AORUS ELITE v: x.x serial: <superuser required>
UEFI: American Megatrends LLC. v: F34 date: 06/10/2021
ID-1: hidpp_battery_0 charge: 95% condition: N/A volts: 4.1 min: N/A
model: Logitech G502 LIGHTSPEED Wireless Gaming Mouse type: N/A
serial: <filter> status: discharging
Info: model: AMD Ryzen 9 3950X bits: 64 type: MT MCP arch: Zen 2 gen: 3
level: v3 note: check built: 2020-22 process: TSMC n7 (7nm)
family: 0x17 (23) model-id: 0x71 (113) stepping: 0 microcode: 0x8701021
Topology: cpus: 1x cores: 16 tpc: 2 threads: 32 smt: enabled cache:
L1: 1024 KiB desc: d-16x32 KiB; i-16x32 KiB L2: 8 MiB desc: 16x512 KiB
L3: 64 MiB desc: 4x16 MiB
Speed (MHz): avg: 3888 high: 4254 min/max: 2200/4761 boost: enabled
scaling: driver: acpi-cpufreq governor: performance cores: 1: 3500 2: 3617
3: 3500 4: 3707 5: 4250 6: 4226 7: 4254 8: 4248 9: 4242 10: 3500 11: 3500
12: 4247 13: 3500 14: 3823 15: 3863 16: 3906 17: 4122 18: 3828 19: 3500
20: 3963 21: 4243 22: 4237 23: 4243 24: 3500 25: 4236 26: 4227 27: 3500
28: 4241 29: 4043 30: 3500 31: 3672 32: 3500 bogomips: 223568
Flags: avx avx2 ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm
Type: itlb_multihit status: Not affected
Type: l1tf status: Not affected
Type: mds status: Not affected
Type: meltdown status: Not affected
Type: mmio_stale_data status: Not affected
Type: retbleed mitigation: untrained return thunk; SMT enabled with STIBP
Type: spec_store_bypass mitigation: Speculative Store Bypass disabled via
Type: spectre_v1 mitigation: usercopy/swapgs barriers and __user pointer
Type: spectre_v2 mitigation: Retpolines, IBPB: conditional, STIBP:
always-on, RSB filling, PBRSB-eIBRS: Not affected
Type: srbds status: Not affected
Type: tsx_async_abort status: Not affected
Device-1: NVIDIA TU104 [GeForce RTX 2070 SUPER] vendor: Micro-Star MSI
driver: nvidia v: 525.60.11 alternate: nouveau,nvidia_drm non-free: 525.xx+
status: current (as of 2022-12) arch: Turing code: TUxxx
process: TSMC 12nm FF built: 2018-22 pcie: gen: 3 speed: 8 GT/s lanes: 16
ports: active: none off: DP-1,DP-2,HDMI-A-1 empty: DP-3 bus-ID: 0a:00.0
chip-ID: 10de:1e84 class-ID: 0300
Device-2: Focusrite-Novation Scarlett 2i2 Camera type: USB
driver: snd-usb-audio bus-ID: 7-2:2 chip-ID: 1235:8210 class-ID: 0102
serial: <filter>
Device-3: Logitech C922 Pro Stream Webcam type: USB
driver: snd-usb-audio,uvcvideo bus-ID: 7-3.3:9 chip-ID: 046d:085c
class-ID: 0102 serial: <filter>
Display: x11 server: X.Org v: 21.1.6 with: Xwayland v: 22.1.7
compositor: kwin_x11 driver: X: loaded: nvidia unloaded: modesetting
alternate: fbdev,nouveau,nv,vesa gpu: nvidia,nvidia-nvswitch
display-ID: :0 screens: 1
Screen-1: 0 s-res: 5119x1440 s-dpi: 107 s-size: 1215x342mm (47.83x13.46")
s-diag: 1262mm (49.69")
Monitor-1: DP-1 mapped: DP-0 note: disabled pos: left model: Dell S2716DG
serial: <filter> built: 2016 res: 2560x1440 dpi: 109 gamma: 1.2
size: 598x336mm (23.54x13.23") diag: 686mm (27") ratio: 16:9 modes:
max: 2560x1440 min: 640x480
Monitor-2: DP-2 note: disabled pos: primary,right model: VG27A
serial: <filter> built: 2020 res: 2560x1440 dpi: 109 gamma: 1.2
size: 597x336mm (23.5x13.23") diag: 685mm (27") ratio: 16:9 modes:
max: 2560x1440 min: 640x480
Monitor-3: HDMI-A-1 mapped: HDMI-0 note: disabled model: Artist13.3pro
serial: <filter> built: 2020 res: 2560x1440 dpi: 166 gamma: 1.2
size: 294x165mm (11.57x6.5") diag: 337mm (13.3") ratio: 16:9 modes:
max: 1920x1080 min: 640x480
API: OpenGL v: 4.6.0 NVIDIA 525.60.11 renderer: NVIDIA GeForce RTX 2070
SUPER/PCIe/SSE2 direct render: Yes
Device-1: YUAN High-Tech Development vendor: Corsair Memory driver: N/A
bus-ID: 7-2:2 pcie: chip-ID: 1235:8210 gen: 1 class-ID: 0102 speed: 2.5 GT/s
lanes: 1 serial: <filter> bus-ID: 06:00.0 chip-ID: 12ab:0380
class-ID: 0480
Device-2: NVIDIA TU104 HD Audio vendor: Micro-Star MSI
driver: snd_hda_intel v: kernel pcie: gen: 3 speed: 8 GT/s lanes: 16
bus-ID: 0a:00.1 chip-ID: 10de:10f8 class-ID: 0403
Device-3: AMD Starship/Matisse HD Audio vendor: Gigabyte
driver: snd_hda_intel v: kernel pcie: gen: 4 speed: 16 GT/s lanes: 16
bus-ID: 0c:00.4 chip-ID: 1022:1487 class-ID: 0403
Device-4: Focusrite-Novation Scarlett 2i2 Camera type: USB
driver: snd-usb-audio
Device-5: Logitech C922 Pro Stream Webcam type: USB
driver: snd-usb-audio,uvcvideo bus-ID: 7-3.3:9 chip-ID: 046d:085c
class-ID: 0102 serial: <filter>
Device-6: Texas Instruments ATH-G1WL type: USB
driver: hid-generic,snd-usb-audio,usbhid bus-ID: 7-3.4:10 chip-ID: 0451:16ba
class-ID: 0300 serial: <filter>
Sound API: ALSA v: k6.1.1-zen1-1-zen running: yes
Sound Server-1: PulseAudio v: 16.1 running: no
Sound Server-2: PipeWire v: 0.3.63 running: yes
Device-1: Intel I211 Gigabit Network vendor: Gigabyte driver: igb v: kernel
pcie: gen: 1 speed: 2.5 GT/s lanes: 1 port: f000 bus-ID: 05:00.0
chip-ID: 8086:1539 class-ID: 0200
IF: enp5s0 state: up speed: 1000 Mbps duplex: full mac: <filter>
Device-1: TP-Link UB500 Adapter type: USB driver: btusb v: 0.8 bus-ID: 7-4:4
chip-ID: 2357:0604 class-ID: e001 serial: <filter>
Report: bt-adapter ID: hci0 rfk-id: 0 state: up address: <filter>
Local Storage: total: 4.57 TiB used: 1.07 TiB (23.4%)
SMART Message: Unable to run smartctl. Root privileges required.
ID-1: /dev/nvme0n1 maj-min: 259:2 vendor: SanDisk model: ADATA SX6000PNP
size: 953.87 GiB block-size: physical: 512 B logical: 512 B speed: 31.6 Gb/s
lanes: 4 type: SSD serial: <filter> rev: V9002s85 temp: 36.9 C scheme: GPT
ID-2: /dev/nvme1n1 maj-min: 259:0 vendor: Western Digital
model: WDS100T1XHE-00AFY0 size: 931.51 GiB block-size: physical: 512 B
logical: 512 B speed: 63.2 Gb/s lanes: 4 type: SSD serial: <filter>
rev: 614600WD temp: 37.9 C scheme: GPT
ID-3: /dev/sda maj-min: 8:0 vendor: Samsung model: SSD 860 EVO 1TB
size: 931.51 GiB block-size: physical: 512 B logical: 512 B speed: 6.0 Gb/s
type: SSD serial: <filter> rev: 4B6Q scheme: GPT
ID-4: /dev/sdb maj-min: 8:16 vendor: Western Digital
model: WD20EARX-00ZUDB0 size: 1.82 TiB block-size: physical: 4096 B
logical: 512 B speed: 6.0 Gb/s type: HDD rpm: 5400 serial: <filter>
rev: 0A80 scheme: GPT
ID-1: / raw-size: 896.73 GiB size: 896.73 GiB (100.00%)
used: 598.54 GiB (66.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
ID-2: /boot/efi raw-size: 300 MiB size: 299.4 MiB (99.80%)
used: 592 KiB (0.2%) fs: vfat dev: /dev/sda1 maj-min: 8:1
ID-3: /home raw-size: 896.73 GiB size: 896.73 GiB (100.00%)
used: 598.54 GiB (66.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
ID-4: /var/log raw-size: 896.73 GiB size: 896.73 GiB (100.00%)
used: 598.54 GiB (66.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
ID-5: /var/tmp raw-size: 896.73 GiB size: 896.73 GiB (100.00%)
used: 598.54 GiB (66.7%) fs: btrfs dev: /dev/sda2 maj-min: 8:2
Kernel: swappiness: 133 (default 60) cache-pressure: 100 (default)
ID-1: swap-1 type: zram size: 31.28 GiB used: 3.5 GiB (11.2%)
priority: 100 dev: /dev/zram0
ID-2: swap-2 type: partition size: 34.49 GiB used: 0 KiB (0.0%)
priority: -2 dev: /dev/sda3 maj-min: 8:3
System Temperatures: cpu: 52.9 C mobo: 29.0 C gpu: nvidia temp: 44 C
Fan Speeds (RPM): N/A gpu: nvidia fan: 23%
Processes: 587 Uptime: 2h 43m wakeups: 2 Memory: 31.29 GiB
used: 20.29 GiB (64.9%) Init: systemd v: 252 default: graphical
tool: systemctl Compilers: gcc: 12.2.0 alt: 11 clang: 14.0.6 Packages:
pm: pacman pkgs: 2581 libs: 575 tools: octopi,pamac,paru Shell: fish
v: 3.5.1 default: Bash v: 5.1.16 running-in: konsole inxi: 3.3.24
Garuda (2.6.12-1):
System install date:     2022-01-22
Last full system update: 2023-01-01
Is partially upgraded:   No
Relevant software:       NetworkManager
Windows dual boot:       Probably (Run as root to verify)
Snapshots:               Snapper
Failed units:

Why are you using virtualization, to get 2 instances (one for you, one for gf) of a game running on one PC? If yes I made a guide for that long ago but I doubt if it works


Yes, that's exactly what i'm trying to do :slight_smile:

I'll read and see if it still works.

That's wild for sure! :joy:

1 Like

Summary of my journey so far:

  • Struck out on the paravirtualization thing, seems to be a windows vm host only thing, at least to do it easily
  • Installed an old GTX 980 Ti in my computer as a second GPU and successfully passed it through in a virt-manager QEMU/KVM machine running Ubuntu 22.04.1 LTS
  • Installed FFXIV and got it working (60 solid fps in cities, but with 20ms frame lag, oh well, it worked!)
  • Discovered parsec doesn't have a linux host, got sunshine for moonlight mostly working, but it kept disconnecting me because it couldn't find, and linking what i found with find / -name qxl* to the directory it was looking didn't help.
  • Decided to give up on Ubuntu and trying Nobara, Steam OS, and maybe Garuda as last ditch
1 Like

it works on a garuda dragonized gaming VM because of course it does.

EDIT: on garuda vm, i'm getting 80-120 FPS in cities with 6-7ms frametimes. S O L I D. Practically plug and play. Saved me SO much time. <3

I really love y'all.


Should we be happy you got it working on Garuda, or insulted you didn't try Garuda first? :thinking: :stuck_out_tongue_winking_eye:


I avoided it since running it in a VM is not supported. I did expect it to work, but I wanted to do some reading on how to get things to work for myself. There just wasn't enough material out there is why i hit the wall with it.

Maybe one day i'll try to build a vanilla arch system, but it's just not an efficient use of my time. Until then, there's Garuda for everything. :slight_smile:


This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.