PCIe Passthrough: DigitalDevices Cine S2 v5.5

ChAoS

Member
Apr 29, 2021
31
4
8
42
Hallo Forengemeinde,

ich setze seit Jahren privat einen Homeserver für viele Aufgaben ein.
Eine davon ist das Aufzeichnen vom TV.
Als Hardware dient ein Core i7 3770 auf einem Gigabyte Q77m Chipsatz, voll vt-d fähig soweit ich weiß.
Als OS dient aktuell Win 2008r2, welches in dieser Konstellation wirklich absolut sauber und perfekt läuft (teilweise Uptimes von mehr als einem Jahr, seit Jahren kein einziger Absturz!).
Parallel laufen dort paar VMs unter Virtualbox.

Nachdem ich nun beruflich Proxmox nutze dachte ich - cool - mach ich zuhause auch.
Also SSD in den "Server" gekloppt, Proxmox drauf, VM erstellt und die physikalische Platte zum Test dareingeklont. Das 2008r2 fährt absolut sauber, megaschnell und ohne Probleme hoch.
Nun ging es daran die Funktionen wiederherzustellen.

zuerst nach dem Wiki beschrieben alles für PCIe Passthrough vorbereitet (iommu etc).
Zuerst die Raidkarte (rocketraid 2940 oder ähnlich) per pcie durchgeroutet, absolut sauber, alle Laufwerke sind auf Anhieb da, Datenraten sind ok, also meiner Meinung nach sind die Hardwaregegebenheiten für passthrough gegeben.

Nun die Satkarten.
Maschine fährt hoch, installiert Treiber und ab dieser Sekunde nur noch hängen und laggen, teilweise freezen, dass ich die VM hart stoppen muss.
Viel mit den im Internet gegebenen Optionen rumgespielt
iommu=pt
blacklist von dvbcore, ngene und ddbridge
unsafe irq zugelassen (options vfio_iommu_type1 allow_unsafe_interrupts=1)

hatte auch den viel diskutierten irq 16: nobody cared (try booting with the "irqpoll" option)
irqpoll eingeschaltet
acpi=debug eingeschaltet

Hängen ist nun teilweise weniger geworden, Zwischenzeitlich läuft die VM dann zügig und stabil (teilweise dann mit abschließenden komplett freeze)

EIN TEIL der Hardware wird vom Gast Windows - wie oben beschrieben - gefunden, allerdings NUR das ngene device - der dazugehörige Tuner und das Capture Device (offensichtlich Untergeräte mit subsys IDs) wird gänzlich NIE gefunden - bisher in keinem meiner gefühlten 10 000 Versuchen (bin schon seit 4 Abenden dran). Ohne die beiden Geräte findet natürlich DVBViewer keine Tuner und funktioniert nicht!!!
Im Screenshot sind es die gelb markierten Geräte (Screenshot aus der nativ laufenden 2008r2 Version in der alles funktioniert) :
ngene.PNG

Um einen Fehler im 2008r2 auszuschließen ein sauberes W10-20h2 installiert - exakt das gleiche Verhalten!

Hardwareoptionen ebenfalls durchgeprobt - "alles routen" wie auch pcie und ROM ein / aus - alles schon versucht...

Im dmesg sind meines Erachtens keine Auffälligkeiten (mehr) und mein Latein ist nun so langsam am Ende.

Aus der Vergangenheit weiß ich, dass die Karten bis v 5.5 wohl tierische Zicken sind, hatte viel mit dem Support zu tun, da ich die Karten damals beruflich Serverseitig einsetzen sollte und diese mit z.B. einem HP ML350G5 tierische Probleme verursachte...

Auffällig ist, dass die Karte sich den IRQ16 mit einem USB Controller teilt, befindet sich aber lt. Logs in einer eigenen iommu gruppe.

Die RAID Karte habe ich (um u.a. Datenverlust zu vermeiden) natürlich bei den vielen Versuchen abgehangen, also die kommen sich auch nicht in die Quere...

Noch weiteres probiert: Q35 in verschiedenen Versionen i440 in verschiedenen Versionen

Aktuell Proxmox 6.4 (gestern noch heruntergeladen und installiert)...

Logs kann ich auch gerne liefern, weiß nur nicht, wo ich anfangen soll...

Über Hilfe würde ich mich wirklich riesig freuen.

Vielen lieben Dank und liebe Grüße

Dirk

EDIT:
an den IRQ Konflikt glaube ich nicht mehr, denn

blacklist ehci_pci blacklist ehci_hcd

befreite mir den IRQ:

