[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1574933208-24911-1-git-send-email-linmiaohe@huawei.com>
Date: Thu, 28 Nov 2019 17:26:48 +0800
From: linmiaohe <linmiaohe@...wei.com>
To: <maz@...nel.org>, <pbonzini@...hat.com>, <rkrcmar@...hat.com>,
<james.morse@....com>, <julien.thierry.kdev@...il.com>,
<suzuki.poulose@....com>, <christoffer.dall@....com>,
<catalin.marinas@....com>, <eric.auger@...hat.com>,
<gregkh@...uxfoundation.org>, <will@...nel.org>,
<andre.przywara@....com>, <tglx@...utronix.de>
CC: <linmiaohe@...wei.com>, <linux-arm-kernel@...ts.infradead.org>,
<kvmarm@...ts.cs.columbia.edu>, <linux-kernel@...r.kernel.org>,
<kvm@...r.kernel.org>
Subject: [PATCH v2] KVM: vgic: Use wrapper function to lock/unlock all vcpus in kvm_vgic_create()
From: Miaohe Lin <linmiaohe@...wei.com>
Use wrapper function lock_all_vcpus()/unlock_all_vcpus()
in kvm_vgic_create() to remove duplicated code dealing
with locking and unlocking all vcpus in a vm.
Signed-off-by: Miaohe Lin <linmiaohe@...wei.com>
---
-v2:
Fix some spelling mistake in patch title and commit log.
---
virt/kvm/arm/vgic/vgic-init.c | 14 ++++----------
1 file changed, 4 insertions(+), 10 deletions(-)
diff --git a/virt/kvm/arm/vgic/vgic-init.c b/virt/kvm/arm/vgic/vgic-init.c
index b3c5de48064c..53e3969dfb52 100644
--- a/virt/kvm/arm/vgic/vgic-init.c
+++ b/virt/kvm/arm/vgic/vgic-init.c
@@ -70,7 +70,7 @@ void kvm_vgic_early_init(struct kvm *kvm)
*/
int kvm_vgic_create(struct kvm *kvm, u32 type)
{
- int i, vcpu_lock_idx = -1, ret;
+ int i, ret;
struct kvm_vcpu *vcpu;
if (irqchip_in_kernel(kvm))
@@ -92,11 +92,8 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
* that no other VCPUs are run while we create the vgic.
*/
ret = -EBUSY;
- kvm_for_each_vcpu(i, vcpu, kvm) {
- if (!mutex_trylock(&vcpu->mutex))
- goto out_unlock;
- vcpu_lock_idx = i;
- }
+ if (!lock_all_vcpus(kvm))
+ return ret;
kvm_for_each_vcpu(i, vcpu, kvm) {
if (vcpu->arch.has_run_once)
@@ -125,10 +122,7 @@ int kvm_vgic_create(struct kvm *kvm, u32 type)
INIT_LIST_HEAD(&kvm->arch.vgic.rd_regions);
out_unlock:
- for (; vcpu_lock_idx >= 0; vcpu_lock_idx--) {
- vcpu = kvm_get_vcpu(kvm, vcpu_lock_idx);
- mutex_unlock(&vcpu->mutex);
- }
+ unlock_all_vcpus(kvm);
return ret;
}
--
2.19.1
Powered by blists - more mailing lists