From patchwork Fri Jul 21 20:18:47 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 124079 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9010:0:b0:3e4:2afc:c1 with SMTP id l16csp448099vqg; Fri, 21 Jul 2023 13:28:56 -0700 (PDT) X-Google-Smtp-Source: APBJJlEMciDdIcRQRdJtDweqQUibFE3mFlDwsgtBLN65vMmuwECE+bppPH/9u1nq00xG5PShH0yv X-Received: by 2002:aa7:c2c4:0:b0:51e:227c:9492 with SMTP id m4-20020aa7c2c4000000b0051e227c9492mr2885750edp.20.1689971336135; Fri, 21 Jul 2023 13:28:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1689971336; cv=none; d=google.com; s=arc-20160816; b=YqpHSfOsjYEf9xg9MRATE5ZdMXTiB/7Ni4HrOU+LmNklREyMbB9Ox51EewxOMQHtUC J/S+inc167jvspOKvewfsw+Z/49uj/GQ8YgIHRB2bzJBdrFU/w2Ci5IdFQkxLfkEaFin c0wvPScl4VCUHVQ3+qx537f8COYXr/pFJWZokTm506VYNCqCU9PjNfYcxlTPsJo8Jqqp lLuApyAdqdpAymhd7gtxlt8tovwnf23NImpVQUyztzxs5qlaa7qEFn4TMT0sZyYce4C6 vIF0HOtdJzQPum7h8lo1TI1TPpHjI6jWRtbk1uwuqHUatSphD0hQlw2z0ITn6s005Aur G3gQ== 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:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=Xl/21nVHjxj9H71udXldkW3KRDjTiiyAWxQB92FBmLk=; fh=GitwJflddDxrBBVhnTGEzIZYOBTU7RKSqL+OyCDv/0M=; b=s6RvJGs21vhjHB3AK7dXcf3TjCJaR22HDzydtBP43lnF7cae7cTPDkCTx9vvFDvioL gZi5/uT4zlNY2ut2SGPWBa5LNg3ulAROUhIgZsiU5HSKDsyo9oOVPCFmGxAyd9AyTqQW VWh2GXW+MSba7kUvrz3blV3RWdvV4m50kC0sPN0IB6MojxW8HZBUCUySINUYQlWqf9UR 95VeVMeBU/+N9WQdDYe7R0OIlwwt4BRZyX+ag3dgB9cSaVXIGAqWm1V29HvdW91L+vkV KS+Sobsp6URBNWcAzheGKY9E4ybeuQuljtcfbyEHq2fJ9O8hT2/rSGikY0c3em5wKHxe rInw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=Z9kjVXVG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 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 out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x19-20020aa7d393000000b0051df7c30429si2880862edq.239.2023.07.21.13.28.31; Fri, 21 Jul 2023 13:28:56 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20221208 header.b=Z9kjVXVG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231268AbjGUUTf (ORCPT + 99 others); Fri, 21 Jul 2023 16:19:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37916 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230490AbjGUUTX (ORCPT ); Fri, 21 Jul 2023 16:19:23 -0400 Received: from mail-pl1-x64a.google.com (mail-pl1-x64a.google.com [IPv6:2607:f8b0:4864:20::64a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D32073A87 for ; Fri, 21 Jul 2023 13:19:18 -0700 (PDT) Received: by mail-pl1-x64a.google.com with SMTP id d9443c01a7336-1b8a4571c1aso12775545ad.0 for ; Fri, 21 Jul 2023 13:19:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20221208; t=1689970758; x=1690575558; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=Xl/21nVHjxj9H71udXldkW3KRDjTiiyAWxQB92FBmLk=; b=Z9kjVXVGPt914xe9fLgGWQ7njz6z0IpDO/S9kHemlYQXnKLvSITcv91xTIWcVJtv4m CbGJMGVWN0Jx7yI0SSDzh5WgyereyRUc/tEyDpGT6MLizJYYxihqtQBSefCIu/1aboBj 0pFG/ifvnhuy1V3QTj222F9L3dkjAm/fM+mZ5LvJsm2PGxEdi2yFpOUZ6DMSDNxMm4DI o/VS8q8UCReLs1GvOJfJFGFkGBUim2JZRxl8RuCfyBdOzDRbkrsJk1z5x/ZIP4GwZ4+o 3wsH96lRHH20QOA7RyxWEHtNxRZlo33VGObc3zEeEV5ho06ifM+g9OcDd0QadVn+P/E+ TuFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1689970758; x=1690575558; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=Xl/21nVHjxj9H71udXldkW3KRDjTiiyAWxQB92FBmLk=; b=LRlhr7uGpyTcSSOPpOeT2tovIR2oAM3uLriwHVozPXtE1kZSvoG8ynd02/B8PcdgmF /+a6F2cYCVb52Zkc9em4tma0tfy+KdgPFQhbAJUc3YgBs37tl7WxdAT41+g3yZI1ady0 NHDj7qPa5zmdzVm2/6twbCim3MqFSW2y7UB2BcqGozgvnAZmgtbUBeqqW/QgDg59NjDl WoKU7BIeksRxGw9PBCNMJ37auosCTgrR2HHcODx3/oRqjYqvsXmMIIuz9ML5qqtLl/ks PzQDqOeglgcBPtu1U0CKl3YcGzV1Pq7FJv3l7m3Yx2mheuKm5IuiX/9TxZBihOl+6/vp 9sGA== X-Gm-Message-State: ABy/qLYkSFYqbMj1vGbOPnVfQGnwmGaRvPYUlbR4a1ea/pXOnBjLtjjJ MeHBW13rElX/EziIBN2PRW/zjS9PwyY= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:902:ecc1:b0:1b8:95fc:d0f with SMTP id a1-20020a170902ecc100b001b895fc0d0fmr13723plh.7.1689970758296; Fri, 21 Jul 2023 13:19:18 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 21 Jul 2023 13:18:47 -0700 In-Reply-To: <20230721201859.2307736-1-seanjc@google.com> Mime-Version: 1.0 References: <20230721201859.2307736-1-seanjc@google.com> X-Mailer: git-send-email 2.41.0.487.g6d72f3e995-goog Message-ID: <20230721201859.2307736-8-seanjc@google.com> Subject: [PATCH v4 07/19] x86/reboot: Disable virtualization during reboot iff callback is registered From: Sean Christopherson To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , Dave Hansen , x86@kernel.org, Sean Christopherson , Paolo Bonzini Cc: linux-kernel@vger.kernel.org, kvm@vger.kernel.org, Andrew Cooper , Kai Huang , Chao Gao X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE, USER_IN_DEF_DKIM_WL autolearn=unavailable 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1772063383404997713 X-GMAIL-MSGID: 1772063383404997713 Attempt to disable virtualization during an emergency reboot if and only if there is a registered virt callback, i.e. iff a hypervisor (KVM) is active. If there's no active hypervisor, then the CPU can't be operating with VMX or SVM enabled (barring an egregious bug). Checking for a valid callback instead of simply for SVM or VMX support can also eliminates spurious NMIs by avoiding the unecessary call to nmi_shootdown_cpus_on_restart(). Note, IRQs are disabled, which prevents KVM from coming along and enabling virtualization after the fact. Signed-off-by: Sean Christopherson Reviewed-by: Kai Huang --- arch/x86/kernel/reboot.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c index 85cb2dfcb67b..98e5db3fd7f4 100644 --- a/arch/x86/kernel/reboot.c +++ b/arch/x86/kernel/reboot.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -589,7 +588,7 @@ static void emergency_reboot_disable_virtualization(void) * Do the NMI shootdown even if virtualization is off on _this_ CPU, as * other CPUs may have virtualization enabled. */ - if (cpu_has_vmx() || cpu_has_svm(NULL)) { + if (rcu_access_pointer(cpu_emergency_virt_callback)) { /* Safely force _this_ CPU out of VMX/SVM operation. */ cpu_emergency_disable_virtualization();