Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp383589ybl; Fri, 23 Aug 2019 02:17:29 -0700 (PDT) X-Google-Smtp-Source: APXvYqwvCZ42N/SZSjAGEFT/oaZbNXnzuDlSm07soLkLMXqeSgio5F1htEqO7UQLskDofRDh2g+A X-Received: by 2002:a17:902:7c12:: with SMTP id x18mr3639628pll.123.1566551849604; Fri, 23 Aug 2019 02:17:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566551849; cv=none; d=google.com; s=arc-20160816; b=lUkG4K1pwYqaNTTOLxWe7ts9zENZ7BxQUlXd7JVGFZRGxFeQVqbFhQD2o3eZgWP8Y8 /Dvqyxwx0vNXxwAXb6xjqThAO4m7hUtVF0Rkz4umSYn0yj8oykOqkv9ryu7MoE0zEzPR 86uTjS+8PBAWrABS83zxrjma+LyU4HnXHKBVLhCdMe6vTFcJtarWExhOE/5JMI0Jgcx5 TjnrYfhmMZBNSeUiIRVAeSEOFbVl9iSAj5TpRPEo39/H8iNxmbM0ZR5J4jYWmVnCr7gt RPe38Go3nA4wHHDh7vH4xd+IhMQxmgkAzThNA6ypaqWKACRKQx6q4wSPSVoMMVAzNvuO wItw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=UrLhsMA6wzULTkDLEn7rouxl3yMaJxDfD/3lsWW8TTE=; b=J2BOvZhvBOIeiuv/9YgJpD4/gijXnPtYJ0F0T19zLDFCqKpMX9tm1kPvV+bnuwVSbd qRJ+W0cRdboXDG1OFdyM5GFufGRchQq/S48nh+aG6EOv270SwtQtsRDXfMzK297UYVQp rvMhUsEdh1XRYnE0hl3NkOhh/VzSmBdoz2nEkzq0Ud9K+i/REOmctUvX/mj3clieUwtV 128YG8wtq0SN0Tb8iElkaR1nAc0OIuPTL61eU7Pz9wzoZPwJ9fI2xNcDYZAfsPNWWRbc ZohdQK9IjwYtsaHcjIk0qmFaD17su+WuM25qV4U72m/E6CiFIzU9xc//kWASKOQMgfIQ 0pNg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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. [209.132.180.67]) by mx.google.com with ESMTP id z7si1957787pfz.154.2019.08.23.02.17.14; Fri, 23 Aug 2019 02:17:29 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 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 S1732665AbfHWBHL (ORCPT + 99 others); Thu, 22 Aug 2019 21:07:11 -0400 Received: from mga01.intel.com ([192.55.52.88]:37991 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1732535AbfHWBHL (ORCPT ); Thu, 22 Aug 2019 21:07:11 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 22 Aug 2019 18:07:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,419,1559545200"; d="scan'208";a="186733483" Received: from sjchrist-coffee.jf.intel.com ([10.54.74.41]) by FMSMGA003.fm.intel.com with ESMTP; 22 Aug 2019 18:07:10 -0700 From: Sean Christopherson To: Paolo Bonzini , =?UTF-8?q?Radim=20Kr=C4=8Dm=C3=A1=C5=99?= Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RESEND PATCH 00/13] KVM: x86: Remove emulation_result enums Date: Thu, 22 Aug 2019 18:06:56 -0700 Message-Id: <20190823010709.24879-1-sean.j.christopherson@intel.com> X-Mailer: git-send-email 2.22.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Rework the emulator and its users to handle failure scenarios entirely within the emulator. {x86,kvm}_emulate_instruction() currently return a tri-state value to indicate success/continue, userspace exit needed, and failure. The intent of returning EMULATE_FAIL is to let the caller handle failure in a manner that is appropriate for the current context. In practice, the emulator has ended up with a mixture of failure handling, i.e. whether or not the emulator takes action on failure is dependent on the specific flavor of emulation. The mixed handling has proven to be rather fragile, e.g. many flows incorrectly assume their specific flavor of emulation cannot fail or that the emulator sets state to report the failure back to userspace. Move everything inside the emulator, piece by piece, so that the emulation routines can return '0' for exit to userspace and '1' for resume the guest, just like every other VM-Exit handler. Paolo/Radim/Vitaly, apologies for the resend, forgot to cc kvm, lkml and reviewers. Sean Christopherson (13): KVM: x86: Relocate MMIO exit stats counting KVM: x86: Clean up handle_emulation_failure() KVM: x86: Refactor kvm_vcpu_do_singlestep() to remove out param KVM: x86: Drop EMULTYPE_NO_UD_ON_FAIL as a standalone type KVM: x86: Don't attempt VMWare emulation on #GP with non-zero error code KVM: x86: Move #GP injection for VMware into x86_emulate_instruction() KVM: x86: Add explicit flag for forced emulation on #UD KVM: x86: Move #UD injection for failed emulation into emulation code KVM: x86: Exit to userspace on emulation skip failure KVM: x86: Handle emulation failure directly in kvm_task_switch() KVM: x86: Move triple fault request into RM int injection KVM: VMX: Remove EMULATE_FAIL handling in handle_invalid_guest_state() KVM: x86: Remove emulation_result enums, EMULATE_{DONE,FAIL,USER_EXIT} arch/x86/include/asm/kvm_host.h | 10 +-- arch/x86/kvm/mmu.c | 16 +--- arch/x86/kvm/svm.c | 41 ++++------- arch/x86/kvm/vmx/vmx.c | 92 +++++++++-------------- arch/x86/kvm/x86.c | 127 +++++++++++++++++--------------- arch/x86/kvm/x86.h | 2 +- 6 files changed, 121 insertions(+), 167 deletions(-) -- 2.22.0