diff options
| author | Marcelo Tosatti <mtosatti@redhat.com> | 2009-12-23 11:35:26 -0500 |
|---|---|---|
| committer | Marcelo Tosatti <mtosatti@redhat.com> | 2010-03-01 10:35:45 -0500 |
| commit | 79fac95ecfa3969aab8119d37ccd7226165f933a (patch) | |
| tree | 4103169c7fd2b7fb1ba95dae2db6b3f365476b9d /virt/kvm | |
| parent | f656ce0185cabbbb0cf96877306879661297c7ad (diff) | |
KVM: convert slots_lock to a mutex
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'virt/kvm')
| -rw-r--r-- | virt/kvm/coalesced_mmio.c | 14 | ||||
| -rw-r--r-- | virt/kvm/eventfd.c | 10 | ||||
| -rw-r--r-- | virt/kvm/ioapic.c | 4 | ||||
| -rw-r--r-- | virt/kvm/kvm_main.c | 10 |
4 files changed, 19 insertions, 19 deletions
diff --git a/virt/kvm/coalesced_mmio.c b/virt/kvm/coalesced_mmio.c index a736a93ca7b7..5de6594260cb 100644 --- a/virt/kvm/coalesced_mmio.c +++ b/virt/kvm/coalesced_mmio.c | |||
| @@ -110,9 +110,9 @@ int kvm_coalesced_mmio_init(struct kvm *kvm) | |||
| 110 | dev->kvm = kvm; | 110 | dev->kvm = kvm; |
| 111 | kvm->coalesced_mmio_dev = dev; | 111 | kvm->coalesced_mmio_dev = dev; |
| 112 | 112 | ||
| 113 | down_write(&kvm->slots_lock); | 113 | mutex_lock(&kvm->slots_lock); |
| 114 | ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, &dev->dev); | 114 | ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, &dev->dev); |
| 115 | up_write(&kvm->slots_lock); | 115 | mutex_unlock(&kvm->slots_lock); |
| 116 | if (ret < 0) | 116 | if (ret < 0) |
| 117 | goto out_free_dev; | 117 | goto out_free_dev; |
| 118 | 118 | ||
| @@ -140,16 +140,16 @@ int kvm_vm_ioctl_register_coalesced_mmio(struct kvm *kvm, | |||
| 140 | if (dev == NULL) | 140 | if (dev == NULL) |
| 141 | return -EINVAL; | 141 | return -EINVAL; |
| 142 | 142 | ||
| 143 | down_write(&kvm->slots_lock); | 143 | mutex_lock(&kvm->slots_lock); |
| 144 | if (dev->nb_zones >= KVM_COALESCED_MMIO_ZONE_MAX) { | 144 | if (dev->nb_zones >= KVM_COALESCED_MMIO_ZONE_MAX) { |
| 145 | up_write(&kvm->slots_lock); | 145 | mutex_unlock(&kvm->slots_lock); |
| 146 | return -ENOBUFS; | 146 | return -ENOBUFS; |
| 147 | } | 147 | } |
| 148 | 148 | ||
| 149 | dev->zone[dev->nb_zones] = *zone; | 149 | dev->zone[dev->nb_zones] = *zone; |
| 150 | dev->nb_zones++; | 150 | dev->nb_zones++; |
| 151 | 151 | ||
| 152 | up_write(&kvm->slots_lock); | 152 | mutex_unlock(&kvm->slots_lock); |
| 153 | return 0; | 153 | return 0; |
| 154 | } | 154 | } |
| 155 | 155 | ||
| @@ -163,7 +163,7 @@ int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm, | |||
| 163 | if (dev == NULL) | 163 | if (dev == NULL) |
| 164 | return -EINVAL; | 164 | return -EINVAL; |
| 165 | 165 | ||
| 166 | down_write(&kvm->slots_lock); | 166 | mutex_lock(&kvm->slots_lock); |
| 167 | 167 | ||
| 168 | i = dev->nb_zones; | 168 | i = dev->nb_zones; |
| 169 | while(i) { | 169 | while(i) { |
| @@ -181,7 +181,7 @@ int kvm_vm_ioctl_unregister_coalesced_mmio(struct kvm *kvm, | |||
| 181 | i--; | 181 | i--; |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | up_write(&kvm->slots_lock); | 184 | mutex_unlock(&kvm->slots_lock); |
| 185 | 185 | ||
| 186 | return 0; | 186 | return 0; |
| 187 | } | 187 | } |
diff --git a/virt/kvm/eventfd.c b/virt/kvm/eventfd.c index 315a586ec4d5..486c604365d9 100644 --- a/virt/kvm/eventfd.c +++ b/virt/kvm/eventfd.c | |||
| @@ -508,7 +508,7 @@ kvm_assign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) | |||
| 508 | else | 508 | else |
| 509 | p->wildcard = true; | 509 | p->wildcard = true; |
| 510 | 510 | ||
| 511 | down_write(&kvm->slots_lock); | 511 | mutex_lock(&kvm->slots_lock); |
| 512 | 512 | ||
| 513 | /* Verify that there isnt a match already */ | 513 | /* Verify that there isnt a match already */ |
| 514 | if (ioeventfd_check_collision(kvm, p)) { | 514 | if (ioeventfd_check_collision(kvm, p)) { |
| @@ -524,12 +524,12 @@ kvm_assign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) | |||
| 524 | 524 | ||
| 525 | list_add_tail(&p->list, &kvm->ioeventfds); | 525 | list_add_tail(&p->list, &kvm->ioeventfds); |
| 526 | 526 | ||
| 527 | up_write(&kvm->slots_lock); | 527 | mutex_unlock(&kvm->slots_lock); |
| 528 | 528 | ||
| 529 | return 0; | 529 | return 0; |
| 530 | 530 | ||
| 531 | unlock_fail: | 531 | unlock_fail: |
| 532 | up_write(&kvm->slots_lock); | 532 | mutex_unlock(&kvm->slots_lock); |
| 533 | 533 | ||
| 534 | fail: | 534 | fail: |
| 535 | kfree(p); | 535 | kfree(p); |
| @@ -551,7 +551,7 @@ kvm_deassign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) | |||
| 551 | if (IS_ERR(eventfd)) | 551 | if (IS_ERR(eventfd)) |
| 552 | return PTR_ERR(eventfd); | 552 | return PTR_ERR(eventfd); |
| 553 | 553 | ||
| 554 | down_write(&kvm->slots_lock); | 554 | mutex_lock(&kvm->slots_lock); |
| 555 | 555 | ||
| 556 | list_for_each_entry_safe(p, tmp, &kvm->ioeventfds, list) { | 556 | list_for_each_entry_safe(p, tmp, &kvm->ioeventfds, list) { |
| 557 | bool wildcard = !(args->flags & KVM_IOEVENTFD_FLAG_DATAMATCH); | 557 | bool wildcard = !(args->flags & KVM_IOEVENTFD_FLAG_DATAMATCH); |
| @@ -571,7 +571,7 @@ kvm_deassign_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) | |||
| 571 | break; | 571 | break; |
| 572 | } | 572 | } |
| 573 | 573 | ||
| 574 | up_write(&kvm->slots_lock); | 574 | mutex_unlock(&kvm->slots_lock); |
| 575 | 575 | ||
| 576 | eventfd_ctx_put(eventfd); | 576 | eventfd_ctx_put(eventfd); |
| 577 | 577 | ||
diff --git a/virt/kvm/ioapic.c b/virt/kvm/ioapic.c index f326a6f301cc..f01392f51e86 100644 --- a/virt/kvm/ioapic.c +++ b/virt/kvm/ioapic.c | |||
| @@ -372,9 +372,9 @@ int kvm_ioapic_init(struct kvm *kvm) | |||
| 372 | kvm_ioapic_reset(ioapic); | 372 | kvm_ioapic_reset(ioapic); |
| 373 | kvm_iodevice_init(&ioapic->dev, &ioapic_mmio_ops); | 373 | kvm_iodevice_init(&ioapic->dev, &ioapic_mmio_ops); |
| 374 | ioapic->kvm = kvm; | 374 | ioapic->kvm = kvm; |
| 375 | down_write(&kvm->slots_lock); | 375 | mutex_lock(&kvm->slots_lock); |
| 376 | ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, &ioapic->dev); | 376 | ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, &ioapic->dev); |
| 377 | up_write(&kvm->slots_lock); | 377 | mutex_unlock(&kvm->slots_lock); |
| 378 | if (ret < 0) | 378 | if (ret < 0) |
| 379 | kfree(ioapic); | 379 | kfree(ioapic); |
| 380 | 380 | ||
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c index 659bc12ad16a..2b7cd6c0d9ca 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c | |||
| @@ -429,7 +429,7 @@ static struct kvm *kvm_create_vm(void) | |||
| 429 | kvm_eventfd_init(kvm); | 429 | kvm_eventfd_init(kvm); |
| 430 | mutex_init(&kvm->lock); | 430 | mutex_init(&kvm->lock); |
| 431 | mutex_init(&kvm->irq_lock); | 431 | mutex_init(&kvm->irq_lock); |
| 432 | init_rwsem(&kvm->slots_lock); | 432 | mutex_init(&kvm->slots_lock); |
| 433 | atomic_set(&kvm->users_count, 1); | 433 | atomic_set(&kvm->users_count, 1); |
| 434 | spin_lock(&kvm_lock); | 434 | spin_lock(&kvm_lock); |
| 435 | list_add(&kvm->vm_list, &vm_list); | 435 | list_add(&kvm->vm_list, &vm_list); |
| @@ -763,9 +763,9 @@ int kvm_set_memory_region(struct kvm *kvm, | |||
| 763 | { | 763 | { |
| 764 | int r; | 764 | int r; |
| 765 | 765 | ||
| 766 | down_write(&kvm->slots_lock); | 766 | mutex_lock(&kvm->slots_lock); |
| 767 | r = __kvm_set_memory_region(kvm, mem, user_alloc); | 767 | r = __kvm_set_memory_region(kvm, mem, user_alloc); |
| 768 | up_write(&kvm->slots_lock); | 768 | mutex_unlock(&kvm->slots_lock); |
| 769 | return r; | 769 | return r; |
| 770 | } | 770 | } |
| 771 | EXPORT_SYMBOL_GPL(kvm_set_memory_region); | 771 | EXPORT_SYMBOL_GPL(kvm_set_memory_region); |
| @@ -1997,7 +1997,7 @@ int kvm_io_bus_read(struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, | |||
| 1997 | return -EOPNOTSUPP; | 1997 | return -EOPNOTSUPP; |
| 1998 | } | 1998 | } |
| 1999 | 1999 | ||
| 2000 | /* Caller must have write lock on slots_lock. */ | 2000 | /* Caller must hold slots_lock. */ |
| 2001 | int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, | 2001 | int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, |
| 2002 | struct kvm_io_device *dev) | 2002 | struct kvm_io_device *dev) |
| 2003 | { | 2003 | { |
| @@ -2019,7 +2019,7 @@ int kvm_io_bus_register_dev(struct kvm *kvm, enum kvm_bus bus_idx, | |||
| 2019 | return 0; | 2019 | return 0; |
| 2020 | } | 2020 | } |
| 2021 | 2021 | ||
| 2022 | /* Caller must have write lock on slots_lock. */ | 2022 | /* Caller must hold slots_lock. */ |
| 2023 | int kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, | 2023 | int kvm_io_bus_unregister_dev(struct kvm *kvm, enum kvm_bus bus_idx, |
| 2024 | struct kvm_io_device *dev) | 2024 | struct kvm_io_device *dev) |
| 2025 | { | 2025 | { |
