Quick howto: GPU passthrough with lots of RAM

Hi ! I have some questions for you if you have time.

(Possible to Fix 2048MB RAM Limit for NVIDIA GPU Passthrough to HVM? - #38 by neowutran)

For me, now HVM created without dGPU assigned to it doesn’t boot with the error “No bootable device” in debug window.

It worked before changing patch from 3.5G to 2G and no Win HVM needed patching stubdoms, only xen.xml

I’ll check to patch stubdom as well and will be back with the info.

Meanwhile, someone could confirm this by simple creating HVM without dGPU

EDIT: On the other hand, I don’t see how patching could affect such a HVM, since the name of my HVM didn’t start with “gpu_” and it worked perfectly. I tried to rename to start with “gpu_” but to no avail.
Now, if this doesn’t bring confusion, I don’t know what would.

The only thing left to check is to rename it to start with “gpu_” and then to patch stubdom, but what the heck has happened meanwhile? Why this would ever happen to a VM with no device assigned?

Nope, renamed and patched stubdom, still “No bootable device”…

The patch is only needed for HVM with GPU passthrough. For other kind of HVM, it make them unbootable if you assign more than ~max-ram-below-4g RAM.
( The reason of why I used the “gpu_” naming thing )
Keep the stubdom patch, remove the xen.xml patch. And use only “gpu_XXXX” naming for hvm with GPU passthrough.

And it should work

Thanks. I have 2 HVMs. One with and one without dGPU assigned to. I need them both. The one without, worked with 6GB RAM. The one with - with 2048MB RAM only. Regardless of what was patched.
After switching 3.5->2GB in the patch, it’s reverse.

I am confused. If I have HVM without GPU passthrough, but other PCI device passthrough, what should I do to have it running with 8GiB memory and no “No bootable device” error?

I will try to explain it in a different way.


So if you use the xen.xml patch, you don’t have this difference between qube name starting with “gpu_”

If you want to use HVM using large amount of ram — with and without GPU passthrough —, you need to have this difference between qube named “gpu_” …

The guide Create a Gaming HVM can be improved:

  • If you have time, xen.xml patch could be modified to only apply the patch if the qube name start with “gpu_”. It would be better because both stubdom patch method and xen.xml patch method would result in the same behavior regarding the “gpu_” naming thing
  • The comment on github mentionning the “No Bootable device” could be linked + copy-pasted to make it more explicit
  • If someone have a lot of time, it could maybe be possible to automatically decide to apply the patch or not by searching on how you can grep the pci devices list passed to the vm looking for something like NVIDIA/AMD/VGA/…

2 posts were split to a new topic: Windows 10: no bootable device

I’d rather not paste all that lspci output. Are you looking for resizeable BAR choices?

My BIOS does not have anything about BAR, but it does have a setting for TOLUD. I leave this setting at “dynamic”, because I read somewhere that choosing a value could cause problems booting.

Looking for your size value of those kind of lines:

Region 0: Memory at f4000000 (32-bit, non-prefetchable) [size=16M]
Region 1: Memory at e0000000 (64-bit, prefetchable) [size=256M]
Region 3: Memory at f0000000 (64-bit, prefetchable) [size=32M]
Region 5: I/O ports at c200 [size=128]

(My guess being: it the max size in thoses lines is 256M, then settings max-ram-below-4g to 3.5G should work, it max size is bigger than 256M, then settings max-ram-below-4g to 2G should work)

1 Like

My dGPU has three memory regions: 16M, 32G, 32M.

My iGPU has two: 16M, 256M

I’m not sure if that helps :slight_smile:

1 Like

thanks ! That’s what I was looking for :slight_smile:

There seems to be a regression between RC3 & RC4 regarding GPU passthrough, at least for me.
I was able to passthrough the GPU using the stubroot method as well as xml method with RC3 (although I did get a strange error where non-HVM qubes would fail to start with an ‘Memory Hot Plug’ error with the xml method). I don’t have a way to turn off ReBAR so I had to change parameter 3.5G to 2G with both methods in order to get it to work. When I installed RC4, however, I was unable to passthrough the gpu with either methods.

Could anyone tell me if there was a change in Xen/Kernel/Qubes that would cause this to happen?

And which Xen/kernel/Qubes do you use? (Guessing RC means Qubes v4.2 RCx might make some people not to respond considering it lazy writing.)

sure that makes sense. You can’t expect much help if you don’t provide enough information for people to help.
Yes, by RCx I meant ‘release candidate’. I’ve installed each Qubes 4.2 release candidate with kernel latest, so with RC3 I installed it with kernel 6.4.8-1 and with RC4 I installed it with kernel 6.5.x-x (can’t recall it by memory).

Aside from that, I did not make any modifications except for the ones necessary for GPU passthrough

What’s the best place to report that issue?

(Should be in a dedicated “user support” thread)

What is the issue/what is the thing that don’t work ? (related to tolud ? something else ? )
What GPU are you using ?
What GPU driver are you using ?
What OS are you using for the HVM ?
Do you have the qubes logs of this HVM ?
Do you have the result of “sudo dmesg” for this HVM ?

In case anyone runs into this issue, the following worked:

But this topic is about “... lots of RAM”? And your post is about 2GB RAM, or I misread it?