On 09/09/2016 06:35 PM, Paolo Bonzini wrote: > > > On 09/09/2016 12:10, Christian Borntraeger wrote: >> By checking vcpu->requests we can do an early exit and allow gcc >> to optimize multiple kvm_check_request into one block for the >> common case (no requests). >> >> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> >> --- >> include/linux/kvm_host.h | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h >> index 1c9c973..b15b460 100644 >> --- a/include/linux/kvm_host.h >> +++ b/include/linux/kvm_host.h >> @@ -1115,6 +1115,8 @@ static inline void kvm_make_request(int req, struct kvm_vcpu *vcpu) >> >> static inline bool kvm_check_request(int req, struct kvm_vcpu *vcpu) >> { >> + if (likely(!vcpu->requests)) >> + return false; >> if (test_bit(req, &vcpu->requests)) { >> clear_bit(req, &vcpu->requests); > > I'm not sure -- due to asm in test_bit and to -fno-strict-aliasing, I'm > afraid that each kvm_check_request will have its own zero check. > kvm_check_request should be rare, but it does show up in microbenchmarks > so perhaps it's best to keep those two lines of code duplicated across > the architectures. Not sure either, it seems to work like above (but does not work when I combine both ifs..) So yes, maybe its just too unreliable and we keep things as is. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html