aboutsummaryrefslogtreecommitdiffstats
path: root/xen/arch/x86/hvm/vmsi.c
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2010-06-10 18:01:03 +0100
committerKeir Fraser <keir.fraser@citrix.com>2010-06-10 18:01:03 +0100
commit2c76d23d0c7886cce135bf73cb0e99819a436990 (patch)
treef36e304fa62b4ec6e4170875d9941ee053e4baed /xen/arch/x86/hvm/vmsi.c
parent5bc894f65b3a26cd0ee1fc7658e95f2908fdbb0b (diff)
downloadxen-2c76d23d0c7886cce135bf73cb0e99819a436990.tar.gz
xen-2c76d23d0c7886cce135bf73cb0e99819a436990.tar.bz2
xen-2c76d23d0c7886cce135bf73cb0e99819a436990.zip
rcu: Update all rcu_read_lock() users to implement a dummy RCU read lock.
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
Diffstat (limited to 'xen/arch/x86/hvm/vmsi.c')
-rw-r--r--xen/arch/x86/hvm/vmsi.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/xen/arch/x86/hvm/vmsi.c b/xen/arch/x86/hvm/vmsi.c
index d9ec9fb0a4..31ee9b7cfe 100644
--- a/xen/arch/x86/hvm/vmsi.c
+++ b/xen/arch/x86/hvm/vmsi.c
@@ -162,6 +162,8 @@ struct msixtbl_entry
struct rcu_head rcu;
};
+static DEFINE_RCU_READ_LOCK(msixtbl_rcu_lock);
+
static struct msixtbl_entry *msixtbl_find_entry(
struct vcpu *v, unsigned long addr)
{
@@ -207,7 +209,7 @@ static int msixtbl_read(
void *virt;
int r = X86EMUL_UNHANDLEABLE;
- rcu_read_lock();
+ rcu_read_lock(&msixtbl_rcu_lock);
if ( len != 4 )
goto out;
@@ -225,7 +227,7 @@ static int msixtbl_read(
r = X86EMUL_OKAY;
out:
- rcu_read_unlock();
+ rcu_read_unlock(&msixtbl_rcu_lock);
return r;
}
@@ -238,7 +240,7 @@ static int msixtbl_write(struct vcpu *v, unsigned long address,
int nr_entry;
int r = X86EMUL_UNHANDLEABLE;
- rcu_read_lock();
+ rcu_read_lock(&msixtbl_rcu_lock);
if ( len != 4 )
goto out;
@@ -265,7 +267,7 @@ static int msixtbl_write(struct vcpu *v, unsigned long address,
r = X86EMUL_OKAY;
out:
- rcu_read_unlock();
+ rcu_read_unlock(&msixtbl_rcu_lock);
return r;
}
@@ -274,12 +276,12 @@ static int msixtbl_range(struct vcpu *v, unsigned long addr)
struct msixtbl_entry *entry;
void *virt;
- rcu_read_lock();
+ rcu_read_lock(&msixtbl_rcu_lock);
entry = msixtbl_find_entry(v, addr);
virt = msixtbl_addr_to_virt(entry, addr);
- rcu_read_unlock();
+ rcu_read_unlock(&msixtbl_rcu_lock);
return !!virt;
}