KVM: use cpu_relax when halt polling
authorLi RongQing <lirongqing@baidu.com>
Tue, 27 Jul 2021 11:12:47 +0000 (19:12 +0800)
committerPaolo Bonzini <pbonzini@redhat.com>
Tue, 27 Jul 2021 20:59:01 +0000 (16:59 -0400)
commit74775654332b2682a5580d6f954e5a9ac81e7477
tree36e5a720e26b554856d3db47524f2369c8bd2d6a
parent5868b8225ecef4ba3f5b17e65984d60bc5fd6254
KVM: use cpu_relax when halt polling

SMT siblings share caches and other hardware, and busy halt polling
will degrade its sibling performance if its sibling is working

Sean Christopherson suggested as below:

"Rather than disallowing halt-polling entirely, on x86 it should be
sufficient to simply have the hardware thread yield to its sibling(s)
via PAUSE.  It probably won't get back all performance, but I would
expect it to be close.
This compiles on all KVM architectures, and AFAICT the intended usage
of cpu_relax() is identical for all architectures."

Suggested-by: Sean Christopherson <seanjc@google.com>
Signed-off-by: Li RongQing <lirongqing@baidu.com>
Message-Id: <20210727111247.55510-1-lirongqing@baidu.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/kvm_main.c