Skip to content

Commit d5c2dcc

Browse files
mstsirkinavikivity
authored andcommitted
KVM: switch coalesced mmio changes to slots_lock
switch coalesced mmio slots_lock. slots_lock is already taken for read everywhere, so we only need to take it for write when changing zones. This is in preparation to removing in_range and kvm->lock around it. [avi: fix build] Signed-off-by: Michael S. Tsirkin <[email protected]> Signed-off-by: Avi Kivity <[email protected]>
1 parent 69fa2d7 commit d5c2dcc

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

virt/kvm/coalesced_mmio.c

+5-5
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,16 @@ int kvm_vm_ioctl_register_coalesced_mmio(struct kvm *kvm,
115115
if (dev == NULL)
116116
return -EINVAL;
117117

118-
mutex_lock(&kvm->lock);
118+
down_write(&kvm->slots_lock);
119119
if (dev->nb_zones >= KVM_COALESCED_MMIO_ZONE_MAX) {
120-
mutex_unlock(&kvm->lock);
120+
up_write(&kvm->slots_lock);
121121
return -ENOBUFS;
122122
}
123123

124124
dev->zone[dev->nb_zones] = *zone;
125125
dev->nb_zones++;
126126

127-
mutex_unlock(&kvm->lock);
127+
up_write(&kvm->slots_lock);
128128
return 0;
129129
}
130130

@@ -138,7 +138,7 @@ int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm,
138138
if (dev == NULL)
139139
return -EINVAL;
140140

141-
mutex_lock(&kvm->lock);
141+
down_write(&kvm->slots_lock);
142142

143143
i = dev->nb_zones;
144144
while(i) {
@@ -156,7 +156,7 @@ int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm,
156156
i--;
157157
}
158158

159-
mutex_unlock(&kvm->lock);
159+
up_write(&kvm->slots_lock);
160160

161161
return 0;
162162
}

0 commit comments

Comments
 (0)