16: 0 0 4 0 0 0 0 0 IR-IO-APIC 16-fasteoi vfio-intx(0000:02:00.0)

trotzdem - Hängen, Laggen und die Tuner werden nicht durchgereicht. Interessant, je nach Einsellung werden teilweise rund 50000 interrupts auf CPU 2 erzeugt wärend die VM erfolglos versucht hochzufahren...

Gestern mal das ganze testweise umgekrempelt, hab die Module für die Karte unter Proxmox erlaubt und im dmesg gesehen, dass er eine Firmware vermisst. Hab die dann mal runtergeladen und anschließend werden die 4 Tuner sogar lt dmesg initialisiert... also sprechen tut die Hardware...

hier einfach mal ins blaue:

root@pve1:~# dmesg |grep 02:00 [ 0.288116] pci 0000:02:00.0: [18c3:0720] type 00 class 0x040000 [ 0.288153] pci 0000:02:00.0: reg 0x10: [mem 0xf7d10000-0xf7d1ffff] [ 0.288176] pci 0000:02:00.0: reg 0x14: [mem 0xf7d00000-0xf7d0ffff 64bit] [ 0.308434] pci 0000:02:00.0: CLS mismatch (64 != 32), using 64 bytes [ 0.983921] pci 0000:02:00.0: Adding to iommu group 13

root@pve1:~# dmesg |grep group [ 0.110257] Built 1 zonelists, mobility grouping on. Total pages: 8226471 [ 0.234952] *** VALIDATE cgroup1 *** [ 0.234953] *** VALIDATE cgroup2 *** [ 0.983702] pci 0000:00:00.0: Adding to iommu group 0 [ 0.983722] pci 0000:00:01.0: Adding to iommu group 1 [ 0.983735] pci 0000:00:02.0: Adding to iommu group 2 [ 0.983744] pci 0000:00:14.0: Adding to iommu group 3 [ 0.983756] pci 0000:00:16.0: Adding to iommu group 4 [ 0.983762] pci 0000:00:16.3: Adding to iommu group 4 [ 0.983770] pci 0000:00:19.0: Adding to iommu group 5 [ 0.983777] pci 0000:00:1a.0: Adding to iommu group 6 [ 0.983784] pci 0000:00:1b.0: Adding to iommu group 7 [ 0.983792] pci 0000:00:1c.0: Adding to iommu group 8 [ 0.983799] pci 0000:00:1c.4: Adding to iommu group 9 [ 0.983806] pci 0000:00:1d.0: Adding to iommu group 10 [ 0.983814] pci 0000:00:1e.0: Adding to iommu group 11 [ 0.983888] pci 0000:00:1f.0: Adding to iommu group 12 [ 0.983895] pci 0000:00:1f.2: Adding to iommu group 12 [ 0.983903] pci 0000:00:1f.3: Adding to iommu group 12 [ 0.983911] pci 0000:01:00.0: Adding to iommu group 1 [ 0.983921] pci 0000:02:00.0: Adding to iommu group 13 [ 0.983932] pci 0000:03:00.0: Adding to iommu group 14

root@pve1:~# dmesg |grep vfio [ 3.474617] vfio_pci: add [18c3:0720[ffffffff:ffffffff]] class 0x000000/00000000 [ 3.498617] vfio_pci: add [1103:2640[ffffffff:ffffffff]] class 0x000000/00000000 root@pve1:~#

