Il 14/03/2013 16:11, Gleb Natapov ha scritto: > On Thu, Mar 14, 2013 at 04:08:42PM +0100, Paolo Bonzini wrote: >> Il 14/03/2013 16:03, Jan Kiszka ha scritto: >>>>> vcpu->srcu_idx = srcu_read_lock() >>>>> idx = srcu_read_lock(&vcpu->kvm->srcu); >>>>> srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); >>>>> vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); >>>>> srcu_read_unlock(&vcpu->kvm->srcu, idx); >>>>> srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); >>>>> >>>>> Not sure this is valid. >>> Grmbl, likely not. >> >> It might be. >> >> Isn't it the same as two different CPUs doing >> >> CPU 1 CPU 2 >> ------------------------------------------------------------------------------------------------ >> >> vcpu->srcu_idx = srcu_read_lock() >> idx = srcu_read_lock(&vcpu->kvm->srcu); >> srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); >> vcpu->srcu_idx = srcu_read_lock(&vcpu->kvm->srcu); >> srcu_read_unlock(&vcpu->kvm->srcu, idx); >> srcu_read_unlock(&vcpu->kvm->srcu, vcpu->srcu_idx); >> >> ? >> > Srcu may have per cpu state. We can always ask Paul. There is per-CPU state but it is only used as an optimization. synchronize_srcu only uses the sum of all values. In fact, SRCU critical sections are preemptable so there's not even a guarantee that srcu_read_lock() and srcu_read_unlock() run on the same CPU. Paolo -- 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