Physical GPU passthrough to VM seems to be working, but guests output only to Virtio GPU

Thanks! That worked.

I’d tried a more elaborate xorg.conf before, but something must have been wrong with it. Using something very close to your suggestion made both GPUs and monitors start working with this VM.

The exact contents of my now-working xorg.conf are shown below for posterity. I note that this does disable the virtual VGA device, so lxc console pop --type vga no longer works. I could probably tinker around and figure out how add that virtual device to this xorg.conf, but I don’t need that for this use case, so I didn’t investigate further.

Thanks again!

(I do wonder what prevents PopOS and these other distros from detecting the attached monitors automatically, like they do when freshly installed onto physical hardware, but I don’t need to know the answer to that…)

 mason@pop-os:~$ cat /usr/share/X11/xorg.conf.d/xorg.conf

Section "Device"
	Identifier  "RTX3060"
	Driver      "nvidia"
	BusID       "PCI:7:0:0"
EndSection

Section "Device"
	Identifier  "GTX1660"
	Driver      "nvidia"
	BusID       "PCI:8:0:0"
EndSection

P.S.
Just for the interest of potential future searchers, I will also append the config of the VM in which this is working:

➜  ~ lxc config show pop
architecture: x86_64
config:
  image.architecture: x86_64
  image.description: Pop OS test (20221014)
  image.os: poplord
  image.release: "22.04"
  limits.cpu: "12"
  limits.memory: 24GB
  security.secureboot: "false"
  volatile.base_image: fd08795759096a49cf44acc81a9917e59ba084458325083707460678455c81fd
  volatile.cloud-init.instance-id: 378c5452-beef-beef-b29e-5d766b445bc7
  volatile.eth0.host_name: tap92884c55
  volatile.eth0.hwaddr: re:da:ct:ed:du:de
  volatile.gtx1060.last_state.pci.driver: vfio-pci
  volatile.gtx1060.last_state.pci.slot.name: "0000:07:00.0"
  volatile.last_state.power: RUNNING
  volatile.last_state.ready: "false"
  volatile.rtx3060a.last_state.pci.driver: vfio-pci
  volatile.rtx3060a.last_state.pci.slot.name: "0000:01:00.0"
  volatile.usbcard.last_state.pci.driver: vfio-pci
  volatile.usbcard.last_state.pci.slot.name: "0000:06:00.0"
  volatile.uuid: f2018289-6e5f-beef-beef-c8d6cfc3d760
  volatile.vsock_id: "13"
devices:
  gtx1060:
    gputype: physical
    pci: "0000:07:00.0"
    type: gpu
  rtx3060a:
    gputype: physical
    pci: "0000:01:00.0"
    type: gpu
  usbcard:
    address: "0000:06:00.0"
    type: pci
ephemeral: false
profiles:
- default
- bridgeprofile
stateful: false
description: ""
➜  ~