root@pve1:~# cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7 0: 6 0 0 0 0 0 0 0 IR-IO-APIC 2-edge timer 1: 0 0 0 0 0 0 4 0 IR-IO-APIC 1-edge i8042 8: 0 0 0 0 0 0 0 1 IR-IO-APIC 8-edge rtc0 9: 0 4 0 0 0 0 0 0 IR-IO-APIC 9-fasteoi acpi 12: 0 0 0 0 0 6 0 0 IR-IO-APIC 12-edge i8042 16: 0 0 4 0 0 0 0 0 IR-IO-APIC 16-fasteoi 18: 0 0 0 0 0 0 0 0 IR-IO-APIC 18-fasteoi i801_smbus 24: 0 0 0 0 0 0 0 0 DMAR-MSI 0-edge dmar0 25: 0 0 0 0 0 0 0 0 DMAR-MSI 1-edge dmar1 30: 0 16614 0 0 0 0 0 0 IR-PCI-MSI 1572864-edge enp3s0 31: 0 0 0 87174 0 0 0 0 IR-PCI-MSI 512000-edge ahci[0000:00:1f.2] 32: 0 0 0 0 0 0 0 0 IR-PCI-MSI 327680-edge xhci_hcd 33: 0 0 0 0 0 24 0 0 IR-PCI-MSI 360448-edge mei_me 34: 0 0 0 0 0 0 46 0 IR-PCI-MSI 32768-edge i915 35: 0 0 0 0 0 0 0 762 IR-PCI-MSI 442368-edge snd_hda_intel:card0 NMI: 6 13 6 10 4 8 8 7 Non-maskable interrupts LOC: 66536 58059 46159 50510 80503 42014 55007 50174 Local timer interrupts SPU: 0 0 0 0 0 0 0 0 Spurious interrupts PMI: 6 13 6 10 4 8 8 7 Performance monitoring interrupts IWI: 0 0 3 0 0 0 0 0 IRQ work interrupts RTR: 0 0 0 0 0 0 0 0 APIC ICR read retries RES: 64079 62691 47541 78274 26496 37834 35791 46501 Rescheduling interrupts CAL: 3751 5209 4202 4543 5010 4493 3712 3857 Function call interrupts TLB: 2276 3396 3027 2926 3050 2638 2622 2210 TLB shootdowns TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts DFR: 0 0 0 0 0 0 0 0 Deferred Error APIC interrupts MCE: 0 0 0 0 0 0 0 0 Machine check exceptions MCP: 3 4 4 4 4 4 4 4 Machine check polls ERR: 0 MIS: 0 PIN: 0 0 0 0 0 0 0 0 Posted-interrupt notification event NPI: 0 0 0 0 0 0 0 0 Nested posted-interrupt event PIW: 0 0 0 0 0 0 0 0 Posted-interrupt wakeup event


Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.4.106-1-pve root=/dev/mapper/pve-root ro quiet intel_iommu=on iommu=pt irqpoll acpi=debug

root@pve1:~# dmesg |grep error [ 1.563070] ACPI Error: Aborting method \_SB.PCI0.SAT0.SPT0._GTF due to previous error (AE_NOT_FOUND) (20190816/psparse-531) [ 1.563792] ACPI Error: Aborting method \_SB.PCI0.SAT0.SPT3._GTF due to previous error (AE_NOT_FOUND) (20190816/psparse-531) [ 1.564865] ACPI Error: Aborting method \_SB.PCI0.SAT0.SPT5._GTF due to previous error (AE_NOT_FOUND) (20190816/psparse-531) [ 1.566353] ACPI Error: Aborting method \_SB.PCI0.SAT0.SPT0._GTF due to previous error (AE_NOT_FOUND) (20190816/psparse-531) [ 1.566453] ACPI Error: Aborting method \_SB.PCI0.SAT0.SPT3._GTF due to previous error (AE_NOT_FOUND) (20190816/psparse-531) [ 1.568797] ACPI Error: Aborting method \_SB.PCI0.SAT0.SPT5._GTF due to previous error (AE_NOT_FOUND) (20190816/psparse-531) [ 3.444628] EXT4-fs (dm-1): re-mounted. Opts: errors=remount-ro

root@pve1:~# dmesg | grep 'remapping' [ 0.214580] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping. [ 0.214963] DMAR-IR: Enabled IRQ remapping in x2apic mode

blacklist:
blacklist ddbridge blacklist dvb_core blacklist ngene blacklist stv090x blacklist lnbp21 blacklist stv6110x blacklist ehci_pci blacklist ehci_hcd

vfio:
options vfio-pci ids=18c3:0720,1103:2640 options vfio_iommu_type1 allow_unsafe_interrupts=1

modules-load:
vfio vfio_iommu_type1 vfio_pci vfio_virqfd

grub cmdline:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt irqpoll acpi=debug"
 

Attachments

  • ngene.PNG
    ngene.PNG
    15.9 KB · Views: 0
Last edited:
sorry, muss mir selber antworten...
nicht zum bumpen, sondern sind nicht mehr als 15000 Zeichen erlaubt.

Gerade eben kam trotz den Optionen der hier:

