So for the people having problem with Heroes of the Storm or StarCraft2 on Windows 10, here is what I have been able to piece together.
Those two games use a ton of branch tracing code. Specifically, they enable and access LBR registers (part of the Intel MSRs). The windows 10 code portion for these games seems to include a ton of LBR reads. Since these branch traces are mainly for code debugging purposes I personally believe that they were used to debug win10 code for these games and were forgotten. LBRs themselves don't hurt performance much, although having all those needless register reads can't be that beneficial. KVM does not support LBR. So without the ignore_msrs the game would just crash. But even if KVM simply returned 0 that is still a relatively expensive process when compared to a simple register read in native. Even if KVM were to implement LBR that would only make things worse because any implementation would cost more than a simple return 0. With my limited knowledge of how KVM works I do not see how one can make a host respond to guests hammering LBR requests without taking a performance hit, even if they don't give the correct response. So it seems the only way to fix this performance issue is to have Blizzard take out the offending code in an upcoming patch. I feel the code was left in there in error as at the end of the day it's main purpose is debugging and shouldn't be active in a game where performance really matters. The question is how likely it is that Blizzard will actually fix this problem seeing as it really effects only a tiny subset of their user base. I really wish I had a proper fix to the problem, but it seems that getting these games to run in VM preperly means avoiding win10. _______________________________________________ vfio-users mailing list [email protected] https://www.redhat.com/mailman/listinfo/vfio-users
