Marko Kohtala wrote: > Wait for right amount of tlb flushes. Completed can be larger than > needed and therefore the loop waiting them to match never ends. > > Signed-off-by: Marko Kohtala <[EMAIL PROTECTED]> > > --- > > This solves kernel lockup in KVM_SET_MEMORY_REGION ioctl with Linux > 2.6.23.8 and before at kvm-52 start. Not needed in 2.6.24. > > diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c > index cd05579..b148aff 100644 > --- a/drivers/kvm/kvm_main.c > +++ b/drivers/kvm/kvm_main.c > @@ -279,7 +279,8 @@ void kvm_flush_remote_tlbs(struct kvm *kvm) > * to complete. > */ > for (cpu = first_cpu(cpus); cpu != NR_CPUS; cpu = next_cpu(cpu, cpus)) > - smp_call_function_single(cpu, ack_flush, &completed, 1, 0); > + if (cpu_isset(cpu, cpus)) > + smp_call_function_single(cpu, ack_flush, &completed, 1, > 0); >
Can you explain how this makes a difference? Aren't first_cpu() and next_cpu() designed to iterate over all cpus which have cpu_isset(cpus)? -- Any sufficiently difficult bug is indistinguishable from a feature. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2005. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ kvm-devel mailing list kvm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/kvm-devel