Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp3479627pxb; Mon, 4 Apr 2022 18:18:01 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzQzhPc11WJVt8DZE1sPTgYxgpynpgx+hi1EGnQdJ45xeSjGJrHLomEesjzxV3CO1DJtfpN X-Received: by 2002:a17:902:f612:b0:14c:e978:f99e with SMTP id n18-20020a170902f61200b0014ce978f99emr1012496plg.23.1649121481610; Mon, 04 Apr 2022 18:18:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649121481; cv=none; d=google.com; s=arc-20160816; b=R3jH0opI22WoCHkXWsiCM4ixkRi3AZZRri2guwT9YEfhWxmk/5/a0vomNDSybBB5xp HPOqkQzg9Mt2R2TruHNw+ZNdXgnHncnA/15b5JILvtVs35LEmQdoa9vPH4VNWpPgjZIL s92WVT86K+vcU64CNf2PXHvnErRd+AK067ZftRQlQ7g20np3zvufFaTghYfPkH1q2xYV fEAVKekm0ZhCuYRtXUhamEgakO8CX8/F9ndVqR1DT3JdwzYjUMMn87pgfYgEUz/09Hin vaUJAPTJO3gdS6QoKD4ABf61sOmZmDweUNCptY0qZ0g8dNEbOl5VTVtpHFbUEw9iPUeO MEXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:mime-version:message-id:date :dkim-signature; bh=pT/6Qdmm3tGb7HLrr7GqjKevauNrm0C8oEo/kdSI0ug=; b=tEwniPFPvkT+mhqSIppj9/XdPVqf+1VG0s5qiFrl/o7tZazJjViFubtvyE7XYGYuQn dZ9/ktdjQEkEH/x5kWzV0pt0O3U76WbOszbsHZfTmvzurAwCZ5s4UpN6LqHBQopad39H URuH66GXLNwKxWD2f8nUclv5q9CtOk2vk9Wb4yYJDUISTwmZoR7akTPtCvDepDG/felN QfZPnpdgpigv5gowmxK2/Bj3qMmTVoR/3qen4FQDbtPAPNbAYIaQI3IdZSJvKPQxmaXO GVTt9m+wlmMYywpoK3V2xYyAkxhBuwDqG51e9dxcKbqXFbg73O/takvb9FZlx5qIcD/m LsCg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=DX180vey; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id n2-20020a170902f60200b001568e8ab80dsi6884223plg.369.2022.04.04.18.18.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Apr 2022 18:18:01 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=DX180vey; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 7259118A79E; Mon, 4 Apr 2022 17:20:53 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1381738AbiDDVX4 (ORCPT + 99 others); Mon, 4 Apr 2022 17:23:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43258 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380365AbiDDTsF (ORCPT ); Mon, 4 Apr 2022 15:48:05 -0400 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A3C7830F6A for ; Mon, 4 Apr 2022 12:46:08 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id g145-20020a625297000000b004fb2cf9d380so6483618pfb.22 for ; Mon, 04 Apr 2022 12:46:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:message-id:mime-version:subject:from:to:cc; bh=pT/6Qdmm3tGb7HLrr7GqjKevauNrm0C8oEo/kdSI0ug=; b=DX180veywuwX26kBGb4IS3QvBU35h9XvsRIASvum61dFNYnZS7OLefgyf3qPP6lGa4 XxRYSgT9bKas8WCz2qeYHpQgwwHAvjjwMV/0RkSxZZDuGBbLyCWfeG2wsJNDLl8Q0mOw xnWozmkr/vUAQX1nIDMRbYoIXIDdxhBtPqaE9y91l1qaKqWp1k6cIXnK5YT738jdyKGv TNpopmpt42kRQfuoCfxV7Az+dss4alEDWfSv07wkZcFASxV4k0ByUOxrNcpLR3mf35hi Y8DfkY9vRnLwM9bVRvbJih55QTFyzYqcAKzs2z4cuYO+exrc0fD59Y/+lIajydhE/0vH 2PwA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=pT/6Qdmm3tGb7HLrr7GqjKevauNrm0C8oEo/kdSI0ug=; b=x8KuJ0mvYdksFP9/LwR9OfQArhXVzGkJcBzyyBDwIYXmG9SbPzNWMAyHQerf/XfxhZ whRbQvQd4LdH69VpxpldoMbgWPakvRyqr7yp9xxae9C6fMCdO//bS+6kIwJ6AeuHqPNH 3cteeWbIW2EZKlFAm+La6K4FN2LcdH1oqllEUsc0sEWNEDsObMivALo97L1NuV6lmVvZ LDI1jDGzCWGPbxOMoQwTfIB1SDmqD+MhoOIUXUmY/zWpU43DXYPn4gLSi9YgcbM9wTbW jOXBq/LBVGuuXNmxAKtBBZZTreKNTWxu6Ep7ZrCUwFWFsspTgrVl5Gx8eDqyJV2MlQkP fz2w== X-Gm-Message-State: AOAM533oP19T7nxGKRAx61OYYo2VlrV5qn9c19inVjDT6UWLpdTX6hnC 3YgFOIzIeDQKu6uABBkXVo8iVZZzPdw= X-Received: from pgonda1.kir.corp.google.com ([2620:15c:29:203:805:a056:1a51:2b9e]) (user=pgonda job=sendgmr) by 2002:a17:902:f54c:b0:154:6794:ab18 with SMTP id h12-20020a170902f54c00b001546794ab18mr1280283plf.118.1649101568063; Mon, 04 Apr 2022 12:46:08 -0700 (PDT) Date: Mon, 4 Apr 2022 12:46:05 -0700 Message-Id: <20220404194605.1569855-1-pgonda@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.35.1.1094.g7c7d902a7c-goog Subject: [PATCH] KVM: SEV: Mark nested locking of vcpu->lock From: Peter Gonda To: kvm@vger.kernel.org Cc: Peter Gonda , John Sperbeck , David Rientjes , Paolo Bonzini , Sean Christopherson , linux-kernel@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-9.5 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org svm_vm_migrate_from() uses sev_lock_vcpus_for_migration() to lock all source and target vcpu->locks. Mark the nested subclasses to avoid false positives from lockdep. Fixes: b56639318bb2b ("KVM: SEV: Add support for SEV intra host migration") Reported-by: John Sperbeck Suggested-by: David Rientjes Signed-off-by: Peter Gonda Cc: Paolo Bonzini Cc: Sean Christopherson Cc: kvm@vger.kernel.org Cc: linux-kernel@vger.kernel.org --- Tested by running sev_migrate_tests with lockdep enabled. Before we see a warning from sev_lock_vcpus_for_migration(). After we get no warnings. --- arch/x86/kvm/svm/sev.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 75fa6dd268f0..8f77421c1c4b 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1591,15 +1591,16 @@ static void sev_unlock_two_vms(struct kvm *dst_kvm, struct kvm *src_kvm) atomic_set_release(&src_sev->migration_in_progress, 0); } - -static int sev_lock_vcpus_for_migration(struct kvm *kvm) +static int sev_lock_vcpus_for_migration(struct kvm *kvm, unsigned int *subclass) { struct kvm_vcpu *vcpu; unsigned long i, j; kvm_for_each_vcpu(i, vcpu, kvm) { - if (mutex_lock_killable(&vcpu->mutex)) + if (mutex_lock_killable_nested(&vcpu->mutex, *subclass)) goto out_unlock; + + ++(*subclass); } return 0; @@ -1717,6 +1718,7 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd) struct kvm *source_kvm; bool charged = false; int ret; + unsigned int vcpu_mutex_subclass = 0; source_kvm_file = fget(source_fd); if (!file_is_kvm(source_kvm_file)) { @@ -1745,10 +1747,10 @@ int sev_vm_move_enc_context_from(struct kvm *kvm, unsigned int source_fd) charged = true; } - ret = sev_lock_vcpus_for_migration(kvm); + ret = sev_lock_vcpus_for_migration(kvm, &vcpu_mutex_subclass); if (ret) goto out_dst_cgroup; - ret = sev_lock_vcpus_for_migration(source_kvm); + ret = sev_lock_vcpus_for_migration(source_kvm, &vcpu_mutex_subclass); if (ret) goto out_dst_vcpu; -- 2.35.1.1094.g7c7d902a7c-goog