Code:
[   79.437405] irq 16: nobody cared (try booting with the "irqpoll" option)
[   79.437410] CPU: 2 PID: 1238 Comm: kvm Tainted: P           O      5.4.106-1-pve #1
[   79.437411] Hardware name: Gigabyte Technology Co., Ltd. To be filled by O.E.M./Q77M-D2H, BIOS F2 12/20/2012
[   79.437411] Call Trace:
[   79.437413]  <IRQ>
[   79.437418]  dump_stack+0x6d/0x8b
[   79.437420]  __report_bad_irq+0x3c/0xb6
[   79.437422]  note_interrupt.cold.10+0xb/0x5c
[   79.437424]  handle_irq_event_percpu+0x6f/0x80
[   79.437425]  handle_irq_event+0x3b/0x60
[   79.437427]  handle_fasteoi_irq+0x90/0x130
[   79.437428]  do_IRQ+0x54/0xe0
[   79.437430]  common_interrupt+0xf/0xf
[   79.437430]  </IRQ>
[   79.437435] RIP: 0010:handle_external_interrupt_irqoff+0x7e/0xf0 [kvm_intel]
[   79.437437] Code: c1 e0 10 48 c1 e2 20 48 09 d0 0f b7 16 65 48 89 1d 57 79 86 3e 48 09 d0 48 89 e2 48 83 e4 f0 6a 18 52 9c 6a 10 e8 32 a6 c3 d7 <65> 48 c7 05 36 79 86 3e 00 00 00 00 5b 5d c3 81 3d 19 65 02 00 11
[   79.437437] RSP: 0018:ffffbdab40b7bcc0 EFLAGS: 00000086 ORIG_RAX: ffffffffffffffdc
[   79.437438] RAX: ffffffff99200238 RBX: ffffa0b2ac748000 RCX: 0000000000000000
[   79.437439] RDX: ffffbdab40b7bcc0 RSI: fffffe0000000230 RDI: ffffa0b2ac748000
[   79.437439] RBP: ffffbdab40b7bcc8 R08: 0000000000000000 R09: 0000000000000000
[   79.437440] R10: 0000000000000000 R11: 0000000000000000 R12: 0000004736827821
[   79.437440] R13: 0000000000000000 R14: 0000000000000000 R15: ffffa0b2f8aa3400
[   79.437442]  ? irq_entries_start+0x18/0x660
[   79.437446]  vmx_handle_exit_irqoff+0x80/0xe0 [kvm_intel]
[   79.437462]  vcpu_enter_guest+0x252/0x1610 [kvm]
[   79.437465]  ? skip_emulated_instruction+0xbc/0x170 [kvm_intel]
[   79.437475]  ? emulator_pio_in_emulated+0x116/0x1a0 [kvm]
[   79.437485]  ? kvm_skip_emulated_instruction+0x3b/0x60 [kvm]
[   79.437496]  kvm_arch_vcpu_ioctl_run+0x100/0x570 [kvm]
[   79.437504]  kvm_vcpu_ioctl+0x24b/0x610 [kvm]
[   79.437506]  ? common_interrupt+0xa/0xf
[   79.437507]  do_vfs_ioctl+0xa9/0x640
[   79.437508]  ? common_interrupt+0xa/0xf
[   79.437509]  ksys_ioctl+0x67/0x90
[   79.437510]  __x64_sys_ioctl+0x1a/0x20
[   79.437512]  do_syscall_64+0x57/0x190
[   79.437513]  entry_SYSCALL_64_after_hwframe+0x44/0xa9
[   79.437514] RIP: 0033:0x7f7acc145427
[   79.437514] Code: 00 00 90 48 8b 05 69 aa 0c 00 64 c7 00 26 00 00 00 48 c7 c0 ff ff ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 b8 10 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 39 aa 0c 00 f7 d8 64 89 01 48
[   79.437515] RSP: 002b:00007f7abdb31c08 EFLAGS: 00000246 ORIG_RAX: 0000000000000010
[   79.437516] RAX: ffffffffffffffda RBX: 000000000000ae80 RCX: 00007f7acc145427
[   79.437516] RDX: 0000000000000000 RSI: 000000000000ae80 RDI: 0000000000000015
[   79.437517] RBP: 0000000000000000 R08: 00005628eefa9f58 R09: 000000000000ffff
[   79.437517] R10: 0000000000000001 R11: 0000000000000246 R12: 00005628f109b9b0
[   79.437518] R13: 00007f7acdfde000 R14: 0000000000000000 R15: 00005628f109b9b0
[   79.437518] handlers:
[   79.437522] [<00000000522853a3>] vfio_intx_handler [vfio_pci]
[   79.437523] Disabling IRQ #16
 
@ChAoS hast du vielleicht dein Problem gelöst?
Ich habe auch ein Problem mit IRQ Konflikt und ich weiß nicht wie kann ich es begeben.
Mein Problem habe hier beschrieben:
IRQ Konflikt
 
Hi,
nach vielem hin und her habe ich herausgefunden, dass die DD Cine v5.5 einfach für dieses Vorhaben nicht geeignet ist. Habe dann in der Bucht preiswert eine 6.5er geschossen, die wie geschnitten Brot läuft :)

LG
Dirk