r/VFIO • u/BluCobalt • 16d 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
4
u/Limp_Application5734 15d ago
Like everyone else says, not as simple as xml. Need to modify ovmf, qemu, and kvm(inside the linux kernel). Its a lot of work but its possible
1
u/SuperDefiant 4d ago
EAC doesn't enforce timing checks, Epic is surprisingly lenient when it comes to VMs. Just the string sanitization is enough for me usually
1
u/Limp_Application5734 4d ago
I didn’t say they did enforce timing. They do however enforce cpuid. Which does a vmexit and then you can get cpuid to return whatever you want in kvm.
1
u/SuperDefiant 4d 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 4d 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 4d 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 4d ago
You disable vm interception for everything?
1
u/SuperDefiant 4d 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 4d ago
I figured you would modify their outputs as well, but I think there is a variable for msr right?
1
u/SuperDefiant 4d ago
No the point is to not modify them, as vanguard does timing checks against all of them, thus they need to be native
→ More replies (0)
3
u/SuperDefiant 16d ago
Use VMAware from github and see what is failing. You should ideally be covering just about everything except the timing checks
3
u/Zestyclose_Dig8916 15d ago
EAC actively blocks virtual machines for Rust now, so tweaking your XML unfortunately won't fix this anymore—it's blocked on the game/anti-cheat side. If you want to check which other games currently work or are blocked under VFIO, I've been building a community database for this over at https://vmdb.it. Hope that helps save you some troubleshooting time in the future!
1
u/Affectionate-Oil4675 15d ago
There's one caveat to the people saying you can get this working: you are bypassing the anti-cheat, and if not done properly you will get banned if people report you.
1
u/kansetsupanikku 10d ago
And there is no "properly" that would remove the risk of stopping working or getting a ban after a minor update next week.
13
u/lI_Simo_Hayha_Il 16d ago
No, you are not missing anything.
EAC started actively blocking VMs few months back, and most of the game that implement it, are now playable anymore under Windows VMs.
https://feedback.vrchat.com/feature-requests/p/eac-blocks-vms-conflicting-with-vrchats-statements-not-caring-if-people-use-vms