From patchwork Fri Jan 22 20:21:32 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040415 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 000E3C433DB for ; Fri, 22 Jan 2021 20:24:53 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B215E23AFC for ; Fri, 22 Jan 2021 20:24:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730556AbhAVUYF (ORCPT ); Fri, 22 Jan 2021 15:24:05 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43530 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729227AbhAVUWf (ORCPT ); Fri, 22 Jan 2021 15:22:35 -0500 Received: from mail-qt1-x84a.google.com (mail-qt1-x84a.google.com [IPv6:2607:f8b0:4864:20::84a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5F22C061788 for ; Fri, 22 Jan 2021 12:21:54 -0800 (PST) Received: by mail-qt1-x84a.google.com with SMTP id g14so1685432qtu.13 for ; Fri, 22 Jan 2021 12:21:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=na/73VMReTKtB9cBdzddT3dFufGs+FA2GpJ7zLFbNE0=; b=sR2mbkVcciaudaJO/zw/eEvj6Q7oBcRY0RAz4GWPIa6JEVX53Nzqlr8lncX51w1OwK NO1X6XCfd3jEzWpq6fGB2xVpt0Lg6NZcjz2/R7NlryJ1+POAaxFG/hxOvp9Of1+tWHHq imVj9l7I3JWun1lRk8K91cV3TZnqClWXRT6UYWdr/jxAI6FEGrGPoeDDnnk0qfzZKzA1 kPQH9v+FcflIEL/D2/uwmccwELlbDWP59fh3wzE3ZQKsYfA2sunWnE9ge3/KoioYRyj8 EE7Za1PS9leb0CUYRu8NGP+oDsMzNXNCg9pfBLIiFwlKXdGt1L+Clc0cRZH8UcWJxMam quJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=na/73VMReTKtB9cBdzddT3dFufGs+FA2GpJ7zLFbNE0=; b=foxT6pm3PD8JssrnZprjBv6KOMRYDoyYwH1VKHrjnRlhMPAJf6JvO2tBXBmU1bxVQ4 sOabOxsqcm3FIeO+0/6HvyaowpkwvddsW4SzMtv44m5djZf+7rTPrxpi/JHPt3rAFdF6 cbtHSZOQtb0Y85fT0M+upw5WiRZbHXoDF8brPL4jYsmxqT7PfqLGJgosbfqiX9ZZNCEY /Faoy7DYpQijw3sPbZfhSR1uHLaYo1OBBrmF9BWQoA6IBvzwCZ9aIXLzFElw6N4UPdRh YLYDSEyZpUXSugejWD7FX0V+XMVGHj9fOZtO4VJ4dmgTY/zX5mH5RVbJlmVrs5kNyQIy qxPg== X-Gm-Message-State: AOAM532hlZRe8i7mud+XcYdq+DYD23FmViE3dpPqN3+fAFpzafLWPna0 q0S62rad6A8wY1V4GxOPr+FsWA6gMkk= X-Google-Smtp-Source: ABdhPJxpMPloC8ZCgmz7TNLfHDME7K98h9vup115ZsV8cJ44FAIvocqZSyO1jCbESrt7ZIEvDB6U30Llk7o= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a0c:becc:: with SMTP id f12mr2470648qvj.31.1611346913861; Fri, 22 Jan 2021 12:21:53 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:32 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-2-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 01/13] KVM: SVM: Zero out the VMCB array used to track SEV ASID association From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Zero out the array of VMCB pointers so that pre_sev_run() won't see garbage when querying the array to detect when an SEV ASID is being associated with a new VMCB. In practice, reading random values is all but guaranteed to be benign as a false negative (which is extremely unlikely on its own) can only happen on CPU0 on the first VMRUN and would only cause KVM to skip the ASID flush. For anything bad to happen, a previous instance of KVM would have to exit without flushing the ASID, _and_ KVM would have to not flush the ASID at any time while building the new SEV guest. Cc: Borislav Petkov Reviewed-by: Tom Lendacky Reviewed-by: Brijesh Singh Fixes: 70cd94e60c73 ("KVM: SVM: VMRUN should use associated ASID when SEV is enabled") Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/svm.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 7ef171790d02..5bd797c7ee60 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -571,9 +571,8 @@ static int svm_cpu_init(int cpu) clear_page(page_address(sd->save_area)); if (svm_sev_enabled()) { - sd->sev_vmcbs = kmalloc_array(max_sev_asid + 1, - sizeof(void *), - GFP_KERNEL); + sd->sev_vmcbs = kcalloc(max_sev_asid + 1, sizeof(void *), + GFP_KERNEL); if (!sd->sev_vmcbs) goto free_save_area; } From patchwork Fri Jan 22 20:21:33 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040417 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EB6FC433E6 for ; Fri, 22 Jan 2021 20:24:54 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0F6C923AFC for ; Fri, 22 Jan 2021 20:24:54 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728374AbhAVUYp (ORCPT ); Fri, 22 Jan 2021 15:24:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43540 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730178AbhAVUWh (ORCPT ); Fri, 22 Jan 2021 15:22:37 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 36722C06178B for ; Fri, 22 Jan 2021 12:21:57 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id f127so3892417ybf.12 for ; Fri, 22 Jan 2021 12:21:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=xatFlG/AVNIen+GoMQ+mcSrw0d7B4eZmn9C7BW5uyPU=; b=SQ/uRc4jsfp9desMKe1Aaa7z1d+QGQ9FhqDbhi/Ajh67V8PvDuzO+WSsZHt560WaFL 9/1onZhyGtM8Kxiwu0nlNhje3KvtVNiZK4+YcXcD+GCWtMQen/YchibvRfY+7gj548NZ x+YeIlePLGtS3nz4n+GqWH+Qjj+vbgHOUEHlnMto3Dz69RXITPeXavd3La+S0AoxPOHt KpkcP0VMXwj+k2TP4X5qoYT6trImenTYHi/eIF1pqpOlIjaoCAk7hxpJ33IKi86VDshb d7y+f0jWQFvveA5Nok1xG+z6u6+ekNMcabEH70j+bh3GyZ3mr1Bz9bZv6DSX8q5zHBhf 8eLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=xatFlG/AVNIen+GoMQ+mcSrw0d7B4eZmn9C7BW5uyPU=; b=ZZo1X8dmUHb3VbgIa3Oy6FGFAcmVaNHMBF3jS+NhOtSlDZAuU2RngJnEQ+Ltq4/7Uu z5rr8QEKhsq22ir6R4+UYve8KmFUWJ5llZVmdS66s7WDx36Rj+oda4s+Wzsuh7Wf7UYR 5lM3BDtmDEuiA3dk9yR2Um7vBDfsVfeOi19U45Rho17V5z2IBhetLXL0t1YfP6OexhVk 5tzs/D0GK7BelYQkaa7jGwJ5BrJjwssDJK2e9Uua4q3To7NR0dkdljKcIaFvJLtgILKj aiO8NV7At9NlM+k2ADrz1yfo+o/vpXHy039eKpdq/aL8M46pAn7mRoTD59K+MVZGFQYh k6hA== X-Gm-Message-State: AOAM532imsGjFcEmSkvr6d9D2svBP5zTBj7z6ZvunDcDquxj85vLulmT OWqJLHbf0jAjfdnFFHyQRKPppB9UAzU= X-Google-Smtp-Source: ABdhPJyT/LYjjG/hMK4LAz62sl2SsF08PEFexksGLVNXU5L71t95rEn/K0wa7RveYaxkd9u9l7cvlBe9HHA= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:9a04:: with SMTP id x4mr8975579ybn.184.1611346916488; Fri, 22 Jan 2021 12:21:56 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:33 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-3-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 02/13] KVM: SVM: Free sev_asid_bitmap during init if SEV setup fails From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Free sev_asid_bitmap if the reclaim bitmap allocation fails, othwerise KVM will unnecessarily keep the bitmap when SEV is not fully enabled. Freeing the page is also necessary to avoid introducing a bug when a future patch eliminates svm_sev_enabled() in favor of using the global 'sev' flag directly. While sev_hardware_enabled() checks max_sev_asid, which is true even if KVM setup fails, 'sev' will be true if and only if KVM setup fully succeeds. Fixes: 33af3a7ef9e6 ("KVM: SVM: Reduce WBINVD/DF_FLUSH invocations") Cc: Tom Lendacky Signed-off-by: Sean Christopherson Reviewed-by: Tom Lendacky --- arch/x86/kvm/svm/sev.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index c8ffdbc81709..ec742dabbd5b 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1274,8 +1274,11 @@ void __init sev_hardware_setup(void) goto out; sev_reclaim_asid_bitmap = bitmap_zalloc(max_sev_asid, GFP_KERNEL); - if (!sev_reclaim_asid_bitmap) + if (!sev_reclaim_asid_bitmap) { + bitmap_free(sev_asid_bitmap); + sev_asid_bitmap = NULL; goto out; + } pr_info("SEV supported: %u ASIDs\n", max_sev_asid - min_sev_asid + 1); sev_supported = true; From patchwork Fri Jan 22 20:21:34 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040419 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 55F83C433E0 for ; Fri, 22 Jan 2021 20:26:22 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 14DC223AFC for ; Fri, 22 Jan 2021 20:26:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729750AbhAVU0B (ORCPT ); Fri, 22 Jan 2021 15:26:01 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43772 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731101AbhAVUXm (ORCPT ); Fri, 22 Jan 2021 15:23:42 -0500 Received: from mail-qt1-x84a.google.com (mail-qt1-x84a.google.com [IPv6:2607:f8b0:4864:20::84a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8A4F0C061794 for ; Fri, 22 Jan 2021 12:21:59 -0800 (PST) Received: by mail-qt1-x84a.google.com with SMTP id d1so4408076qtp.11 for ; Fri, 22 Jan 2021 12:21:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=DVxhAu/UjXY5hWMeDmkVTFl5iW0qT/7YPmVJEXaHiSg=; b=ZiWyRwgQQPsTNO8N5PSnPu5eQG0ql29pRJuVy3Q0C7kKDGhFCO/+TQG6iSFTaXxXjx fUUZX7tK7+ogZkzXsq1Hpp3DSjuYwFg+IvlC4BLond2ANBD9oLoKQDgnNVJ/BswOC8M1 x+mm/5jD58EFv0RyJ9gUUSUsVE0lu0jEKevCXKTRRLdyY7+JXnGVyjkDpbsiL+FGZgQU GEEAyXMt8JKLC7g96brHbYaigGyD3lSVM8HN6Sa0kOMsUvNObuMIL1GHtGVgz8nqH8+f Di/Y90jPGY842vnFqLC1DXPUf9dvzH6V8TSoAnFvDd8vuTkz6Uf7X6Xm0KSgdBi5I87X cEFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=DVxhAu/UjXY5hWMeDmkVTFl5iW0qT/7YPmVJEXaHiSg=; b=cmQQMUd0VR+ZeSJApRN3IGY68B4ju6OElSgxWNT1F/VTJiGSJTbqyt/OUtrSDb57Nz KK/e7JaDcqRI6aMbbO5eE30TgUPOI91v2YYBrMayv9PkTs79FjyU2QEVQnEi4z37qP6m ZbQzsZR0lX4TycEyVXeyjrVI46vKCH1gjesE6xv+x6fYRaGrCupA4C70V2yqsIeueG9o Fd2DMvpImqEEZBA+TZFbw8ZxkbLXywLshkErz8lBAmlroKgmrCQRUStJBtUEVfwG6yu8 Y0NQHqLC7Sxm4wuqdIOlbK7G7eyVtrcCj4v41I27J6qBhSmliPZaNWy2pEtIzfLZD5D+ +v6Q== X-Gm-Message-State: AOAM530K6SkkvDwVFHglAgx/fAs2MginfrmdCvAyCOZLrQjc1WnNl4Gw 1a0yJ9HztveiIR1M26f1H9YMzLngZ+U= X-Google-Smtp-Source: ABdhPJxaBwxpO2PVbRBf95Ce2ILMQNBt6KRaW/RPOxJeX8apG7sdSe+2zruPj77KXUpL2dzsQ0yn5xSnF9s= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a0c:a99e:: with SMTP id a30mr477497qvb.38.1611346918763; Fri, 22 Jan 2021 12:21:58 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:34 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-4-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 03/13] KVM: SVM: Move SEV module params/variables to sev.c From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Unconditionally invoke sev_hardware_setup() when configuring SVM and handle clearing the module params/variable 'sev' and 'sev_es' in sev_hardware_setup(). This allows making said variables static within sev.c and reduces the odds of a collision with guest code, e.g. the guest side of things has already laid claim to 'sev_enabled'. Reviewed-by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/sev.c | 11 +++++++++++ arch/x86/kvm/svm/svm.c | 15 +-------------- arch/x86/kvm/svm/svm.h | 2 -- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index ec742dabbd5b..4595f04310e2 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -27,6 +27,14 @@ #define __ex(x) __kvm_handle_fault_on_reboot(x) +/* enable/disable SEV support */ +static int sev = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); +module_param(sev, int, 0444); + +/* enable/disable SEV-ES support */ +static int sev_es = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); +module_param(sev_es, int, 0444); + static u8 sev_enc_bit; static int sev_flush_asids(void); static DECLARE_RWSEM(sev_deactivate_lock); @@ -1249,6 +1257,9 @@ void __init sev_hardware_setup(void) bool sev_es_supported = false; bool sev_supported = false; + if (!IS_ENABLED(CONFIG_KVM_AMD_SEV) || !sev) + goto out; + /* Does the CPU support SEV? */ if (!boot_cpu_has(X86_FEATURE_SEV)) goto out; diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 5bd797c7ee60..d223db3a77b0 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -189,14 +189,6 @@ module_param(vls, int, 0444); static int vgif = true; module_param(vgif, int, 0444); -/* enable/disable SEV support */ -int sev = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); -module_param(sev, int, 0444); - -/* enable/disable SEV-ES support */ -int sev_es = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); -module_param(sev_es, int, 0444); - bool __read_mostly dump_invalid_vmcb; module_param(dump_invalid_vmcb, bool, 0644); @@ -975,12 +967,7 @@ static __init int svm_hardware_setup(void) kvm_enable_efer_bits(EFER_SVME | EFER_LMSLE); } - if (IS_ENABLED(CONFIG_KVM_AMD_SEV) && sev) { - sev_hardware_setup(); - } else { - sev = false; - sev_es = false; - } + sev_hardware_setup(); svm_adjust_mmio_mask(); diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 0fe874ae5498..8e169835f52a 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -408,8 +408,6 @@ static inline bool gif_set(struct vcpu_svm *svm) #define MSR_CR3_LONG_MBZ_MASK 0xfff0000000000000U #define MSR_INVALID 0xffffffffU -extern int sev; -extern int sev_es; extern bool dump_invalid_vmcb; u32 svm_msrpm_offset(u32 msr); From patchwork Fri Jan 22 20:21:35 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040649 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8F425C433E0 for ; Fri, 22 Jan 2021 21:26:18 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4C34D23B09 for ; Fri, 22 Jan 2021 21:26:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729504AbhAVV0A (ORCPT ); Fri, 22 Jan 2021 16:26:00 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43792 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731111AbhAVUXq (ORCPT ); Fri, 22 Jan 2021 15:23:46 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 13527C0617AA for ; Fri, 22 Jan 2021 12:22:02 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id r1so6523969ybd.23 for ; Fri, 22 Jan 2021 12:22:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=EACBA81rA48HC0vzvM1sNbOzKQYdPtj86guoyyxTvpA=; b=Dn7VxB4Wu8BKwcmnIMhYUsZP2+EyurOkh4VCWdD44I6yVacVSSx/420Qfc+l6YAil4 B6+jxiTByvIGgVJoDQbxjAxjrrVrm6QpsnnUlITsS/rTYLLNJDEyxQ/ovhExCZRgPcYf pZV+bPPMR/l6agFFNKO405M5A29A4mhUKYEMOC1x65eUtZsYniLCuk4yjte4dTGcb8RO 7p4vmkHf2dbxbkxdnQMGnrpxijse5SUMOIpZ8MlFn9nL+XNqXvXqUrQiowV3pKlpg5m9 Ta1jaZk4EnKCYcUUl1j+BuX40wHKjH4sJfu1YpsFV21WaiVeacWeEz2wWibZGgH+aSrQ NWpQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=EACBA81rA48HC0vzvM1sNbOzKQYdPtj86guoyyxTvpA=; b=XC4K78yUGEBnGEZHIKgdIGVE/dJ5OFvEXRdTbKx/c8xmkKnR/0Tz0ShPszoMaOcn4L BmXH9Kb3OtDHfTQCZ2QceDAPLbyHUzNnksLswj721mSrtcRb7S0mBXG9AVijfAHIBRNB OJCM8lESlz00mJNit+PgUtLLFkINAxZBhiuNSiKLBPkEAEoYGdCkjyfAabJNFCojpFI/ yRrm27PwKVqeNwPauRC1bGAJE8kziG3T9CY+PLug13+PlUz4LLPxzXkAiTC0HVoE1FuV HHC9umcaFDRLU6Ibo/mYPnWvh3lqMqzH0S7o0dhNXHNGjE4isPHtyE4E8CX7Ai7k1u+j eXPA== X-Gm-Message-State: AOAM532NXiAqNTozdf5EWQuynA7NK/+LcO6tgf0yALQIQsGNyZfv/PXR 66KaqJcTHgLeeMlVBgKS2opw5qJqUYM= X-Google-Smtp-Source: ABdhPJxEYTwBxrAhhJ7dDR5evCT/f0oqAZB9IAlB9LE9xBS7xvN1iZ85LdDhRCReEj7VC4QSeU7B1IMedo0= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:a183:: with SMTP id a3mr8567872ybi.459.1611346921346; Fri, 22 Jan 2021 12:22:01 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:35 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-5-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 04/13] x86/sev: Drop redundant and potentially misleading 'sev_enabled' From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Drop the sev_enabled flag and switch its one user over to sev_active(). sev_enabled was made redundant with the introduction of sev_status in commit b57de6cd1639 ("x86/sev-es: Add SEV-ES Feature Detection"). sev_enabled and sev_active() are guaranteed to be equivalent, as each is true iff 'sev_status & MSR_AMD64_SEV_ENABLED' is true, and are only ever written in tandem (ignoring compressed boot's version of sev_status). Removing sev_enabled avoids confusion over whether it refers to the guest or the host, and will also allow KVM to usurp "sev_enabled" for its own purposes. No functional change intended. Reviewed-by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/include/asm/mem_encrypt.h | 1 - arch/x86/mm/mem_encrypt.c | 12 +++++------- arch/x86/mm/mem_encrypt_identity.c | 1 - 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/arch/x86/include/asm/mem_encrypt.h b/arch/x86/include/asm/mem_encrypt.h index 31c4df123aa0..9c80c68d75b5 100644 --- a/arch/x86/include/asm/mem_encrypt.h +++ b/arch/x86/include/asm/mem_encrypt.h @@ -20,7 +20,6 @@ extern u64 sme_me_mask; extern u64 sev_status; -extern bool sev_enabled; void sme_encrypt_execute(unsigned long encrypted_kernel_vaddr, unsigned long decrypted_kernel_vaddr, diff --git a/arch/x86/mm/mem_encrypt.c b/arch/x86/mm/mem_encrypt.c index c79e5736ab2b..bcca8f8f27a7 100644 --- a/arch/x86/mm/mem_encrypt.c +++ b/arch/x86/mm/mem_encrypt.c @@ -44,8 +44,6 @@ EXPORT_SYMBOL(sme_me_mask); DEFINE_STATIC_KEY_FALSE(sev_enable_key); EXPORT_SYMBOL_GPL(sev_enable_key); -bool sev_enabled __section(".data"); - /* Buffer used for early in-place encryption by BSP, no locking needed */ static char sme_early_buffer[PAGE_SIZE] __initdata __aligned(PAGE_SIZE); @@ -373,16 +371,16 @@ int __init early_set_memory_encrypted(unsigned long vaddr, unsigned long size) * up under SME the trampoline area cannot be encrypted, whereas under SEV * the trampoline area must be encrypted. */ -bool sme_active(void) -{ - return sme_me_mask && !sev_enabled; -} - bool sev_active(void) { return sev_status & MSR_AMD64_SEV_ENABLED; } +bool sme_active(void) +{ + return sme_me_mask && !sev_active(); +} + /* Needs to be called from non-instrumentable code */ bool noinstr sev_es_active(void) { diff --git a/arch/x86/mm/mem_encrypt_identity.c b/arch/x86/mm/mem_encrypt_identity.c index 6c5eb6f3f14f..0c2759b7f03a 100644 --- a/arch/x86/mm/mem_encrypt_identity.c +++ b/arch/x86/mm/mem_encrypt_identity.c @@ -545,7 +545,6 @@ void __init sme_enable(struct boot_params *bp) /* SEV state cannot be controlled by a command line option */ sme_me_mask = me_mask; - sev_enabled = true; physical_mask &= ~sme_me_mask; return; } From patchwork Fri Jan 22 20:21:36 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040651 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5E20CC433E0 for ; Fri, 22 Jan 2021 21:26:44 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1537923AF8 for ; Fri, 22 Jan 2021 21:26:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728684AbhAVV0N (ORCPT ); Fri, 22 Jan 2021 16:26:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731113AbhAVUXq (ORCPT ); Fri, 22 Jan 2021 15:23:46 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 85A8DC0617AB for ; Fri, 22 Jan 2021 12:22:04 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id 203so6603174ybz.2 for ; Fri, 22 Jan 2021 12:22:04 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=BH6NW1Mai4rLQ4WRK3FXI0EJ7CD5vswe91Mx0hLmZ8Q=; b=sFyAqgQ4OA9JfFvBiFO9c1rzOFk12NVND877+/Kh03E+Rm94ZVyWOIhqjnuK0x+aIF DDty17fBmsQcHpo7vd4eMlxb2KEGVD7l1HX1VCGRj3NcD/wRTBcVK2qXl5R8g7YW1ejv ixqWWGxuDeUs1IWD1e1Fjr42HuroGp6pY0IvemsG+Z1a6/1Q8EkWl9Gh2eKMT8UXHqQx 97In8zxJBK2tROyozyuBZwIjD3NDiNSK3HbvSiafi1ujYOhIE5G5V/lptZCDqsbPC+UJ y2cEn8g9mA0qumtTITxMLpIqo3/cH0LPaCOOPTcOFpO4zjXgT82tJ79RWWBqtcC8ih7a tbDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=BH6NW1Mai4rLQ4WRK3FXI0EJ7CD5vswe91Mx0hLmZ8Q=; b=se7h9VQ4kKvVSXxLEIFBwwv6DRmFyuoQbLCSbCsbSd1q4JtX3xR6Pu5pKbm7TY1Sqg QWZZ1YgqL81DkCPykcDjBrHt78CvMAkx/MG2dYHKYx47PmelDwSFpy9/kOH3bnAWRYwI nBUS2En8LpxsRBn4zAORZObAsSKzMW0l7BsG6/eHEPUF8mP6cAv6VOeECP3b7zQ2/zVH Ktwo/mHkDm4yx2Ikc++pY0EaXLTTeBHZTzTF/9OHqnzjn44BjPHw0r4IaLuXt3DEIYll fl+O6YCBNAVGHfjTzxeJvMojdK3Yajot54IBcq+UjRr3GicxUyqPxspIVF8U9En5I758 Q/EA== X-Gm-Message-State: AOAM532JZ5lbcBB977iWztYRJxro/vjSUYHcZ/MJNzEljtkV1jdh60Rp sFmod8XwTTqBYu4g9Ok9jsIq00MBITM= X-Google-Smtp-Source: ABdhPJwLnUcbJsYdvZxuW9eVZhvnZG6RpQtX1OzQypXUkD2zAq1VzX/umeH+Ar1m1M1cQqGjaBB4p0fAWVQ= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:8508:: with SMTP id w8mr9526074ybk.63.1611346923809; Fri, 22 Jan 2021 12:22:03 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:36 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-6-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 05/13] KVM: SVM: Append "_enabled" to module-scoped SEV/SEV-ES control variables From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Rename sev and sev_es to sev_enabled and sev_es_enabled respectively to better align with other KVM terminology, and to avoid pseudo-shadowing when the variables are moved to sev.c in a future patch ('sev' is often used for local struct kvm_sev_info pointers. No functional change intended. Acked-by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/sev.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 4595f04310e2..ef2ae734b6bc 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -28,12 +28,12 @@ #define __ex(x) __kvm_handle_fault_on_reboot(x) /* enable/disable SEV support */ -static int sev = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); -module_param(sev, int, 0444); +static bool sev_enabled = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); +module_param_named(sev, sev_enabled, bool, 0444); /* enable/disable SEV-ES support */ -static int sev_es = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); -module_param(sev_es, int, 0444); +static bool sev_es_enabled = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); +module_param_named(sev_es, sev_es_enabled, bool, 0444); static u8 sev_enc_bit; static int sev_flush_asids(void); @@ -213,7 +213,7 @@ static int sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp) static int sev_es_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp) { - if (!sev_es) + if (!sev_es_enabled) return -ENOTTY; to_kvm_svm(kvm)->sev_info.es_active = true; @@ -1052,7 +1052,7 @@ int svm_mem_enc_op(struct kvm *kvm, void __user *argp) struct kvm_sev_cmd sev_cmd; int r; - if (!svm_sev_enabled() || !sev) + if (!svm_sev_enabled() || !sev_enabled) return -ENOTTY; if (!argp) @@ -1257,7 +1257,7 @@ void __init sev_hardware_setup(void) bool sev_es_supported = false; bool sev_supported = false; - if (!IS_ENABLED(CONFIG_KVM_AMD_SEV) || !sev) + if (!IS_ENABLED(CONFIG_KVM_AMD_SEV) || !sev_enabled) goto out; /* Does the CPU support SEV? */ @@ -1295,7 +1295,7 @@ void __init sev_hardware_setup(void) sev_supported = true; /* SEV-ES support requested? */ - if (!sev_es) + if (!sev_es_enabled) goto out; /* Does the CPU support SEV-ES? */ @@ -1310,8 +1310,8 @@ void __init sev_hardware_setup(void) sev_es_supported = true; out: - sev = sev_supported; - sev_es = sev_es_supported; + sev_enabled = sev_supported; + sev_es_enabled = sev_es_supported; } void sev_hardware_teardown(void) From patchwork Fri Jan 22 20:21:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040653 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 007DBC433E0 for ; Fri, 22 Jan 2021 21:27:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id AD60523B08 for ; Fri, 22 Jan 2021 21:27:36 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729147AbhAVVZr (ORCPT ); Fri, 22 Jan 2021 16:25:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43834 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729559AbhAVUX4 (ORCPT ); Fri, 22 Jan 2021 15:23:56 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 33DA2C061353 for ; Fri, 22 Jan 2021 12:22:07 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id k33so6580517ybj.14 for ; Fri, 22 Jan 2021 12:22:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=MltbaRObml30irkHPhgSbtFeSOXawRLwmxqzNuTe6aI=; b=pSdITsON5EyzA+MhtZPLM/gGWiDf0fqN/GPANsauf5py/l7Fr0W7OhMbjm8ewT2z6r 6r1z3WduX2GIAYhSsHmNq2hQ2k2dMHm/vzkrHJC6/zaXYyX9u2QKLiZap/neklDxhOLG IjJgQ2iQWF58k3TvxfIppW9C90fWBSBChWChtHXK1599zECbt9ycEQVowkjR/0qusD1Z UJVK2GT6Rr43F2loo01Er78y1oZfKdO/QY4dBvx33U5/hClLLwfrJr7aKuLThtOXqZ+k erGdJCr4WpoKSVXIwBq2hEmXlCnMpJzAaUWKc1C0hPRA7EOis+SPnZfg50CgCXEOWA/Y DTPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=MltbaRObml30irkHPhgSbtFeSOXawRLwmxqzNuTe6aI=; b=cujuveQDTD5QYK3Wi9urT4IlFKrtrI9/bSFdhuRRVvE4iw/AWFkBzG5pDNPJsLDteo qnUhrZY8b6g3W3VngBR4tReceUNAimvHNn0ordHG2Nv1Tl/ehoUmw+oiuXsjQn9hn6uN 4tHjocRTVbUYMRg8nBkYjdb5jdJwaRNPJBJsnXfuAuWEnE8Ax4VU01aphiOPVCmpo/Sz 1P/HKGDD7kEhDFtqkzROYofIFkZ8xZqUHgniWtlY01cO7jV3WjYDx1VcmDTDL6Spg5eY rxBIKghL4dhJ+ZG5szH2k1hBQpSHyui0e2czaGZ8nV9cIkl70/UMEU/N/SgBwWvlLZFh ADbA== X-Gm-Message-State: AOAM530Fb1cVEGDljQeRYVpdewQodwAqBlyUaez+NPkyHfqxld51N9eq /uPP5u/31G9fuqYgqcIQKzJylTgmqkc= X-Google-Smtp-Source: ABdhPJzcUotv0kIBRELBwBqOKSLnsQCJK+jxA2yJR6PV7MH2GMa5Ss6u3XDPtIHzhCnxD7pFAXbrJMCY3g8= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:1182:: with SMTP id 124mr8566063ybr.154.1611346926401; Fri, 22 Jan 2021 12:22:06 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:37 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-7-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 06/13] KVM: SVM: Condition sev_enabled and sev_es_enabled on CONFIG_KVM_AMD_SEV=y From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Define sev_enabled and sev_es_enabled as 'false' and explicitly #ifdef out all of sev_hardware_setup() if CONFIG_KVM_AMD_SEV=n. This kills three birds at once: - Makes sev_enabled and sev_es_enabled off by default if CONFIG_KVM_AMD_SEV=n. Previously, they could be on by default if CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT=y, regardless of KVM SEV support. - Hides the sev and sev_es modules params when CONFIG_KVM_AMD_SEV=n. - Resolves a false positive -Wnonnull in __sev_recycle_asids() that is currently masked by the equivalent IS_ENABLED(CONFIG_KVM_AMD_SEV) check in svm_sev_enabled(), which will be dropped in a future patch. Reviewed by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/sev.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index ef2ae734b6bc..2b8ebe2f1caf 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -27,6 +27,7 @@ #define __ex(x) __kvm_handle_fault_on_reboot(x) +#ifdef CONFIG_KVM_AMD_SEV /* enable/disable SEV support */ static bool sev_enabled = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); module_param_named(sev, sev_enabled, bool, 0444); @@ -34,6 +35,10 @@ module_param_named(sev, sev_enabled, bool, 0444); /* enable/disable SEV-ES support */ static bool sev_es_enabled = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); module_param_named(sev_es, sev_es_enabled, bool, 0444); +#else +#define sev_enabled false +#define sev_es_enabled false +#endif /* CONFIG_KVM_AMD_SEV */ static u8 sev_enc_bit; static int sev_flush_asids(void); @@ -1253,11 +1258,12 @@ void sev_vm_destroy(struct kvm *kvm) void __init sev_hardware_setup(void) { +#ifdef CONFIG_KVM_AMD_SEV unsigned int eax, ebx, ecx, edx; bool sev_es_supported = false; bool sev_supported = false; - if (!IS_ENABLED(CONFIG_KVM_AMD_SEV) || !sev_enabled) + if (!sev_enabled) goto out; /* Does the CPU support SEV? */ @@ -1312,6 +1318,7 @@ void __init sev_hardware_setup(void) out: sev_enabled = sev_supported; sev_es_enabled = sev_es_supported; +#endif } void sev_hardware_teardown(void) From patchwork Fri Jan 22 20:21:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040423 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E78D9C433DB for ; Fri, 22 Jan 2021 20:29:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B796123AFC for ; Fri, 22 Jan 2021 20:29:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730229AbhAVU25 (ORCPT ); Fri, 22 Jan 2021 15:28:57 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728720AbhAVU0R (ORCPT ); Fri, 22 Jan 2021 15:26:17 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 23BDCC06121C for ; Fri, 22 Jan 2021 12:22:10 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id k7so6582274ybm.13 for ; Fri, 22 Jan 2021 12:22:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=/ZkAZInrp/HESo6Je3L3thhbbn73G+oj93gKTic8EAM=; b=JSL5W7nZXPziV3zGpE/mSde9BrCmdj9Rm9RRUxVfwJV6nSes7XQJaRD5B+ukF9Gscj QGUuhyPUwbks7K2GPKJ3P9aFjDeeZj+AV9dCr2jLc2TbbgpY4vd4oheClqgtpPDxqXPV kzKsHeRUlqONGMlDzuTCvUrdRkuEhHYrT4/cmZnGtDPdsK+rF7tufCo2L7FU9gcTlQe5 AmxEh7XZnMkwpzKVBvO6he6ncfS7DtDMXbmKfivYQvtvZHs5ALbCe8QnPrwEhnV8aIg7 x/cbrNA4sk/0nLJvGK3+ZGbEdMJsqhmJRLwuZU5hDlxLnbzG3t/YVpF/wRXOj+1yxURi x2kQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=/ZkAZInrp/HESo6Je3L3thhbbn73G+oj93gKTic8EAM=; b=mxhBbsiq5Ht49u/jZGHe99zrwCO9QaLzL5xqJXG0DVq+l3In9qY7IpDoWN7apS24f/ VS6YiEfdUj5Cmdbm8ZQptQYITmTFA8IPyq1FC4A8ZQaC/pyj3Bg9qUeDOQGq+jCtWJZ0 ijlD0ANKgvSyucA/oA2RFVZvpP45BWzzscyA3dN9CfK7oCKMk9mLtQrDj2m/KzZKsIA7 EBAzbwPlB+IQfrqJ9de26mIRM+yqUeqg6TlD7Z5Rcbi2tJVxsCNMxN5d3gvsN+5ry6Yc d0JGrL2JLz/xz8dAzjI7ih+2v4vaI114WYreyvM2q65A4oD9aAM4SR7tSb4cmEQLIHLH 8U1Q== X-Gm-Message-State: AOAM531xP2klVOZ4m5aFxqtKMabUfjewUK9XkaD22QqUiIr5nkv0ITS8 2RDrTt7nayLDQhAvDjQm06tWZSXtMlQ= X-Google-Smtp-Source: ABdhPJzgl7GPOXMzWGgsV6KXAVBkpwgalvxlDoM3x732SF/RmPW0nbBAQOY6pDUrLTJEX+LArERlFTSD5t8= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:5407:: with SMTP id i7mr9425875ybb.50.1611346929385; Fri, 22 Jan 2021 12:22:09 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:38 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-8-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 07/13] KVM: SVM: Enable SEV/SEV-ES functionality by default (when supported) From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Enable the 'sev' and 'sev_es' module params by default instead of having them conditioned on CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT. The extra Kconfig is pointless as KVM SEV/SEV-ES support is already controlled via CONFIG_KVM_AMD_SEV, and CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT has the unfortunate side effect of enabling all the SEV-ES _guest_ code due to it being dependent on CONFIG_AMD_MEM_ENCRYPT=y. Cc: Borislav Petkov Cc: Tom Lendacky Cc: Brijesh Singh Signed-off-by: Sean Christopherson Reviewed-by: Tom Lendacky --- arch/x86/kvm/svm/sev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 2b8ebe2f1caf..75a83e2a8a89 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -29,11 +29,11 @@ #ifdef CONFIG_KVM_AMD_SEV /* enable/disable SEV support */ -static bool sev_enabled = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); +static bool sev_enabled = true; module_param_named(sev, sev_enabled, bool, 0444); /* enable/disable SEV-ES support */ -static bool sev_es_enabled = IS_ENABLED(CONFIG_AMD_MEM_ENCRYPT_ACTIVE_BY_DEFAULT); +static bool sev_es_enabled = true; module_param_named(sev_es, sev_es_enabled, bool, 0444); #else #define sev_enabled false From patchwork Fri Jan 22 20:21:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040641 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D1AADC433DB for ; Fri, 22 Jan 2021 21:21:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A7ED223B17 for ; Fri, 22 Jan 2021 21:21:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729650AbhAVVVf (ORCPT ); Fri, 22 Jan 2021 16:21:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43774 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729708AbhAVU0A (ORCPT ); Fri, 22 Jan 2021 15:26:00 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8046FC06121D for ; Fri, 22 Jan 2021 12:22:12 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id p80so6640923ybg.10 for ; Fri, 22 Jan 2021 12:22:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=Lssm9vnV0iLXDZRtVS+ip+CuQrLpbDOdWlfsE39gna0=; b=P5spKE249v9MJhHuwociWOenZQfCsvhYhlHK6Xc4Tq87LjXje/dHDcQ2y3Hxai/Zn1 hDYMAOVwFRGtA55Sao1EVVnPzIYgxLrzaniitFQEJQwsgVCQkQOGduueEx6iMXTgihdm KNSR+lg2IjuKhTAguQrjSFNxzOmM55UfUWTdLmeRHQZVelE5uye1KSkdXezvWQNIbUOM uBL7B7vs0SsVtvKVoqoVN21kUtHsBGiMLqDXjkEAVCpWWAM8sPa5itMJ88zpMfAGRAD6 /uFjEO3+U5czMQSXjnSWSmSYbUXaoHZMCKpUgYRAxxvQR+ehsC0NQBdNtFjdYiQkQfoZ gChQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Lssm9vnV0iLXDZRtVS+ip+CuQrLpbDOdWlfsE39gna0=; b=VnrR5FznKdQP+YGjCtINk6+rBRlWiABCFAzmaAxB7nrVd/cFVnctVWqDtVPJClkOiB ZrkwT7Plzt1OHZ4nBIZpE7dHInTL1mmYDEmZCBdbzy60aO1u239PlTpU7Yc7AeVJNFGu yoIton4ZRmZWLCzUqpjrO5hRx0STylr32UA2WpnSi0BWC3ciu2XprR2ngZXhGOvNE/2A U36c64/jqvpd/PyDH852fUwjbcAIa8KPpK71N8PIYj3VNw1HNBmGhLQebNMHMsFh4RCY YOm1aJvn1XN2TTiNuzSb61PlN9PsU4RYeu7T/qC5MKIllXarv9sNnpoCne0mD8rNKJD8 IQMA== X-Gm-Message-State: AOAM530msR4WuTAz/VO2Tf4YdpkmvR3liEzK1dYrVsmRb8QNiotCCAod OCGu8SQGIDf1/1ff435UF4hk//ocJ6I= X-Google-Smtp-Source: ABdhPJz6EFMndS+4oeFU5UpWrQTe6vvvKj25yyvz9//zruAK3FHxzyZdF+qTGPahqUOCYf24KiAEghirxPc= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:8409:: with SMTP id u9mr9067127ybk.67.1611346931772; Fri, 22 Jan 2021 12:22:11 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:39 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-9-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 08/13] KVM: SVM: Unconditionally invoke sev_hardware_teardown() From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Remove the redundant svm_sev_enabled() check when calling sev_hardware_teardown(), the teardown helper itself does the check. Removing the check from svm.c will eventually allow dropping svm_sev_enabled() entirely. No functional change intended. Reviewed by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/svm.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index d223db3a77b0..751785b156ab 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -886,8 +886,7 @@ static void svm_hardware_teardown(void) { int cpu; - if (svm_sev_enabled()) - sev_hardware_teardown(); + sev_hardware_teardown(); for_each_possible_cpu(cpu) svm_cpu_uninit(cpu); From patchwork Fri Jan 22 20:21:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040425 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2060EC433E0 for ; Fri, 22 Jan 2021 20:29:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id E98D423B01 for ; Fri, 22 Jan 2021 20:29:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730427AbhAVU3J (ORCPT ); Fri, 22 Jan 2021 15:29:09 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729851AbhAVU0Z (ORCPT ); Fri, 22 Jan 2021 15:26:25 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE298C061220 for ; Fri, 22 Jan 2021 12:22:14 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id l3so6606806ybl.17 for ; Fri, 22 Jan 2021 12:22:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ut/T6G9w71CC8HxNYO0u5RfiusnblVieh7wlxdxSOrI=; b=ZtWeshgPgZFT5yQIvxcM8SgjVvKSYldmaFOWVPWpa7cHVfKH1Vif6eY40k2Y5/9f4O ljrfJkzqfwvROg9IjLCwTTabk8eO35wsFAsljC7ZijOOcj2LI4ITfI2RKNxwu26GbK+J CEw64JAKIanQZE5O9DA4kgHRinl8/thJ66tv8mtj6J6rePNXHvhIrvNjMDhOVTgII4V8 Wjy3gRo1RA2DLb3adHTd2KOaKhlc9a87qK3huJXbGsvZzTVfbKzMpf7+6RxADg7x3YUm WzNT7nYS5herjV4J3KXpLDxeNMKUzf8q8iFG8X0+OYpF52eFKqg6uw3NC9jFqoRTZQU0 NGTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ut/T6G9w71CC8HxNYO0u5RfiusnblVieh7wlxdxSOrI=; b=Ale71Zpvo4uTg916o5HHBEz66ExCxyoWTYBt+aa1Hq9tqRjujUk7ydB32AwmueakZW TdapNyxaKnEeYmNLaLWZALL8UUvFaqgsTeG4cJm/FqXgPIs6Hx1pXAxu+j2pey1KGPmz XDPjwNf0BOpL7ugPltVwtBhhiJIq2oR3oZ1qEOqQ7LagWEoftWBvZ4uUZ0GjsjGW7LNd q2cKrHOz0TLC/szNy/+CstalYBzTSiCAI1LBHlcgzLNifEmnMr0rcf3zXmCdKwapAmv1 LzwGlmjNAvZgnHsmjamtd3nLxGlK0K5h3QY5ut68MVzAu6bfX+c2nyMisNZ82XN3HIoo +Apg== X-Gm-Message-State: AOAM533fZG4/N5jCS8eefs+2nhmrvQa8JTAIYDPVymFHTkmdTGZcEw0d i1TPvGKS8sG2QssAKT0N/HtJegAhj94= X-Google-Smtp-Source: ABdhPJzU0vWM6wYGFiAUoIChr7p55Yc7uqfLcyX3pxdBDck5MZeamqNODJnRxoFV+aaIRs66gnd9KswWCuo= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a05:6902:701:: with SMTP id k1mr8686405ybt.342.1611346934044; Fri, 22 Jan 2021 12:22:14 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:40 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-10-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 09/13] KVM: SVM: Explicitly check max SEV ASID during sev_hardware_setup() From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Query max_sev_asid directly after setting it instead of bouncing through its wrapper, svm_sev_enabled(). Using the wrapper is unnecessary obfuscation. No functional change intended. Reviewed by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/sev.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 75a83e2a8a89..0c69de022614 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1278,8 +1278,7 @@ void __init sev_hardware_setup(void) /* Maximum number of encrypted guests supported simultaneously */ max_sev_asid = ecx; - - if (!svm_sev_enabled()) + if (!max_sev_asid) goto out; /* Minimum ASID value that should be used for SEV guest */ From patchwork Fri Jan 22 20:21:41 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040647 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3EA2FC433DB for ; Fri, 22 Jan 2021 21:22:07 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 1697E23AF8 for ; Fri, 22 Jan 2021 21:22:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1730402AbhAVVVj (ORCPT ); Fri, 22 Jan 2021 16:21:39 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43772 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728531AbhAVU0A (ORCPT ); Fri, 22 Jan 2021 15:26:00 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4A7BBC061222 for ; Fri, 22 Jan 2021 12:22:17 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id c9so6564432ybs.8 for ; Fri, 22 Jan 2021 12:22:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=35f31jPrbe/qFsWIcvakk7ysCD9lwX+ABE7eqvtZ0wc=; b=EWHkszKWjWp3VUR8JHd2bWBdtPZxXe/SOOX7kxabAidsStvU1/xEwp9KDG5vFAgPFl Wt/ht2xY/BXbfaQ/rk85jEnnJNBK6EQ8gsF0eIaODn9xfAyO1pHM9tnAASXTqdJjhJDA ftehr1/dLRiddhGjvjT5EVEVpvqiVx3up7Cmg8Xjp5wt7cBH8t52JMX/ZR9wGYqCRGSL BfIK/0eMfzDgik5WmClDfni1br/Kmtn5C5Ayuhu2PQi2ptNvwCC9wqZdABnXcsGeb2eQ OdHsTMcGr1rgoNK2SigZ2LblU3cTKUfnmPaHnwSXBwF4Fn4BuNxUB23XsVhunQIMkXnv WcKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=35f31jPrbe/qFsWIcvakk7ysCD9lwX+ABE7eqvtZ0wc=; b=pEQ8kBXCkm+Ayhes3mN2A9KIrEs/QiRnwNUkAAQW2Hctv1edfSho6xOEyyfpH3dR+s QXiqhOXNwnVoX/zefhEEHbMiQ62+nOYlewygCr5kRAMmCkAyZhhjfx5TDt3OJMGgBQ8I ORcPqC0zpq/F7UOG534KgSolghaBg2BpEfB8XCseN1vMGYzt2N8KdMY+G1uK3m/SjnSc fh9EXK+50OKbjffx8fFbZsHbSZHM++Oi3goqxnDbsDpbZkCftGdRKfQzDwf+qQRvZj8Z fRO9xIs1/5Sd6IMfEcj418BAwyfrS+0yrqsTvJRHGqkf3PH/bLUfzmSkO2LNMWjrKK4+ UMqA== X-Gm-Message-State: AOAM530NFTFLSvvbzjDjlAu6WmarsmaT9kkWGJY8k99hPdH5KCIO6DgH +h4cLnBfpFiJcBm8wlyNniDK5NbgZWQ= X-Google-Smtp-Source: ABdhPJyvI0r5XWvCIMMizQISLztTQ6kWCu2dC6ZjFbTiwMUFQCYT/DIFQ9DjhRKNzNOAl16xqAKhwgIhgFY= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:df4b:: with SMTP id w72mr9151292ybg.174.1611346936569; Fri, 22 Jan 2021 12:22:16 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:41 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-11-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 10/13] KVM: SVM: Move SEV VMCB tracking allocation to sev.c From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Move the allocation of the SEV VMCB array to sev.c to help pave the way toward encapsulating SEV enabling wholly within sev.c. No functional change intended. Reviewed by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/sev.c | 12 ++++++++++++ arch/x86/kvm/svm/svm.c | 16 ++++++++-------- arch/x86/kvm/svm/svm.h | 1 + 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 0c69de022614..55a47a34a0ef 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1331,6 +1331,18 @@ void sev_hardware_teardown(void) sev_flush_asids(); } +int sev_cpu_init(struct svm_cpu_data *sd) +{ + if (!svm_sev_enabled()) + return 0; + + sd->sev_vmcbs = kcalloc(max_sev_asid + 1, sizeof(void *), GFP_KERNEL); + if (!sd->sev_vmcbs) + return -ENOMEM; + + return 0; +} + /* * Pages used by hardware to hold guest encrypted state must be flushed before * returning them to the system. diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index 751785b156ab..89b95fb87a0c 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -552,22 +552,22 @@ static void svm_cpu_uninit(int cpu) static int svm_cpu_init(int cpu) { struct svm_cpu_data *sd; + int ret; sd = kzalloc(sizeof(struct svm_cpu_data), GFP_KERNEL); if (!sd) return -ENOMEM; sd->cpu = cpu; sd->save_area = alloc_page(GFP_KERNEL); - if (!sd->save_area) + if (!sd->save_area) { + ret = -ENOMEM; goto free_cpu_data; + } clear_page(page_address(sd->save_area)); - if (svm_sev_enabled()) { - sd->sev_vmcbs = kcalloc(max_sev_asid + 1, sizeof(void *), - GFP_KERNEL); - if (!sd->sev_vmcbs) - goto free_save_area; - } + ret = sev_cpu_init(sd); + if (ret) + goto free_save_area; per_cpu(svm_data, cpu) = sd; @@ -577,7 +577,7 @@ static int svm_cpu_init(int cpu) __free_page(sd->save_area); free_cpu_data: kfree(sd); - return -ENOMEM; + return ret; } diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 8e169835f52a..4eb4bab0ca3e 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -583,6 +583,7 @@ int svm_unregister_enc_region(struct kvm *kvm, void pre_sev_run(struct vcpu_svm *svm, int cpu); void __init sev_hardware_setup(void); void sev_hardware_teardown(void); +int sev_cpu_init(struct svm_cpu_data *sd); void sev_free_vcpu(struct kvm_vcpu *vcpu); int sev_handle_vmgexit(struct vcpu_svm *svm); int sev_es_string_io(struct vcpu_svm *svm, int size, unsigned int port, int in); From patchwork Fri Jan 22 20:21:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040421 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E7FFEC433DB for ; Fri, 22 Jan 2021 20:28:55 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id A282A23AFC for ; Fri, 22 Jan 2021 20:28:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729948AbhAVU2r (ORCPT ); Fri, 22 Jan 2021 15:28:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729876AbhAVU0Z (ORCPT ); Fri, 22 Jan 2021 15:26:25 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 99340C061223 for ; Fri, 22 Jan 2021 12:22:19 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id j12so6609798ybg.4 for ; Fri, 22 Jan 2021 12:22:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=OCy456duBz1gUTENw/PGNr1MaaBImebv94ZBlfupr7M=; b=Yj28gS0BBPxkUQM8hmXirFPzaP+oJHyzCj/JId6vY5QRRDMTHtgAjoAXVveOq2+8IR K3/39u5QqK7ch2vvuvtqxxI/9qf12nuc4pqseMNiOKyyeGrqPEU5bbilbLm/fXVgul+a Tx6UDwK2+ldvL15/nJo13w9TgOFlA+3Gaei4qyvo/MMtnrV3O5m+RfD6Nlui/xA75Ku+ esh71yRR3Mg8HBOBUkyle1wUm6MsOh0XkaN7jHfGDGOwVbRQD/qaFu6uE2xZ5pq8hT3o GK4doR/epDeJE/nCm3KH0bAq1GBD9CtsswQX0QLGLYzG9zQFgheCuXoBJwtr6B8JFnT8 fQHw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=OCy456duBz1gUTENw/PGNr1MaaBImebv94ZBlfupr7M=; b=CnnvJynmY1EicvSPnzG2S6LvU7CTTMrdKMT+5PpO+zwVIez2TtdJ7XvcHtipQQsJrh WkTg0ArrwSNsdKIwvK2eBImelPUZwz0xLrYL0iLhU8zs50uM0u803xck0ruuWmZ36pNX Qj9LYuApy9TjroehEAoxpp5AWTySRS8rrU6nK7UeWXc4qX8LiNzKrgna4RM7wi3vOCED q6CQIrfPhFjp64saEiNEkjjSCE3dNVT6bwiA9dZn2bQlY2GmgEUXymQAneNl2/6btxRU GfrK4M9KkmkSkgz998mGnyRM8ZMMwfhgfWKL04xH3bxcIhXkYb6bTzesCzHp2YqkS2WB e9LA== X-Gm-Message-State: AOAM530L7ru8qMn3Hzn50hkjTwvnsqIuAlSaT3jxWVOMOclA1lJ6hVBs EGm4VvoLqaBE7/WS3LPx8x2pRRd9SxY= X-Google-Smtp-Source: ABdhPJzYBv6MhPX2CO9MpRYE+DXMwRTMBvvYyW+dIEogD2+gdXiu+m1t2YG9WoYTUQdrrFnzRuZG8vvSlt0= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:7544:: with SMTP id q65mr7827570ybc.200.1611346938885; Fri, 22 Jan 2021 12:22:18 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:42 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-12-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 11/13] KVM: SVM: Drop redundant svm_sev_enabled() helper From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Replace calls to svm_sev_enabled() with direct checks on sev_enabled, or in the case of svm_mem_enc_op, simply drop the call to svm_sev_enabled(). This effectively replaces checks against a valid max_sev_asid with checks against sev_enabled. sev_enabled is forced off by sev_hardware_setup() if max_sev_asid is invalid, all call sites are guaranteed to run after sev_hardware_setup(), and all of the checks care about SEV being fully enabled (as opposed to intentionally handling the scenario where max_sev_asid is valid but SEV enabling fails due to OOM). Reviewed by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/sev.c | 6 +++--- arch/x86/kvm/svm/svm.h | 5 ----- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 55a47a34a0ef..15bdc97454ab 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -1057,7 +1057,7 @@ int svm_mem_enc_op(struct kvm *kvm, void __user *argp) struct kvm_sev_cmd sev_cmd; int r; - if (!svm_sev_enabled() || !sev_enabled) + if (!sev_enabled) return -ENOTTY; if (!argp) @@ -1322,7 +1322,7 @@ void __init sev_hardware_setup(void) void sev_hardware_teardown(void) { - if (!svm_sev_enabled()) + if (!sev_enabled) return; bitmap_free(sev_asid_bitmap); @@ -1333,7 +1333,7 @@ void sev_hardware_teardown(void) int sev_cpu_init(struct svm_cpu_data *sd) { - if (!svm_sev_enabled()) + if (!sev_enabled) return 0; sd->sev_vmcbs = kcalloc(max_sev_asid + 1, sizeof(void *), GFP_KERNEL); diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h index 4eb4bab0ca3e..8cb4395b58a0 100644 --- a/arch/x86/kvm/svm/svm.h +++ b/arch/x86/kvm/svm/svm.h @@ -569,11 +569,6 @@ void svm_vcpu_unblocking(struct kvm_vcpu *vcpu); extern unsigned int max_sev_asid; -static inline bool svm_sev_enabled(void) -{ - return IS_ENABLED(CONFIG_KVM_AMD_SEV) ? max_sev_asid : 0; -} - void sev_vm_destroy(struct kvm *kvm); int svm_mem_enc_op(struct kvm *kvm, void __user *argp); int svm_register_enc_region(struct kvm *kvm, From patchwork Fri Jan 22 20:21:43 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040639 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B9F51C433E6 for ; Fri, 22 Jan 2021 21:21:41 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 92F3823B09 for ; Fri, 22 Jan 2021 21:21:41 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729569AbhAVVVL (ORCPT ); Fri, 22 Jan 2021 16:21:11 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43794 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728254AbhAVU0B (ORCPT ); Fri, 22 Jan 2021 15:26:01 -0500 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04CBCC061225 for ; Fri, 22 Jan 2021 12:22:22 -0800 (PST) Received: by mail-yb1-xb4a.google.com with SMTP id b131so6631215ybc.3 for ; Fri, 22 Jan 2021 12:22:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=9YyrF+bNfu25OZDUV03DuKXOU6fNcwhwu/YWG0B3SQ8=; b=rkx40f1M9VAr0cpXIu1eyy0Dwe7m7iby0h03XkrYRYabaqizQuaf1H8qCwh/pj/OmP oVYOWprMssUUpaNEfGiWq/9j5wrdXdW/EuQJVKjcINwGtFviuakOht313AMOPbeKiZc/ dTFYHUUrTyVTmrp+xiX8/FpOFDoGJ8KsRIrA8CBQvGsTlap/gQvcKGG5Z2RYEf/no5Hs t55FirMq2F32tcozXIjNPDaXjkjPyj0o8xnk4ZzQWOjHQFeWuCIgWPjlynyY5fPifDKa b7NvK7OFfmwENO6Dehg8Br8iYkO/P0IOhvLyyicQgj0H37Ib8pG6Qu/AlxOJ4XnG5+Jm p9bg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=9YyrF+bNfu25OZDUV03DuKXOU6fNcwhwu/YWG0B3SQ8=; b=PxPZZDSK/a/Ks0ZwoYpAw1Wp9QISZPKKo1iVM4NnMBlkUMR5WhGfyrWZr43KKR2tzk OiIWjP6dESyZjmyRpdxFVLR2k9kBJg/BxUwSvuGvsz3gvbm8RPMjXX5M7MrGye5G8Fpz X/zf/9Sy/HyN6Qe1P/r5F3DU7m0aciuT7hulM6rGQbeOdA74ZukWqtZGOwWuocLn2uqJ aA/pU+/wgrTP7Ki3bLhtqvynPphsSwk4wSLkQ3UTNJfUlvu5Hy5NjuJ40IwYF6ByXTIR 2qQ6fkXVvcKmRGGp+6N0Wg4IB5gfAjCoviMcvDIzytWvIxJMwxwl1lQZeJ3HRwcs5s8r LfeQ== X-Gm-Message-State: AOAM531QqiciZ2UwZBDaoldISe3YptXhWq211dR9LsvCz+XUd3395yJQ d5WyvNXZ1MlG3c9TA8kWxXsMwtOMKoI= X-Google-Smtp-Source: ABdhPJyql0wBNVi8A3QrBM2L9OyFhQYkW3e5KFrtuET9Bxef7hzsQORrwjs0oMpO64gWKMEfJwqbVZ8nTRU= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:d80d:: with SMTP id p13mr9004983ybg.327.1611346941233; Fri, 22 Jan 2021 12:22:21 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:43 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-13-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 12/13] KVM: SVM: Remove an unnecessary prototype declaration of sev_flush_asids() From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Remove the forward declaration of sev_flush_asids(), which is only a few lines above the function itself. No functional change intended. Reviewed by: Tom Lendacky Reviewed-by: Brijesh Singh Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/sev.c | 1 - 1 file changed, 1 deletion(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 15bdc97454ab..73da2af1e25d 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -41,7 +41,6 @@ module_param_named(sev_es, sev_es_enabled, bool, 0444); #endif /* CONFIG_KVM_AMD_SEV */ static u8 sev_enc_bit; -static int sev_flush_asids(void); static DECLARE_RWSEM(sev_deactivate_lock); static DEFINE_MUTEX(sev_bitmap_lock); unsigned int max_sev_asid; From patchwork Fri Jan 22 20:21:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 12040427 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-26.3 required=3.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_CR_TRAILER,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS, USER_AGENT_GIT,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4A473C43381 for ; Fri, 22 Jan 2021 20:29:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 209B223AFC for ; Fri, 22 Jan 2021 20:29:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731034AbhAVU2f (ORCPT ); Fri, 22 Jan 2021 15:28:35 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43792 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729776AbhAVU0G (ORCPT ); Fri, 22 Jan 2021 15:26:06 -0500 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F82FC0611C0 for ; Fri, 22 Jan 2021 12:22:24 -0800 (PST) Received: by mail-yb1-xb49.google.com with SMTP id l10so6660669ybt.6 for ; Fri, 22 Jan 2021 12:22:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=sender:reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=ehdULWTO7EegFXRAR9N52T5SfWTOsL20pH6ob+5mEtA=; b=ncns3vkljJeRg+++B9bI09LSTPIN7Q50r6Q7c3MG3mj6tTLQaNCbLE7wM8xKTNclNM Xb7K5tzwyTXa4bffG5EKhNkSaXz30tPX9tCoPNbuQ/hMkGdSr7CfpXYWs+efUuAj8cfh fqpXgp5EaS838qONnFeoLOuKl6380AywdBxmcehdaKJkRWwU3iRgBx0O3QwZPFFGP3no j0Ws4IvPqfGHisE28k+OQm6EgqgwuOp1shbTTLVEVzv7c9UGmdqyzY8s9SL+fidtXZyj PFM6jOmCk5X32S6qiHLRJP5DqpHQY5Fil30Nvx3NUdObX4SZL+37j5IqYdVW2VLqTVWF y1zg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=ehdULWTO7EegFXRAR9N52T5SfWTOsL20pH6ob+5mEtA=; b=CkhvSqgQKJv0y0y9D2mdGXN+lZZ2NRMHNXQ3j2u8hk/m5MuhULgU8NxuKvcsJ2Ml7x yWznDXaVvz7wVbRXYfUZS/7u5YipE+cZ+dzM5LnoUDKjkDUx9EtBBAjVN/y6Ew8P9RHh E9BZpaq/RWBH2da3J/FrHjoN3X07xWTqTZSUYfbPZAfOICrmnaj5kHK1/g5vqVKVMghu vCYfztzW0wq4YPdUlsLu0zegrNGtCfBUUNqBp4QMZHkhDaiW7sm6KOTkuVKNP9xSe/G3 73TqvQGNkDMabCflNnuqVZpADk1jgsWjtdecwZrF2XqAwbpZpv/tljyDSmki8yq4htRa S0yg== X-Gm-Message-State: AOAM531UP7icn0m2oFcr5g3nXjrDNSfm+s2u3C06sFncAo/cWlbp4teu xp6HvY+c0bMNWTFCidgiGdx2G6x3pgA= X-Google-Smtp-Source: ABdhPJzLhnyCrRs/Bk9YHCsNQ28pCnNpi0SPWgybuUOEstJduRVYRC0Mk+Qb4Qf5/pmV72gNAwVxTE51u/Y= Sender: "seanjc via sendgmr" X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:f:10:1ea0:b8ff:fe73:50f5]) (user=seanjc job=sendgmr) by 2002:a25:db87:: with SMTP id g129mr3270161ybf.518.1611346943739; Fri, 22 Jan 2021 12:22:23 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 22 Jan 2021 12:21:44 -0800 In-Reply-To: <20210122202144.2756381-1-seanjc@google.com> Message-Id: <20210122202144.2756381-14-seanjc@google.com> Mime-Version: 1.0 References: <20210122202144.2756381-1-seanjc@google.com> X-Mailer: git-send-email 2.30.0.280.ga3ce27912f-goog Subject: [PATCH v3 13/13] KVM: SVM: Skip SEV cache flush if no ASIDs have been used From: Sean Christopherson To: Paolo Bonzini , Dave Hansen , Andy Lutomirski , Peter Zijlstra Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Borislav Petkov , Tom Lendacky , Brijesh Singh Precedence: bulk List-ID: X-Mailing-List: kvm@vger.kernel.org Skip SEV's expensive WBINVD and DF_FLUSH if there are no SEV ASIDs waiting to be reclaimed, e.g. if SEV was never used. This "fixes" an issue where the DF_FLUSH fails during hardware teardown if the original SEV_INIT failed. Ideally, SEV wouldn't be marked as enabled in KVM if SEV_INIT fails, but that's a problem for another day. Signed-off-by: Sean Christopherson Reviewed-by: Tom Lendacky --- arch/x86/kvm/svm/sev.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c index 73da2af1e25d..0a4715e60b88 100644 --- a/arch/x86/kvm/svm/sev.c +++ b/arch/x86/kvm/svm/sev.c @@ -56,9 +56,14 @@ struct enc_region { unsigned long size; }; -static int sev_flush_asids(void) +static int sev_flush_asids(int min_asid, int max_asid) { - int ret, error = 0; + int ret, pos, error = 0; + + /* Check if there are any ASIDs to reclaim before performing a flush */ + pos = find_next_bit(sev_reclaim_asid_bitmap, max_sev_asid, min_asid); + if (pos >= max_asid) + return -EBUSY; /* * DEACTIVATE will clear the WBINVD indicator causing DF_FLUSH to fail, @@ -80,14 +85,7 @@ static int sev_flush_asids(void) /* Must be called with the sev_bitmap_lock held */ static bool __sev_recycle_asids(int min_asid, int max_asid) { - int pos; - - /* Check if there are any ASIDs to reclaim before performing a flush */ - pos = find_next_bit(sev_reclaim_asid_bitmap, max_sev_asid, min_asid); - if (pos >= max_asid) - return false; - - if (sev_flush_asids()) + if (sev_flush_asids(min_asid, max_asid)) return false; /* The flush process will flush all reclaimable SEV and SEV-ES ASIDs */ @@ -1324,10 +1322,11 @@ void sev_hardware_teardown(void) if (!sev_enabled) return; + /* No need to take sev_bitmap_lock, all VMs have been destroyed. */ + sev_flush_asids(0, max_sev_asid); + bitmap_free(sev_asid_bitmap); bitmap_free(sev_reclaim_asid_bitmap); - - sev_flush_asids(); } int sev_cpu_init(struct svm_cpu_data *sd)