On Wed, Sep 21, 2022 at 2:39 PM David Matlack dmatlack@google.com wrote:
On Thu, Sep 15, 2022 at 12:04:44AM +0000, Vishal Annapurve wrote:
Cache the vendor CPU type in a global variable so that multiple calls to is_intel_cpu() do not need to re-execute CPUID.
Add cpu vendor check in kvm_hypercall() so that it executes correct vmcall/vmmcall instruction when running on Intel/AMD hosts. This avoids exit to KVM which anyway tries to patch the instruction according to the cpu type.
Out of curiousity, why do we want to avoid this exit?
Referring to the patch set posted for UPM selftests with non-confidential VMs [1], vmcall patching will not work for selftests executed with UPM feature enabled since guest memory can not be modified by KVM. So I tried to add a kvm_hypercall implementation that will execute the hypercall according to the cpu type.
Hypercall updates in this series are done to ensure that such a change is done for all callers to allow consistency and avoid relying on KVM behavior to patch the vmmcall/vmcall instruction.
[1] https://lore.kernel.org/lkml/20220819174659.2427983-5-vannapurve@google.com/