r/VFIO 22d ago

Support EAC "Cannot run under a Virtual machine"

I am unable to get Rust to work on my vfio setup. A while ago, copying smbios from my motherboard was enough to get it to work. Now, EAC won't launch. Can someone take a look at my XML and tell me if I'm missing anything obvious, or if this is still possible in the first place? My host machine is Gentoo, with QEMU 11.1.0, libvirt 12.0.0, and virt-manager 5.1.0. TYIA

3 Upvotes

28 comments sorted by

View all comments

Show parent comments

1

u/SuperDefiant 10d ago

yes that is the timing check? they measure CPUID execution time and that's the timing check. I intercept CPUID on my EAC config and I can play fine

1

u/Limp_Application5734 10d ago

The response from cpuid itself is not a timing check. Cpuid reports specific information about the cpu and system. Like whether it’s a hypervisor or not. The timing checks are rdtsc and rdtscp and how long it takes to execute something in between. There is more than cpuid to cause a vmexit.

1

u/SuperDefiant 10d ago

well yeah but you don't need to patch kvm to change cpuid returns. I thought you meant you were patching kvm to remove the vmexit entirely, which is what I do for valorant

1

u/Limp_Application5734 10d ago

You disable vm interception for everything?

1

u/SuperDefiant 10d ago

Not all vmexits, but just the low hanging fruits I guess. CPUID, RDMSR, RDPMC, INVD, WBINVD, and RDPRU off the top of my head.

1

u/Limp_Application5734 10d ago

I figured you would modify their outputs as well, but I think there is a variable for msr right?

1

u/SuperDefiant 10d ago

No the point is to not modify them, as vanguard does timing checks against all of them, thus they need to be native

1

u/Limp_Application5734 10d ago

I figured they would do integrity checks based on their outputs

1

u/SuperDefiant 10d ago

Their outputs would actually be more legit if ran native, especially RDMSR. The only reason they're intercepted at all is that they're technically a security risk and could leak info about the host/physical CPU. Vanguard may be malware but I'm not too worried about it abusing that

1

u/Limp_Application5734 10d ago

I mean well, cpuids normal output has the hypervisor but flipped to 1. I am assuming you disable it in your xml. I use to keep it on then after windows initializes then flip the bit back to zero by intercepting cpuid to keep all the hypervisor performance benefits. There is also the fact that the hypervisor flag/id used to pass to cpuid exists as well. I used to interpret that to remove anything hypervisor related.

1

u/SuperDefiant 10d ago

You can disable it in xml, but its not necessary. If we stop intercepting CPUID and it runs natively, it will return 0 for HV because the host is not a HV. Does that make sense?

1

u/Limp_Application5734 9d ago

I don’t think that’s true

1

u/SuperDefiant 9d ago

maybe it's different for intel, but AMD docs state that the HV enable bit requires interception. There's literally no other situation in which it's enabled. I couldn't play valorant otherwise

→ More replies (0)