From patchwork Thu May 18 10:09:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Philippe Brucker X-Patchwork-Id: 13246432 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3560AC77B7D for ; Thu, 18 May 2023 10:43:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=fHLHPXIaO9iCxVvYKHxOOp2GKtIU5l81RBtIIOMozxU=; b=gE3rO5k3J/n8vg 9YV6OY/+SX8o7gCB6iaLSRWgg6J/y8E8FFOMnNmeEw4ad1T6eDy6qqtJLpuuu7C/YqgxM0wmMqzdT PcQTYbY4dXNqUYLT+qOd0rRhCZszWiynMCbcQVeChyTmwbDTs5Ms5FeOfVhphPxNoMw310kambyht YUJkmAiRUg1+H5qDmgw/NMehfQlomcoe6MdzrEQLL4M9sgqS/fWuyM7/Gk/bGKsNHQdOM3IcZMuZP +tgnte2g/ptoQWne6DBGUSEzGJGGfTKt/ZC0LZw8gFdKhOO7QF2AoaKs46C6Wt1tFrUjC3riWpoE3 CVAvEeGg0ZX7rhorAJ1g==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6U-00CbeC-0e; Thu, 18 May 2023 10:43:26 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6Q-00Cbaz-05 for linux-arm-kernel@lists.infradead.org; Thu, 18 May 2023 10:43:24 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-3f4c6c4b51eso18211805e9.2 for ; Thu, 18 May 2023 03:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1684406599; x=1686998599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=cgINfoal7Z03uwg7G7UlksL/JOEeiuHi3H2Zvftx7tI=; b=uHEr/4qrD9rZjIHjYeZ0d8V+5Ed6V2cl1QdzdTH4qOBkAQ+hIYWqbE8e8Q0YOXa9DL KAxag3Fc1DrHlInFh20G6sSTxhcJcj4Dl/lbXZY+VCDwQcugXUYL1uEyjKufgjVg0Hl2 vm6DSXuKEnG+pdauOmuAeoF9GqMcjLmCWd2ufEesAue4P3qkVlvoEimixFC/Zx1yWUUX sJyAvWhMS6fSj/vhQTOJhDoC4wKebXhlVlc5se5qq+SysqSWD4/LBaqDHAT/r+BSgUb4 98zM+M0pnf2inmXuxzUlEET9yxpNKgcUTWk7r1vmr/jNEYv0wmNvKGPQscd/K5rH170J XV5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684406599; x=1686998599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=cgINfoal7Z03uwg7G7UlksL/JOEeiuHi3H2Zvftx7tI=; b=dovXNFodM/GxEgJZbESYjEGVLenEIyyXwgY1VCmNZCtPaITAwBbcfnjPKtkpu9rMQO KFx0hjw33CXlRmq+Lcq/k0/98XwMfpo1yE9Mh+bpbzxE6t1rUPgPRKhQKY9DQiWBalw6 49Cqq+4JwlfjIgtFfhGcMcvD/P+c1FPk/7GbDSDq+SgLcVFi94ohuPa9V0WizRokzx9Y 6XRfK8Hc4hOk8TfKqE/+aQeKpn6q0FTbeWi1hIelztzRM1Oo/Y0V7SKhfHdKY7kgul5i PVD/3wOAH9vv+yYU7Hr+YLZG8cWjez3Tc+m/K395rpLQ63bL/PNP8SNHRrYi080PFXKq iomw== X-Gm-Message-State: AC+VfDyWMm1NCtN7SxytR2yeZbKLg69FofDJaYqNtkWRiyxnP3QLfXkH Uv57JxYfGVK2gPrdEgTWuAIQLQ== X-Google-Smtp-Source: ACHHUZ7K2wVviuTSe2dlPpvXWOmZW3UmDUG0Vbv2NYfzPSabwd25dPAVdMNN12rkTECXO1qt+2hniw== X-Received: by 2002:a7b:c852:0:b0:3f1:979f:a733 with SMTP id c18-20020a7bc852000000b003f1979fa733mr1255682wml.31.1684406598944; Thu, 18 May 2023 03:43:18 -0700 (PDT) Received: from localhost.localdomain (5750a5b3.skybroadband.com. [87.80.165.179]) by smtp.gmail.com with ESMTPSA id f6-20020a1c6a06000000b003f427cba193sm4880523wmc.41.2023.05.18.03.43.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 May 2023 03:43:18 -0700 (PDT) From: Jean-Philippe Brucker To: oliver.upton@linux.dev, maz@kernel.org Cc: james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, catalin.marinas@arm.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, Jean-Philippe Brucker Subject: [PATCH 1/4] KVM: arm64: vgic: Fix a circular locking issue Date: Thu, 18 May 2023 11:09:15 +0100 Message-Id: <20230518100914.2837292-2-jean-philippe@linaro.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230518100914.2837292-1-jean-philippe@linaro.org> References: <20230518100914.2837292-1-jean-philippe@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230518_034322_080747_28AC10D2 X-CRM114-Status: GOOD ( 22.61 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Lockdep reports a circular lock dependency between the srcu and the config_lock: [ 262.179917] -> #1 (&kvm->srcu){.+.+}-{0:0}: [ 262.182010] __synchronize_srcu+0xb0/0x224 [ 262.183422] synchronize_srcu_expedited+0x24/0x34 [ 262.184554] kvm_io_bus_register_dev+0x324/0x50c [ 262.185650] vgic_register_redist_iodev+0x254/0x398 [ 262.186740] vgic_v3_set_redist_base+0x3b0/0x724 [ 262.188087] kvm_vgic_addr+0x364/0x600 [ 262.189189] vgic_set_common_attr+0x90/0x544 [ 262.190278] vgic_v3_set_attr+0x74/0x9c [ 262.191432] kvm_device_ioctl+0x2a0/0x4e4 [ 262.192515] __arm64_sys_ioctl+0x7ac/0x1ba8 [ 262.193612] invoke_syscall.constprop.0+0x70/0x1e0 [ 262.195006] do_el0_svc+0xe4/0x2d4 [ 262.195929] el0_svc+0x44/0x8c [ 262.196917] el0t_64_sync_handler+0xf4/0x120 [ 262.198238] el0t_64_sync+0x190/0x194 [ 262.199224] [ 262.199224] -> #0 (&kvm->arch.config_lock){+.+.}-{3:3}: [ 262.201094] __lock_acquire+0x2b70/0x626c [ 262.202245] lock_acquire+0x454/0x778 [ 262.203132] __mutex_lock+0x190/0x8b4 [ 262.204023] mutex_lock_nested+0x24/0x30 [ 262.205100] vgic_mmio_write_v3_misc+0x5c/0x2a0 [ 262.206178] dispatch_mmio_write+0xd8/0x258 [ 262.207498] __kvm_io_bus_write+0x1e0/0x350 [ 262.208582] kvm_io_bus_write+0xe0/0x1cc [ 262.209653] io_mem_abort+0x2ac/0x6d8 [ 262.210569] kvm_handle_guest_abort+0x9b8/0x1f88 [ 262.211937] handle_exit+0xc4/0x39c [ 262.212971] kvm_arch_vcpu_ioctl_run+0x90c/0x1c04 [ 262.214154] kvm_vcpu_ioctl+0x450/0x12f8 [ 262.215233] __arm64_sys_ioctl+0x7ac/0x1ba8 [ 262.216402] invoke_syscall.constprop.0+0x70/0x1e0 [ 262.217774] do_el0_svc+0xe4/0x2d4 [ 262.218758] el0_svc+0x44/0x8c [ 262.219941] el0t_64_sync_handler+0xf4/0x120 [ 262.221110] el0t_64_sync+0x190/0x194 Note that the current report, which can be triggered by the vgic_irq kselftest, is a triple chain that includes slots_lock, but after inverting the slots_lock/config_lock dependency, the actual problem reported above remains. In several places, the vgic code calls kvm_io_bus_register_dev(), which synchronizes the srcu, while holding config_lock (#1). And the MMIO handler takes the config_lock while holding the srcu read lock (#0). Break dependency #1, by registering the distributor and redistributors without holding config_lock. The ITS also uses kvm_io_bus_register_dev() but already relies on slots_lock to serialize calls. The distributor iodev is created on the first KVM_RUN call. Multiple threads will race for vgic initialization, and only the first one will see !vgic_ready() under the lock. To serialize those threads, rely on slots_lock rather than config_lock. Redistributors are created earlier, through KVM_DEV_ARM_VGIC_GRP_ADDR ioctls and vCPU creation. Similarly, serialize the iodev creation with slots_lock, and the rest with config_lock. Fixes: f00327731131 ("KVM: arm64: Use config_lock to protect vgic state") Signed-off-by: Jean-Philippe Brucker Reported-by: Nathan Chancellor Signed-off-by: Marc Zyngier Tested-by: Nathan Chancellor --- arch/arm64/kvm/vgic/vgic-init.c | 25 ++++++++++++++++----- arch/arm64/kvm/vgic/vgic-kvm-device.c | 10 +++++++-- arch/arm64/kvm/vgic/vgic-mmio-v3.c | 31 ++++++++++++++++++--------- arch/arm64/kvm/vgic/vgic-mmio.c | 8 ++----- arch/arm64/kvm/vgic/vgic-v2.c | 6 ------ arch/arm64/kvm/vgic/vgic-v3.c | 7 ------ 6 files changed, 51 insertions(+), 36 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c index 9d42c7cb2b588..c199ba2f192ef 100644 --- a/arch/arm64/kvm/vgic/vgic-init.c +++ b/arch/arm64/kvm/vgic/vgic-init.c @@ -235,9 +235,9 @@ int kvm_vgic_vcpu_init(struct kvm_vcpu *vcpu) * KVM io device for the redistributor that belongs to this VCPU. */ if (dist->vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3) { - mutex_lock(&vcpu->kvm->arch.config_lock); + mutex_lock(&vcpu->kvm->slots_lock); ret = vgic_register_redist_iodev(vcpu); - mutex_unlock(&vcpu->kvm->arch.config_lock); + mutex_unlock(&vcpu->kvm->slots_lock); } return ret; } @@ -446,11 +446,13 @@ int vgic_lazy_init(struct kvm *kvm) int kvm_vgic_map_resources(struct kvm *kvm) { struct vgic_dist *dist = &kvm->arch.vgic; + gpa_t dist_base; int ret = 0; if (likely(vgic_ready(kvm))) return 0; + mutex_lock(&kvm->slots_lock); mutex_lock(&kvm->arch.config_lock); if (vgic_ready(kvm)) goto out; @@ -463,13 +465,26 @@ int kvm_vgic_map_resources(struct kvm *kvm) else ret = vgic_v3_map_resources(kvm); - if (ret) + if (ret) { __kvm_vgic_destroy(kvm); - else - dist->ready = true; + goto out; + } + dist->ready = true; + dist_base = dist->vgic_dist_base; + mutex_unlock(&kvm->arch.config_lock); + + ret = vgic_register_dist_iodev(kvm, dist_base, + kvm_vgic_global_state.type); + if (ret) { + kvm_err("Unable to register VGIC dist MMIO regions\n"); + kvm_vgic_destroy(kvm); + } + mutex_unlock(&kvm->slots_lock); + return ret; out: mutex_unlock(&kvm->arch.config_lock); + mutex_unlock(&kvm->slots_lock); return ret; } diff --git a/arch/arm64/kvm/vgic/vgic-kvm-device.c b/arch/arm64/kvm/vgic/vgic-kvm-device.c index 35cfa268fd5de..212b73a715c1c 100644 --- a/arch/arm64/kvm/vgic/vgic-kvm-device.c +++ b/arch/arm64/kvm/vgic/vgic-kvm-device.c @@ -102,7 +102,11 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri if (get_user(addr, uaddr)) return -EFAULT; - mutex_lock(&kvm->arch.config_lock); + /* + * Since we can't hold config_lock while registering the redistributor + * iodevs, take the slots_lock immediately. + */ + mutex_lock(&kvm->slots_lock); switch (attr->attr) { case KVM_VGIC_V2_ADDR_TYPE_DIST: r = vgic_check_type(kvm, KVM_DEV_TYPE_ARM_VGIC_V2); @@ -182,6 +186,7 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri if (r) goto out; + mutex_lock(&kvm->arch.config_lock); if (write) { r = vgic_check_iorange(kvm, *addr_ptr, addr, alignment, size); if (!r) @@ -189,9 +194,10 @@ static int kvm_vgic_addr(struct kvm *kvm, struct kvm_device_attr *attr, bool wri } else { addr = *addr_ptr; } + mutex_unlock(&kvm->arch.config_lock); out: - mutex_unlock(&kvm->arch.config_lock); + mutex_unlock(&kvm->slots_lock); if (!r && !write) r = put_user(addr, uaddr); diff --git a/arch/arm64/kvm/vgic/vgic-mmio-v3.c b/arch/arm64/kvm/vgic/vgic-mmio-v3.c index 472b18ac92a24..188d2187eede9 100644 --- a/arch/arm64/kvm/vgic/vgic-mmio-v3.c +++ b/arch/arm64/kvm/vgic/vgic-mmio-v3.c @@ -769,10 +769,13 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu) struct vgic_io_device *rd_dev = &vcpu->arch.vgic_cpu.rd_iodev; struct vgic_redist_region *rdreg; gpa_t rd_base; - int ret; + int ret = 0; + + lockdep_assert_held(&kvm->slots_lock); + mutex_lock(&kvm->arch.config_lock); if (!IS_VGIC_ADDR_UNDEF(vgic_cpu->rd_iodev.base_addr)) - return 0; + goto out_unlock; /* * We may be creating VCPUs before having set the base address for the @@ -782,10 +785,12 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu) */ rdreg = vgic_v3_rdist_free_slot(&vgic->rd_regions); if (!rdreg) - return 0; + goto out_unlock; - if (!vgic_v3_check_base(kvm)) - return -EINVAL; + if (!vgic_v3_check_base(kvm)) { + ret = -EINVAL; + goto out_unlock; + } vgic_cpu->rdreg = rdreg; vgic_cpu->rdreg_index = rdreg->free_index; @@ -799,16 +804,20 @@ int vgic_register_redist_iodev(struct kvm_vcpu *vcpu) rd_dev->nr_regions = ARRAY_SIZE(vgic_v3_rd_registers); rd_dev->redist_vcpu = vcpu; - mutex_lock(&kvm->slots_lock); + mutex_unlock(&kvm->arch.config_lock); + ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, rd_base, 2 * SZ_64K, &rd_dev->dev); - mutex_unlock(&kvm->slots_lock); - if (ret) return ret; + /* Protected by slots_lock */ rdreg->free_index++; return 0; + +out_unlock: + mutex_unlock(&kvm->arch.config_lock); + return ret; } static void vgic_unregister_redist_iodev(struct kvm_vcpu *vcpu) @@ -834,12 +843,10 @@ static int vgic_register_all_redist_iodevs(struct kvm *kvm) /* The current c failed, so iterate over the previous ones. */ int i; - mutex_lock(&kvm->slots_lock); for (i = 0; i < c; i++) { vcpu = kvm_get_vcpu(kvm, i); vgic_unregister_redist_iodev(vcpu); } - mutex_unlock(&kvm->slots_lock); } return ret; @@ -938,7 +945,9 @@ int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count) { int ret; + mutex_lock(&kvm->arch.config_lock); ret = vgic_v3_alloc_redist_region(kvm, index, addr, count); + mutex_unlock(&kvm->arch.config_lock); if (ret) return ret; @@ -950,8 +959,10 @@ int vgic_v3_set_redist_base(struct kvm *kvm, u32 index, u64 addr, u32 count) if (ret) { struct vgic_redist_region *rdreg; + mutex_lock(&kvm->arch.config_lock); rdreg = vgic_v3_rdist_region_from_index(kvm, index); vgic_v3_free_redist_region(rdreg); + mutex_unlock(&kvm->arch.config_lock); return ret; } diff --git a/arch/arm64/kvm/vgic/vgic-mmio.c b/arch/arm64/kvm/vgic/vgic-mmio.c index 1939c94e0b248..ce3d17463c6bc 100644 --- a/arch/arm64/kvm/vgic/vgic-mmio.c +++ b/arch/arm64/kvm/vgic/vgic-mmio.c @@ -1114,10 +1114,6 @@ int vgic_register_dist_iodev(struct kvm *kvm, gpa_t dist_base_address, io_device->iodev_type = IODEV_DIST; io_device->redist_vcpu = NULL; - mutex_lock(&kvm->slots_lock); - ret = kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, dist_base_address, - len, &io_device->dev); - mutex_unlock(&kvm->slots_lock); - - return ret; + return kvm_io_bus_register_dev(kvm, KVM_MMIO_BUS, dist_base_address, + len, &io_device->dev); } diff --git a/arch/arm64/kvm/vgic/vgic-v2.c b/arch/arm64/kvm/vgic/vgic-v2.c index 645648349c99b..7e9cdb78f7ce8 100644 --- a/arch/arm64/kvm/vgic/vgic-v2.c +++ b/arch/arm64/kvm/vgic/vgic-v2.c @@ -312,12 +312,6 @@ int vgic_v2_map_resources(struct kvm *kvm) return ret; } - ret = vgic_register_dist_iodev(kvm, dist->vgic_dist_base, VGIC_V2); - if (ret) { - kvm_err("Unable to register VGIC MMIO regions\n"); - return ret; - } - if (!static_branch_unlikely(&vgic_v2_cpuif_trap)) { ret = kvm_phys_addr_ioremap(kvm, dist->vgic_cpu_base, kvm_vgic_global_state.vcpu_base, diff --git a/arch/arm64/kvm/vgic/vgic-v3.c b/arch/arm64/kvm/vgic/vgic-v3.c index 469d816f356f3..76af07e66d731 100644 --- a/arch/arm64/kvm/vgic/vgic-v3.c +++ b/arch/arm64/kvm/vgic/vgic-v3.c @@ -539,7 +539,6 @@ int vgic_v3_map_resources(struct kvm *kvm) { struct vgic_dist *dist = &kvm->arch.vgic; struct kvm_vcpu *vcpu; - int ret = 0; unsigned long c; kvm_for_each_vcpu(c, vcpu, kvm) { @@ -569,12 +568,6 @@ int vgic_v3_map_resources(struct kvm *kvm) return -EBUSY; } - ret = vgic_register_dist_iodev(kvm, dist->vgic_dist_base, VGIC_V3); - if (ret) { - kvm_err("Unable to register VGICv3 dist MMIO regions\n"); - return ret; - } - if (kvm_vgic_global_state.has_gicv4_1) vgic_v4_configure_vsgis(kvm); From patchwork Thu May 18 10:09:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Philippe Brucker X-Patchwork-Id: 13246430 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 08102C7EE22 for ; Thu, 18 May 2023 10:43:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XcWiNBl4HHxf/yyC+ZIFdRkCSr16Yfk7ppHvIq3P/ag=; b=Zj3vb4nvBEsxvX bjb/XHS9RIYBgdjeZ/+uwTrZowhpC/bRohjRoAJryJ8ZbfIafnlGgt67uWFxnhy+7PJvf+pSiOaBP +ZGN3i4wxc3Cawc4TsPDTn62nc1P0Qf4wOrsjEWUdq6qlzuGkDHfClfAKc+4/ZxcG0zLxrHpOaX+l s7gkizqrY+t38WyZ4JXpNWbdCAsbPgfuuh0of026IezuiAm8xv9XrplArB2dK4Txf22wDkFsJRYm5 py/6n+GJiOalZJMlKFk/bPoZw13kxnbx1YQuf6s9enc+dZyLyXp2axjI/jYUapB93z7a3+nm/jSSi dnRZU98ar6BuEKMR2Upw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6T-00CbdW-0R; Thu, 18 May 2023 10:43:25 +0000 Received: from mail-wm1-x32b.google.com ([2a00:1450:4864:20::32b]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6Q-00Cbb2-09 for linux-arm-kernel@lists.infradead.org; Thu, 18 May 2023 10:43:23 +0000 Received: by mail-wm1-x32b.google.com with SMTP id 5b1f17b1804b1-3f450815d0bso18323345e9.0 for ; Thu, 18 May 2023 03:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1684406599; x=1686998599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EqMiraT0jqWXcG+bHXqX5wyZGJiYv/CtF/7EGjq6y84=; b=jA4vgF+XhGJz1pU33vcmktcFLwlg+qKve8S8DUZDR8UtUKBGghS0eASMONnpB8IL3w bH6bzweB/XRjyXHEjWzkvDFyiITfosx2uMMsUvWf//QOtMXNQlAtvq+BTGWipGOuIvAV +V8W5IJhakzGcZBjYADbDD2LZtPD5mipbfTKLCnmVwp+kJhHjrpJ0pY/dnT36AOhWYSk zOkdATE2VE5bsE5+LTaipSqptLRtE1bJ9g+XtswoaQVsb16/8tp8Mq5AivJVGTphQme2 2QH919F3a5FpXMvDhNahH3iED5cNlXhlk9tSnblOJVJuTOSXGwHWEAfbZ6Gtb7A/XJwo LRKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684406599; x=1686998599; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=EqMiraT0jqWXcG+bHXqX5wyZGJiYv/CtF/7EGjq6y84=; b=VrV14Nwfx4KHOk7tD/AcUVjBsyK7QpKyhVyZGZE3fj523np5EWPZnAjSaWmVTHyncR //e9CsF0rxUEe4ReVDRSV8Iy5GKi0djklJUinCFCJ+cBu5UvvPqlFznb7lUjnl3b/9fM cQC5Pw3i9MJLJmDdBrHItC2SbYV7vXvUzkjFgzut4hWVhqKQRdCDa1Eq/z6AXPb/EFrC pUE2eA4C06DiWBjZd+64IwNVDuAX/sfSKf2KoF6GNeDbO2kJNuXrgHiirMigz3ikfVSJ Hiva4+lhpXJ6vIZUvZ2W31Q5rWBNQvQUF6c2MckAzmQOsTCDXyRdUe/qF+ZS4SO54k7o 9cUg== X-Gm-Message-State: AC+VfDzEfAwrIN8gM3/Wpi26FwsAxuBBNdrM0R+cekVlIETapVUE14C0 IisqhFpEg/jC+uiIQlv3xqdE4Q== X-Google-Smtp-Source: ACHHUZ6bkkbpOef0ohkRZKtvgvCAeY+yKD673LpiPyqGMA4k4a3ar9LyLAQXKTwinmgx/f4w7uUfpw== X-Received: by 2002:a05:600c:ca:b0:3f4:9bee:b9c with SMTP id u10-20020a05600c00ca00b003f49bee0b9cmr1269896wmm.18.1684406599643; Thu, 18 May 2023 03:43:19 -0700 (PDT) Received: from localhost.localdomain (5750a5b3.skybroadband.com. [87.80.165.179]) by smtp.gmail.com with ESMTPSA id f6-20020a1c6a06000000b003f427cba193sm4880523wmc.41.2023.05.18.03.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 May 2023 03:43:19 -0700 (PDT) From: Jean-Philippe Brucker To: oliver.upton@linux.dev, maz@kernel.org Cc: james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, catalin.marinas@arm.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, Jean-Philippe Brucker Subject: [PATCH 2/4] KVM: arm64: vgic: Wrap vgic_its_create() with config_lock Date: Thu, 18 May 2023 11:09:16 +0100 Message-Id: <20230518100914.2837292-3-jean-philippe@linaro.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230518100914.2837292-1-jean-philippe@linaro.org> References: <20230518100914.2837292-1-jean-philippe@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230518_034322_109790_729F1A4D X-CRM114-Status: GOOD ( 12.91 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org vgic_its_create() changes the vgic state without holding the config_lock, which triggers a lockdep warning in vgic_v4_init(): [ 358.667941] WARNING: CPU: 3 PID: 178 at arch/arm64/kvm/vgic/vgic-v4.c:245 vgic_v4_init+0x15c/0x7a8 ... [ 358.707410] vgic_v4_init+0x15c/0x7a8 [ 358.708550] vgic_its_create+0x37c/0x4a4 [ 358.709640] kvm_vm_ioctl+0x1518/0x2d80 [ 358.710688] __arm64_sys_ioctl+0x7ac/0x1ba8 [ 358.711960] invoke_syscall.constprop.0+0x70/0x1e0 [ 358.713245] do_el0_svc+0xe4/0x2d4 [ 358.714289] el0_svc+0x44/0x8c [ 358.715329] el0t_64_sync_handler+0xf4/0x120 [ 358.716615] el0t_64_sync+0x190/0x194 Wrap the whole of vgic_its_create() with config_lock since, in addition to calling vgic_v4_init(), it also modifies the global kvm->arch.vgic state. Fixes: f00327731131 ("KVM: arm64: Use config_lock to protect vgic state") Signed-off-by: Jean-Philippe Brucker --- arch/arm64/kvm/vgic/vgic-its.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/arch/arm64/kvm/vgic/vgic-its.c b/arch/arm64/kvm/vgic/vgic-its.c index 750e51e3779a3..5fe2365a629f2 100644 --- a/arch/arm64/kvm/vgic/vgic-its.c +++ b/arch/arm64/kvm/vgic/vgic-its.c @@ -1936,6 +1936,7 @@ void vgic_lpi_translation_cache_destroy(struct kvm *kvm) static int vgic_its_create(struct kvm_device *dev, u32 type) { + int ret; struct vgic_its *its; if (type != KVM_DEV_TYPE_ARM_VGIC_ITS) @@ -1945,9 +1946,12 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) if (!its) return -ENOMEM; + mutex_lock(&dev->kvm->arch.config_lock); + if (vgic_initialized(dev->kvm)) { - int ret = vgic_v4_init(dev->kvm); + ret = vgic_v4_init(dev->kvm); if (ret < 0) { + mutex_unlock(&dev->kvm->arch.config_lock); kfree(its); return ret; } @@ -1960,12 +1964,10 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) /* Yep, even more trickery for lock ordering... */ #ifdef CONFIG_LOCKDEP - mutex_lock(&dev->kvm->arch.config_lock); mutex_lock(&its->cmd_lock); mutex_lock(&its->its_lock); mutex_unlock(&its->its_lock); mutex_unlock(&its->cmd_lock); - mutex_unlock(&dev->kvm->arch.config_lock); #endif its->vgic_its_base = VGIC_ADDR_UNDEF; @@ -1986,7 +1988,11 @@ static int vgic_its_create(struct kvm_device *dev, u32 type) dev->private = its; - return vgic_its_set_abi(its, NR_ITS_ABIS - 1); + ret = vgic_its_set_abi(its, NR_ITS_ABIS - 1); + + mutex_unlock(&dev->kvm->arch.config_lock); + + return ret; } static void vgic_its_destroy(struct kvm_device *kvm_dev) From patchwork Thu May 18 10:09:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Philippe Brucker X-Patchwork-Id: 13246433 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id A7A35C7EE23 for ; Thu, 18 May 2023 10:43:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=V71PeGEMLAtdK7wUJcRoCEexwC3gm+/u8R56TObQN1k=; b=eF6XFY0aQKa6r3 RP2pk4POLIOe1e3T58UP8RaG8CpodwiiFHFnzRefGM39cZga/dPVTgCa1qNs3REqqbLqj5tnN2SwT ivlM9PuCkFd508MPe0D/uETg5pfzHL+V4WyLanxzAL7jyuLyDzp5R4RBhT1HQZjlC+RcuxOPEUtRV ErCKCcxTpqVW6Nmso0q4lDpJYtP/vM6FWj63+uvMMvfBUUBuPV/gd7XR9OLC/vdNwodPpVq+gjCvL 6YvcFSQA/o/APn6peWbvI2lCWaiKD4rHKXtej5eGtLJM0F78BGcbifDKmUH7gbajf/cGXZtzn/TKS kOUHqApltu+vxFHj+cmA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6T-00Cbdo-2E; Thu, 18 May 2023 10:43:25 +0000 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6Q-00CbbD-2D for linux-arm-kernel@lists.infradead.org; Thu, 18 May 2023 10:43:24 +0000 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-3f41d087b24so13037925e9.1 for ; Thu, 18 May 2023 03:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1684406600; x=1686998600; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sIOLMvBU8l6RE5ODSm65W2zRH+B2CDJfYYoC+8i5LwQ=; b=m+Jv0HHdp4unaRjWpY/Lf8GJaa50QCjfQEZtRQZWeS/nA6asge9VCeKu6voHDMbags TYTQRhQBnI4qMztOxua3nXHgECh7lVLoxtiVULtazvA/jb6vUzGJDIIH0U6eJWpNWJUr 837h9erdCxCUJe69D4mlSUNed17JuuwYKFlEGNjS6+iAWPpmr+e/PA5vh+kTD1O5rC6h AFfkIdujUokeJP0tSeHl8zOd1OXmCvhch9y+2OmBBnev5IB4OmpmQKvoEJA2JxYXQplc Qyxs+6Yj/sCJ3Vadimhn5hfMjoL+s0nym5qf42vLjlEGoN9x98Rqa3AV3Y3ieCSnZ37m 4obg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684406600; x=1686998600; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sIOLMvBU8l6RE5ODSm65W2zRH+B2CDJfYYoC+8i5LwQ=; b=X6wm/VymYqx37VePT1kNGa7ZWG/hbxQoCs4SELZDQ3UV8u+6Ht5n6uobLeekwWEpI1 CkyRfHyW/Nh87XFepIh0dPS52qzQFToR+6V15BNI1rJcIyYYNnkI9vpqgYf8JDKE9Xd9 Ouwv5G88nQKWxaqx044xbZjsqJ5va/bHmT5/Na2k8Gw3y/IxRfDXymBeMP1RZLJi87rV USgSCeE172ggO79byC9ABV47NPkfpEpP3lIOl+jOya9NlKUt5RTqisgI8daw9BlA6dwM qZ6YCK2RV3vnCVtJgVszSuHTV9M5U/WPP4gU1s9iUpht8h/QyD7psWjIdSdQm2iescnA k7Gw== X-Gm-Message-State: AC+VfDymE7kS/6afhRfHUGvbaVOlCVvFFiWEkUTzcMScbrxP3LLmz8CA TQMmQ6FBHw1cofeYwxptCGujTA== X-Google-Smtp-Source: ACHHUZ7OKBt45+2Zkcx84mVW2RHOklZaJvAvHo8vjc+C6OjjzBMyd5t0EoNV1ByX2NDFF6P6Lb44Dg== X-Received: by 2002:a05:600c:290a:b0:3f0:b1c9:25d4 with SMTP id i10-20020a05600c290a00b003f0b1c925d4mr1104993wmd.21.1684406600409; Thu, 18 May 2023 03:43:20 -0700 (PDT) Received: from localhost.localdomain (5750a5b3.skybroadband.com. [87.80.165.179]) by smtp.gmail.com with ESMTPSA id f6-20020a1c6a06000000b003f427cba193sm4880523wmc.41.2023.05.18.03.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 May 2023 03:43:20 -0700 (PDT) From: Jean-Philippe Brucker To: oliver.upton@linux.dev, maz@kernel.org Cc: james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, catalin.marinas@arm.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, Jean-Philippe Brucker Subject: [PATCH 3/4] KVM: arm64: vgic: Fix locking comment Date: Thu, 18 May 2023 11:09:17 +0100 Message-Id: <20230518100914.2837292-4-jean-philippe@linaro.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230518100914.2837292-1-jean-philippe@linaro.org> References: <20230518100914.2837292-1-jean-philippe@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230518_034322_731313_96A8258A X-CRM114-Status: GOOD ( 11.24 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org It is now config_lock that must be held, not kvm lock. Replace the comment with a lockdep annotation. Fixes: f00327731131 ("KVM: arm64: Use config_lock to protect vgic state") Signed-off-by: Jean-Philippe Brucker --- arch/arm64/kvm/vgic/vgic-v4.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/arch/arm64/kvm/vgic/vgic-v4.c b/arch/arm64/kvm/vgic/vgic-v4.c index 3bb0034780605..c1c28fe680ba3 100644 --- a/arch/arm64/kvm/vgic/vgic-v4.c +++ b/arch/arm64/kvm/vgic/vgic-v4.c @@ -184,13 +184,14 @@ static void vgic_v4_disable_vsgis(struct kvm_vcpu *vcpu) } } -/* Must be called with the kvm lock held */ void vgic_v4_configure_vsgis(struct kvm *kvm) { struct vgic_dist *dist = &kvm->arch.vgic; struct kvm_vcpu *vcpu; unsigned long i; + lockdep_assert_held(&kvm->arch.config_lock); + kvm_arm_halt_guest(kvm); kvm_for_each_vcpu(i, vcpu, kvm) { From patchwork Thu May 18 10:09:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Philippe Brucker X-Patchwork-Id: 13246434 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 96DD5C7EE22 for ; Thu, 18 May 2023 10:43:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Message-Id:Date:Subject:Cc:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=u0uyNep4Lw5IJ/XYvduP1lkQOTgccSeZ2Jfa4IRW/IQ=; b=PzEWIqQeSLyEgb c57NYlWq8TqPXpHr/BPUHA/5SeZ2oqSxeV1RLeJ+bhibg0yEtRoYPIVDJa4e+aXx0vs4rBGSSIemt tJH23sy7EynuMRuSLbgtRU4IgKuPqYXvh70tqK1DTdlqBa/jL3w7F2MhBaS8VW5f4AcOrbOiqD8QD QnCHoZYXP9I626ERgIrJiQNDJE1bKn5iK/qh+C3/aSQdACVcGQwZYSP+pBoqIy0V2w0UMfJ/s9Ygb xRd2dZi+NUbFVrTPw1X2ChFasPktR6pe7xmHVjLS/GRkBUYrtgRoxdU+uXrIHPcOmnMYPyIuPH8KF JiEH37kn/QsxIsFrU+rg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6V-00Cbek-1H; Thu, 18 May 2023 10:43:27 +0000 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pzb6R-00CbbT-0l for linux-arm-kernel@lists.infradead.org; Thu, 18 May 2023 10:43:24 +0000 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-3f4ad71b00eso11869135e9.2 for ; Thu, 18 May 2023 03:43:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1684406601; x=1686998601; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mp00WwehAYxhmIULq9IO59RiAwWhddV/IMvvStrd9QY=; b=S2AxPAGUw+TvyThlV0Vf9cbp1xI9Tav8+vI1C0HsNRWQUwjPnUfVaZBIq+Z35A/LpQ BT/LZzrLBEr9cZanYzuUOX0BLluH/JGkUUG+lTV/ICIc82pxJfjUIMyw7/8/FLKN/RBR aSdzIsMBP6x8uF8uKvytzyTv7Nika6GmXKknU1t13judHK5pQXYkc45CH9O/FNZzWelx 2xdS/Cd0Lu388nw322+bSI4hANfoaf3sEU5YCoeV5bVT4xUXXGoa1gnunBNzPikdnj4g bJrI3ZFiIRwIxxl2GEFk1IRNhBW81wwgu8mpKAoEGOvXDyZ1t8s1mfcqs8CAKI1GNsph pP1Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684406601; x=1686998601; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mp00WwehAYxhmIULq9IO59RiAwWhddV/IMvvStrd9QY=; b=C66932AdWLESthuJjdliftZacCMx+Phbgg/jST/6tSZQonPpBGnAfIEbLExJ3nVzey eL42ouGWVlGsjgEr6CJRmOVPO2dcZ8VqXLGB2hS3Lyom/6EZN6IBrEr4Ah0TVqt5Ew1R YzqerYKL9D3GX2o9YebdFRUOU1KsOC0C9OGjgBwg7ZN/T2S2aMZdaDOka0JtwL1wyssu VRl50xEioYA1y6Gw73NVdt/VFYVs01vBd3ZkKENscosQAb9QP+7W89rCAFtPNhiV1Xnk xtmNAm0k34z2oHC4pd92OjSKPVxVdsAV9mBs5akwH6Vk3mG0DW9SE3og7rhVUcTvujGO DZiA== X-Gm-Message-State: AC+VfDwr7TrsV99mA18v0XhV+CsCg18xsTemSlvaCdiZ9R0AmOesvdJe TJSrh8BEgDSaNal4lHk/qmzZpw== X-Google-Smtp-Source: ACHHUZ74xHy3Q+upbLQlKFFcBssYX0WpfXMEve5SgQOi/ntELy8xB4pjSzgKM2I4g5IiYUtWQ6beAA== X-Received: by 2002:a05:600c:2049:b0:3f1:6fea:790a with SMTP id p9-20020a05600c204900b003f16fea790amr1174571wmg.30.1684406601090; Thu, 18 May 2023 03:43:21 -0700 (PDT) Received: from localhost.localdomain (5750a5b3.skybroadband.com. [87.80.165.179]) by smtp.gmail.com with ESMTPSA id f6-20020a1c6a06000000b003f427cba193sm4880523wmc.41.2023.05.18.03.43.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 18 May 2023 03:43:20 -0700 (PDT) From: Jean-Philippe Brucker To: oliver.upton@linux.dev, maz@kernel.org Cc: james.morse@arm.com, suzuki.poulose@arm.com, yuzenghui@huawei.com, catalin.marinas@arm.com, will@kernel.org, linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, Jean-Philippe Brucker Subject: [PATCH 4/4] KVM: arm64: vgic: Fix a comment Date: Thu, 18 May 2023 11:09:18 +0100 Message-Id: <20230518100914.2837292-5-jean-philippe@linaro.org> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230518100914.2837292-1-jean-philippe@linaro.org> References: <20230518100914.2837292-1-jean-philippe@linaro.org> MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230518_034323_280429_D9BE5E2B X-CRM114-Status: GOOD ( 12.49 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org It is host userspace, not the guest, that issues KVM_DEV_ARM_VGIC_GRP_CTRL Signed-off-by: Jean-Philippe Brucker --- arch/arm64/kvm/vgic/vgic-init.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c index c199ba2f192ef..6eafc2c45cfcf 100644 --- a/arch/arm64/kvm/vgic/vgic-init.c +++ b/arch/arm64/kvm/vgic/vgic-init.c @@ -406,7 +406,7 @@ void kvm_vgic_destroy(struct kvm *kvm) /** * vgic_lazy_init: Lazy init is only allowed if the GIC exposed to the guest - * is a GICv2. A GICv3 must be explicitly initialized by the guest using the + * is a GICv2. A GICv3 must be explicitly initialized by userspace using the * KVM_DEV_ARM_VGIC_GRP_CTRL KVM_DEVICE group. * @kvm: kvm struct pointer */