Try the CLI method and see if that fixes it.
Those settings in XOA exist for vGPUs I believe, not for pass through.
Try the CLI method and see if that fixes it.
Those settings in XOA exist for vGPUs I believe, not for pass through.
I was importing a 700GB .VHD created with Microsoft Disk2VHD (Not XVHD).
This is coming from my NAS and only gigabit ethernet (Until more 10gbit cards arrive next week) so it was taking forever. XOA had estimated 21 hours or something. Which was fine, happy to leave it overnight. I left my PC on the tasks page to monitor the progress and left it there.
However at some point when the task was over 5% complete I came back to check the progress and found that the task had just completely disappeared.
I didn't have any sort of notification left on the screen as to what happened or why. If I check in previous tasks I don't see anything. If I check in Pool logs I don't see anything.
I figured maybe the progress bar was inaccurate and the task finished but when I checked too see if the disk was available it's nowhere to be found so it seems the import failed at some point.
Am I missing something? It seems pretty difficult to find the information in XOA and I have no idea what I'd search for in logs or previous tasks. I tried to search for "import" or "nfs" (since that's part of the SR name I was importing it to) but got no results.
Any tips?
EDIT - Pretty sure I understand what happened. Computer went to sleep and lost network connection instead of keeping the session alive. Copying from mapped NAS folder, transferring through XOA on my PC was adding too many jumps so I've just opted to copy the file via command line instead.
Still confused as to why there was no error message or anything under tasks or anything though. It seems as soon as you refresh the page everything disappears.
In the end the solution was so simple... I was up until 2am trying to fix this. Updating the firmware, messing up Grub on my XCP-NG installation and having to recover off an XCP-NG 8.2 backup, hours wasted troubleshooting the Mellanox firmware tools (During installation you have to enter your password multiple times and there's no prompt or anything - No idea how someone discovered that work around).
I saw lots of people mentioning adding pci=realloc=off to kernel boot parameters and I tried that without success.
Just for the lolz I figured what if I turned it on instead?
pci=realloc=on
dmesg | grep UAR
Can no longer see the UAR missing error from before... Seems promising...
lspci -k | grep -A 2 Mellanox
04:00.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3]
Subsystem: Mellanox Technologies Device 0055
Kernel driver in use: mlx4_core
Kernel modules: mlx4_core
Kernel driver is in use now, before it wasn't.
Rescan PIF in XOA and I can see it! Shows connected at 10gbit, is able to get IP address via DHCP, etc.
Everything seems to be working...
Now I've just gotta test that all my other PCI-e devices are passing through ok with this option enabled.
@Anonabhar seems to be an issue with the machine itself.
Tested my gaming rig and my server.
They're both AMD X570 chipsets.
Loaded up Ubuntu 22.04 live USB on each system. On my gaming rig it worked straight away without issue. Connected DAC to switch and it reported a 10gbit connection. On the server it has the same UAR Missing error message in dmesg and didn't show up as a network interface but appeared in lspci just as before.
Either I'm missing a setting hidden away in the BIOS or there's some very weird hardware conflict or incompatibility.
I'm installing Ubuntu to a portal SSD now and then I'll try out the firmware tools and see if I have any luck.
I just edited my post as you posted. I just tried it on Windows 11 and it worked instantly. This particular card doesn't support Infiniband, it's ethernet only so I don't believe that should be relevant in this case. It's the CX311A EN model.
The problem seems to lie in the drivers on XCP-NG or in the firmware of the card.
I'm not sure if I should be upgrading or downgrading the firmware or as some people suggested editing the firmware and limiting some aspects of the card to try and get it working.
I saw some posts about PCI=REALLOC=OFF in Grub from the Red Hat community support page, but wouldn't I want this on for a hypervisor?
I think I'm getting a bit closer...
lspci -k
04:00.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3]
Subsystem: Mellanox Technologies Device 0055
Kernel modules: mlx4_core
lsmod | grep mlx
mlx4_core 352256 0
devlink 77824 1 mlx4_core
dmesg | grep mlx
[ 7.304630] mlx4_core: Mellanox ConnectX core driver v4.0-0
[ 7.304646] mlx4_core: Initializing 0000:04:00.0
[ 7.304799] mlx4_core 0000:04:00.0: Missing UAR, aborting
Seems the driver is failing to load. Google suggests it could be caused by SR-IOV (pretty sure I've got all my virtualisation options on in the BIOS) or I might be able to play around with the grub configuration to get it working.
The reason I went with this card in particular was because of the form factor. In this machine I've got 2 graphics cards and a TV tuner card already. I have a 1X slot (which basically nothing will fit in) and the bottom X16 slot only runs at 4X (which the ConnectX3 is a 4x PCI-e 3.0 card).
Supposedly another possible fix is to edit the firmware and flash a firmware that limits or removes SR-IOV functions from the card.
EDIT - Took out of hypervisor and installed into my gaming rig. Different motherboard, but same chipset (AMD X570). Windows 11 picked up the card instantly without need for driver installation. Plugged DAC into a 10Gbit SFP+ Juniper switch and Windows reads 10Gbit speed.
So card is definitely working properly but XCP-NG 8.3 doesn't like it.
Hi all,
Recently bought a Mellanox ConnectX-3 CX311A from eBay.
Plugged it into my hypervisor XCP-NG 8.3, but can't seem to get the card to work. As far as I know this card is ethernet only so shouldn't require any flashing or anything like that.
I'm using a new DAC from FS.com from the card to the 10GB SFP+ port on my Juniper switch.
Card is detected:
lspci
04:00.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3]
lspci -v | grep Mellanox
04:00.0 Ethernet controller: Mellanox Technologies MT27500 Family [ConnectX-3]
Subsystem: Mellanox Technologies Device 0055
I deleted and re-created my PCI passthrough config
xl pci-assignable-list
0000:09:00.0
0000:05:00.1
0000:01:00.0
0000:0a:00.0
0000:05:00.0
0000:01:00.1
Tried PIF scan in GUI and console but when I check PIF list I only see the on board NIC
xe pif-scan host-uuid=ff0c8a58-0feb-4fe1-8cc1-556aad1f8c75
xe pif-list
uuid ( RO) : a902c9a0-77f2-ad66-9f69-814e9bdd6413
device ( RO): eth0
MAC ( RO): d8:5e:d3:2b:23:8b
currently-attached ( RO): true
VLAN ( RO): -1
network-uuid ( RO): 5e0c47e8-abbd-bc5b-02eb-83b838560f90
host-uuid ( RO): ff0c8a58-0feb-4fe1-8cc1-556aad1f8c75
ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP group default qlen 1000
link/ether d8:5e:d3:2b:23:8b brd ff:ff:ff:ff:ff:ff
3: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 92:b5:0c:1e:3e:cc brd ff:ff:ff:ff:ff:ff
4: xenbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
link/ether d8:5e:d3:2b:23:8b brd ff:ff:ff:ff:ff:ff
inet 192.168.1.13/24 brd 192.168.1.255 scope global dynamic xenbr0
valid_lft 81730sec preferred_lft 81730sec
5: vif1.0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
7: vif2.0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
9: vif3.0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
11: vif4.0: <BROADCAST,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP group default qlen 1000
link/ether fe:ff:ff:ff:ff:ff brd ff:ff:ff:ff:ff:ff
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether d8:5e:d3:2b:23:8b txqueuelen 1000 (Ethernet)
RX packets 53756 bytes 20202528 (19.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 27516 bytes 6309909 (6.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 9556 bytes 5978566 (5.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9556 bytes 5978566 (5.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vif1.0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
ether fe:ff:ff:ff:ff:ff txqueuelen 1000 (Ethernet)
RX packets 3859 bytes 336927 (329.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 29344 bytes 9261592 (8.8 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vif2.0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
ether fe:ff:ff:ff:ff:ff txqueuelen 1000 (Ethernet)
RX packets 4605 bytes 937140 (915.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28965 bytes 8527803 (8.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vif3.0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
ether fe:ff:ff:ff:ff:ff txqueuelen 1000 (Ethernet)
RX packets 9936 bytes 1319123 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 33662 bytes 7927207 (7.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vif4.0: flags=4291<UP,BROADCAST,RUNNING,NOARP,MULTICAST> mtu 1500
ether fe:ff:ff:ff:ff:ff txqueuelen 1000 (Ethernet)
RX packets 7851 bytes 1274556 (1.2 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 31981 bytes 8681713 (8.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
xenbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.13 netmask 255.255.255.0 broadcast 192.168.1.255
ether d8:5e:d3:2b:23:8b txqueuelen 1000 (Ethernet)
RX packets 33215 bytes 5737003 (5.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 6334 bytes 5412414 (5.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Any ideas?
@Niko1 Some motherboards updated their BIOS for Windows 11 compatibility which may have automatically turned on secure boot, etc, etc.
I can't see any other reason Linux ISO's would all of a sudden fail to boot.
Try the CLI method and see if that fixes it.
Those settings in XOA exist for vGPUs I believe, not for pass through.
I've managed to pass through an Nvidia Quadro P2000 as well as a TV Tuner to a Ubuntu VM for Plex transcoding and free to air TV.
I'm now trying to pass through a graphics card to a Windows VM for personal cloud gaming. After 2 days I've finally managed to get an ancient AMD 6870 to work! But I'd like to figure out why the other cards don't work.
System specs:
AMD Ryzen 5700G
Gigabyte X570 UD
64GB DDR4 RAM
Nvidia Quadro P2000
Hauppauge WinTV QuadHD
[plus a random graphics card]
According to Nvidia a GTX 760 SHOULD be able to be used in a virtual Windows environment since Nvidia driver 465. Upon installing the card and adding it to my Windows VM I can see the card in the device manager with the default Windows drivers installed and it seems to be functioning normally. However when I attempt to install the Nivdia drivers I then get the Code 43 issue. I tried multiple driver versions after 465 with no luck.
When I try the same in a Ubuntu VM it sees the card but it doesn't load the driver. Nvidia-SMI says no devices detected.
Eventually I gave up on the Nvidia card and decided to try an R9 270 from AMD, however with this card the host crashes when attempting to install the GPU drivers on Windows... Tried multiple driver versions but can't seem to keep the host stable when the card attempts to initialise.
I found similar threads on here mentioning their host would crash when trying to load GPU drivers:
https://xcp-ng.org/forum/topic/7012/host-crashes-error-43-nvidia-quadro-k2200-pcie-passthrough-to-vm
https://xcp-ng.org/forum/topic/5872/passed-through-gpu-crashes-host-during-driver-install
I've tried updating from XCP-NG 8.2 to 8.3 to see if that helped anything, but I get the same results as before.
I tried a Ubuntu VM with the R9 270 to see if it is just a Windows error, and upon start up is a warning message saying "Unable to locate a bios ROM" and then a fatal error. lspci shows the card and lshw -c video shows the card but it's "unclaimed".
Both cards never showed any output once XCP-NG had booted.
I was ready to completely give up but figured since I already have the chassis open I'll just toss in an old 6870 to see what happens.
Windows 10 immediately recognises the device in device manager rather than displaying as a "Basic Adapter", which isn't too surprising given its age. I installed the drivers, plugged in a monitor and bam, it was displaying the Windows desktop!
So out of 3 cards I managed to get only 1 working. I'd like to figure out WHY these other cards don't work as the entire point of this is to put in a more capable card in the near future, but obviously I'm not keen on buying a card that may not even work if I can only get 1/3 cards working.
Any ideas on what I can try to get this working more reliably with more modern graphics cards? The main difference I can think of between the cards is that the 6870 has 1GB VRAM while the GTX 760 and R2 270 both have 2GB VRAM. The Quadro P2000 has 5GB of VRAM, but being a workstation card perhaps Xen has better support for it.
Happy to provide any logs, etc, that would be useful.
==UPDATE==
My brother had a spare GTX 1060 6GB card. I put that in and it worked right away. Now able to Stream games from the VM to the TV, etc. Awesome! Still a mystery as why the other cards refused to work.
Unfortunately they don't offer a guide, just a mention of it working.
https://docs.citrix.com/en-us/citrix-hypervisor/graphics/hv-graphics-config.html
Citrix Hypervisor supports Intel’s virtual GPU (GVT-g), a graphics acceleration solution that requires no additional hardware. It uses the Intel Iris Pro feature embedded in certain Intel processors, and a standard Intel GPU driver installed within the VM.
However, they don't actually offer a guide on HOW to set this up besides offering some tips on how to setup BAR in the UEFI settings to change how many vGPU's it will support. I've enabled Above 4G Decoding, Re-size BAR Support and set the Aperture Size to 512MB but that doesn't seem to enable the vGPU options XCP-ng Center or XO. I'm assuming I need to enable it manually on the underlying OS before XCP-ng can see it.
Note that the Intel GPU pass through is GVT-d NOT GVT-g. If you use GVT-d (AKA, just your regular PCIe pass through) obviously then I wouldn't be able to use the GPU for the the XCP-ng console on the machine itself. I'm comfortable on how to set that up but I really need the console available on the hypervisor for my use case.
This video (in German) demonstrates setting it up in XCP-ng center.