Hello! I have an old ATSC Tuner card. It has special functionality I have not found on any other card, but drivers were discontinued after Windows ME. I had an old machine running '98 just to access the card’s features. Now I’m setting up a NAS with virtual machines, I’m trying to see if I can put that card in the NAS machine and access the tuner card via a VM, so I can get rid of the old Windows 98 machine. When I went to set up the PCI passthrough, the card showed up in the drop-down box. However, when I try to start the VM with the passthrough device on the list I get the following Error:
Error: Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/plugins/vm/supervisor/supervisor.py”, line 182, in start
if self.domain.create() < 0:
^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/libvirt.py”, line 1373, in create
raise libvirtError(‘virDomainCreate() failed’)
libvirt.libvirtError: internal error: qemu unexpectedly closed the monitor: 2024-11-19T18:52:24.204940Z qemu-system-x86_64: -device {“driver”:“vfio-pci”,“host”:“0000:06:04.0”,“id”:“hostdev0”,“bus”:“pci.0”,“addr”:“0x6”}: vfio 0000:06:04.0: Failed to set up TRIGGER eventfd signaling for interrupt INTX-0: VFIO_DEVICE_SET_IRQS failure: Device or resource busy
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 198, in call_method
result = await self.middleware.call_with_audit(message[‘method’], serviceobj, methodobj, params, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1466, in call_with_audit
result = await self._call(method, serviceobj, methodobj, params, app=app,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1417, in _call
return await methodobj(*prepared_call.args)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 187, in nf
return await func(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/schema/processor.py”, line 47, in nf
res = await f(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/vm/vm_lifecycle.py”, line 58, in start
await self.middleware.run_in_thread(self._start, vm[‘name’])
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1324, in run_in_thread
return await self.run_in_executor(self.thread_pool_executor, method, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/main.py”, line 1321, in run_in_executor
return await loop.run_in_executor(pool, functools.partial(method, *args, **kwargs))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3.11/concurrent/futures/thread.py”, line 58, in run
result = self.fn(*self.args, **self.kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/lib/python3/dist-packages/middlewared/plugins/vm/vm_supervisor.py”, line 68, in _start
self.vms[vm_name].start(vm_data=self._vm_from_name(vm_name))
File “/usr/lib/python3/dist-packages/middlewared/plugins/vm/supervisor/supervisor.py”, line 191, in start
raise CallError(‘\n’.join(errors))
middlewared.service_exception.CallError: [EFAULT] internal error: qemu unexpectedly closed the monitor: 2024-11-19T18:52:24.204940Z qemu-system-x86_64: -device {“driver”:“vfio-pci”,“host”:“0000:06:04.0”,“id”:“hostdev0”,“bus”:“pci.0”,“addr”:“0x6”}: vfio 0000:06:04.0: Failed to set up TRIGGER eventfd signaling for interrupt INTX-0: VFIO_DEVICE_SET_IRQS failure: Device or resource busy
Another error comes up on the NAS terminal:
"genirq: Flags mismatch IRQ 16 00000000 (vfio-intx:0000:06:04.0)) vs. 00000080
In addition, now the device shows up as “Not Available: Not Available” where it previously listed the brand and function of the device in the PCI passthrough dropdown. If I remove the passthrough device, the VM starts, but obviously with access to the device.
I’m running TrueNAS Scale on a Dell T3610 Workstation with a Xeon 6-core processor and 32 Megs of memory.
I understand that I may need to make sure Linux doesn’t load any drivers for the device, but I’ve never been able to get the device to work on Linux, despite much trying in the past so I don’t think it can be loading any drivers for it, certainly none that work. I believe that virtualization is enabled in the BIOS as the processor is successfully being passed through to one of my other VMs.
Any ideas?