Messages in this thread | | | Date | Fri, 13 Jul 2012 09:05:59 +0530 | From | Raghavendra K T <> | Subject | Re: [PATCH RFC V3 2/3] kvm: Note down when cpu relax intercepted or pause loop exited |
| |
On 07/13/2012 01:32 AM, Christian Borntraeger wrote: > On 12/07/12 21:18, Raghavendra K T wrote: >> +#ifdef CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT > [...] >> + struct { >> + bool cpu_relax_intercepted; >> + bool dy_eligible; >> + } ple; >> +#endif > [...] >> } >> vcpu->run = page_address(page); >> + vcpu->ple.cpu_relax_intercepted = false; >> + vcpu->ple.dy_eligible = false; > > This struct is only defined if CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT is set, but here it > is always accessed. Will break on !x86&& !s390.
Yes! I forgot about archs in init function. How about having #ifdef CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT vcpu->ple.cpu_relax_intercepted = false; vcpu->ple.dy_eligible = false; #endif
This would solve all the problem.
>> >> r = kvm_arch_vcpu_init(vcpu); >> if (r< 0) >> @@ -1577,6 +1579,7 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me) >> int pass; >> int i; >> >> + me->ple.cpu_relax_intercepted = true; > > dito
currently vcpu_on_spin is used only by x86 and s390. so if some other arch in future uses vcpu_on_spin, I believe they also have to enable CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT what do you think?
otherwise we have to add hook everywhere >> /* >> * We boost the priority of a VCPU that is runnable but not >> * currently running, because it got preempted by something >> @@ -1602,6 +1605,7 @@ void kvm_vcpu_on_spin(struct kvm_vcpu *me) >> } >> } >> } >> + me->ple.cpu_relax_intercepted = false; > > again. > > maybe define static inline access functions in kvm_host.h that are no-ops > if CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT is not set. >
| |