Received: by 2002:a25:683:0:0:0:0:0 with SMTP id 125csp817479ybg; Wed, 10 Jun 2020 14:45:03 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwhFarniTDjxkFGiBKtDeUa1aLVC+ur3DqYi66VGA0bBqfeXKEI6h5KuLXG1DIgRLJSekjH X-Received: by 2002:aa7:dc57:: with SMTP id g23mr4118234edu.352.1591825503259; Wed, 10 Jun 2020 14:45:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1591825503; cv=none; d=google.com; s=arc-20160816; b=KuZvca1a6AMuJjp98xVven6ZgqA71Qo2Tm22tWDAHZwGujLYg8MjbIPGhsAFiGy8va rX3qemf3m+dVrkZvHMYP6KsXwWyW6dICXVOmEgv39BkTzMDs3nK1j8dAf2WGr2CI5gDT vgIeM0jaVCSdAekgidYL+7ShxfWnYUWbNbuL8R6C1uGR1EDrSvQRS/eR5jC6ZyB6O71q wRDhdvS1oFazloxqmIRbz1lI44Q2QI8qN6s6VR5jdAyUiaYtIkFFo5M6gfCgyjypxGK5 V6a0Ph16QIQokb8GgaSpn3+b/fgDt3YJlYOWcHjZBgLxR4pEY81R7RlHHj3SWcCUejK9 GpxQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:user-agent:in-reply-to :content-disposition:mime-version:references:message-id:subject:cc :to:from:date:ironport-sdr:ironport-sdr; bh=BMXfAn++CGwm1ShuAg07kBjJ72Hk4YHokWdsg0xQVYY=; b=i9GEixe8z/7zHYHfvxx8p6vrWJ1GMeVUE3/580WxWnNaUk+syF4T6Fudrgswpt7eYf vrdpSBr0FaYZXAwYKDP2WrHj/cM6eQ/zlP1mWAPeJRbCArx/W4sxCSsKvVQ24NrCnFHG k4J4feJCe54hqePV4CP95rmRNpdKGxJOdydMnDoGFiAt2jYEekUulfOrKPuz4+4RvEeY 9zT/2LIcNNeBQh6KMCI7FnwMBqUT23IZ8AG9aDKl2xQjQPV8ZG6HBgnl+wyAc4FUDXNK RV/OajZrSaKgpD3NrpW1sZQgScHzQTw0J7uHYcXa1Czo/eVZYJOwqQuOoQIRgneAXA3J 1Wrw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t9si471631eds.213.2020.06.10.14.44.40; Wed, 10 Jun 2020 14:45:03 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726374AbgFJVmd (ORCPT + 99 others); Wed, 10 Jun 2020 17:42:33 -0400 Received: from mga02.intel.com ([134.134.136.20]:57876 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726134AbgFJVmd (ORCPT ); Wed, 10 Jun 2020 17:42:33 -0400 IronPort-SDR: 21ohFHxs3cuTxfb8nNFa8tRH1WuWX4xZLWzqvwQEi/3kDCo3QS9PmGKKgmEhMyZ7ITcEJ2u5fr MbIMnoEn6w7g== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 10 Jun 2020 14:42:32 -0700 IronPort-SDR: +V0QIYpPLZKdKGrCFZmSwGosMNWEVNmio3RcOy+ukMeFOklxh3hugwgCGopqwSi3z7ZIDg/poL seBJteskvaMQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,497,1583222400"; d="scan'208";a="473487394" Received: from sjchrist-coffee.jf.intel.com (HELO linux.intel.com) ([10.54.74.152]) by fmsmga006.fm.intel.com with ESMTP; 10 Jun 2020 14:42:32 -0700 Date: Wed, 10 Jun 2020 14:42:31 -0700 From: Sean Christopherson To: Thomas Gleixner Cc: "David P. Reed" , Ingo Molnar , Borislav Petkov , x86@kernel.org, "H. Peter Anvin" , Allison Randal , Enrico Weigelt , Greg Kroah-Hartman , Kate Stewart , "Peter Zijlstra (Intel)" , Randy Dunlap , Martin Molnar , Andy Lutomirski , Alexandre Chartre , Jann Horn , Dave Hansen , linux-kernel@vger.kernel.org Subject: Re: [PATCH] Fix undefined operation VMXOFF during reboot and crash Message-ID: <20200610214231.GH18790@linux.intel.com> References: <20200610181254.2142-1-dpreed@deepplum.com> <878sgufvvm.fsf@nanos.tec.linutronix.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <878sgufvvm.fsf@nanos.tec.linutronix.de> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Gah, I typed too slow :-) On Wed, Jun 10, 2020 at 11:34:21PM +0200, Thomas Gleixner wrote: > We have exception fixups to avoid exactly that kind of horrible > workarounds all over the place. > > static inline int cpu_vmxoff_safe(void) > { > int err; > > asm volatile("2: vmxoff; xor %[err],%[err]\n" > "1:\n\t" > ".section .fixup,\"ax\"\n\t" > "3: mov %[fault],%[err] ; jmp 1b\n\t" > ".previous\n\t" > _ASM_EXTABLE(2b, 3b) > : [err] "=a" (err) > : [fault] "i" (-EFAULT) > : "memory"); > return err; > } > > static inline void __cpu_emergency_vmxoff(void) > { > if (!cpu_vmx_enabled()) > return; > if (!cpu_vmxoff_safe()) > cr4_clear_bits(X86_CR4_VMXE); This bit is wrong, CR4.VMXE should be cleared even if VMXOFF faults, e.g. if this is called in NMI context and the NMI arrived in KVM code between VMXOFF and clearing CR4.VMXE. All other VMXOFF faults are mode related, i.e. any fault is guaranteed to be due to the !post-VMXON check unless we're magically in RM, VM86, compat mode, or at CPL>0. > } > > Problem solved. > > Thanks, > > tglx