KVM: add kvm_get_kvm and kvm_put_kvm functions
PATCH 1/1 KVM: add kvm_get_kvm and kvm_put_kvm functions
Quoted 1 line
From
ebb9fe4765f1572314d2249e29a7ef4d0de07273Mon Sep 17 00:00:00 2001
From: Izik Eidus <[email protected]>
Date: Sun, 30 Mar 2008 15:48:35 +0300
Subject: [PATCH] KVM: add kvm_get_kvm and kvm_put_kvm functions,
the main purpose of adding this functions is the abilaty to release the spinlock that protect the kvm list while still be able to do operations on a specific kvm in a safe way.
--- include/linux/kvm_host.h | 4 ++++ virt/kvm/kvm_main.c | 17 ++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletions(-)
include/linux/kvm_host.h +4 -0
@@ -114,6 +114,7 @@ struct kvm {struct kvm_io_bus pio_bus;struct kvm_vm_stat stat;struct kvm_arch arch; +atomic_t users_count; };/* The guest did something we don't support. */
@@ -140,6 +141,9 @@ int kvm_init(void *opaque, unsigned int vcpu_size, struct module *module);void kvm_exit (void ); +void kvm_get_kvm (struct kvm *kvm); +void kvm_put_kvm (struct kvm *kvm); +#define HPA_MSB ((sizeof(hpa_t) * 8) - 1)#define HPA_ERR_MASK ((hpa_t)1 << HPA_MSB)static inline int is_error_hpa (hpa_t hpa) {return hpa >>HPA_MSB ; }
virt/kvm/kvm_main.c +16 -1
@@ -193,6 +193,7 @@ static struct kvm *kvm_create_vm(void)mutex_init (&kvm->lock);kvm_io_bus_init (&kvm->mmio_bus);init_rwsem (&kvm->slots_lock); +atomic_set (&kvm->users_count,1 );spin_lock (&kvm_lock);list_add (&kvm->vm_list, &vm_list);spin_unlock (&kvm_lock);
@@ -242,11 +243,25 @@ static void kvm_destroy_vm(struct kvm *kvm)mmdrop (mm); } +void kvm_get_kvm (struct kvm *kvm) +{ +atomic_inc (&kvm->users_count); +} +EXPORT_SYMBOL_GPL (kvm_get_kvm); + +void kvm_put_kvm (struct kvm *kvm) +{ +if (atomic_dec_and_test (&kvm->users_count)) +kvm_destroy_vm (kvm); +} +EXPORT_SYMBOL_GPL (kvm_put_kvm); + +static int kvm_vm_release (struct inode *inode,struct file *filp) {struct kvm *kvm = filp->private_data; -kvm_destroy_vm (kvm); +kvm_put_kvm (kvm);return 0 ; }
Signature · 10 lines
1.5.3.6 -- woof. ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
Avi Kivity
AppliedQuoted 10 lines · Izik Eidus
From
ebb9fe4765f1572314d2249e29a7ef4d0de07273Mon Sep 17 00:00:00 2001
From: Izik Eidus <[email protected]>
Date: Sun, 30 Mar 2008 15:48:35 +0300
Subject: [PATCH] KVM: addkvm_get_kvmandkvm_put_kvmfunctions,the main purpose of adding this functions is the abilaty to release the spinlock that protect the kvm list while still be able to do operations on a specific kvm in a safe way.
Applied, thanks.
Signature · 8 lines
error compiling committee.c: too many arguments to function ------------------------------------------------------------------------- Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace