On 07/19/2010 06:30 PM, Gleb Natapov wrote:
Code that depends on particular memslot layout can track changes and adjust to new layout. diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index c13cc48..c74ffc0 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h @@ -177,6 +177,7 @@ struct kvm { raw_spinlock_t requests_lock; struct mutex slots_lock; struct mm_struct *mm; /* userspace tied to this vm */ + u32 memslot_version; struct kvm_memslots *memslots; struct srcu_struct srcu; #ifdef CONFIG_KVM_APIC_ARCHITECTURE diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index b78b794..292514c 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -733,6 +733,7 @@ skip_lpage: slots->memslots[mem->slot] = new; old_memslots = kvm->memslots; rcu_assign_pointer(kvm->memslots, slots); + kvm->memslot_version++; synchronize_srcu_expedited(&kvm->srcu); kvm_arch_commit_memory_region(kvm, mem, old, user_alloc);
How does this interact with rcu? Nothing enforces consistency between rcu_dereference(kvm->memslots) and kvm->memslot_version.
Should probably be rcu_dereference(kvm->memslots)->version. -- error compiling committee.c: too many arguments to function -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>