Received: by 10.213.65.68 with SMTP id h4csp737387imn; Wed, 4 Apr 2018 06:30:01 -0700 (PDT) X-Google-Smtp-Source: AIpwx48+pMr0eyl6Zqr7J+CnJo7utAHtaXBdBvQtSuDor6BqOjqsHJBcW2ybzf6U9UFWjCdkMeQn X-Received: by 10.99.120.3 with SMTP id t3mr11877079pgc.56.1522848601530; Wed, 04 Apr 2018 06:30:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522848601; cv=none; d=google.com; s=arc-20160816; b=FIxuKRy1WUF6XOC2fd9bTVn4eYir5CbLm00ucSqYYciZ07q+YXMz9KhqTy9xb/ygAt 9Y/D8Av8Nt5eNdg1TxpreTVmLXlkn4MVdIonnhBCZ+C+3kMScqlF9zaeyBaO3zlY8FVw F6M5QQAVEs2FpMPxJZZkGWkbcI/UAOlNr0QZeRVsGS+xPDnT3vl52hLbkW9JSgG+QEk3 i7Da080MaRHrqeA7Glv2eamA727bXhpnWFkUoeC+tQwmnjyCCzlvr3+ftdXqtwK26ol4 zCW4wEp+Z7jECRU7W9DvRm8/xC4uwri+kd2BEDCsVOCAFJJJvTW202RxFKP/J840gk4q t8hA== 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:cc:to:subject :message-id:date:from:references:in-reply-to:mime-version :dkim-signature:arc-authentication-results; bh=UcVbPT5esDrgEXTkVtipfxZohtzrR19ORifWd1DgBMU=; b=hVR8NRKFwJypyMR1hy2cux6aRnFqqCoyerZZtJf9Wm8wSFPcS/DX36qq784D4Dbzms LgrFPkQnhLU1swI4hvJaYq4bVoc3LKG4aeOyOy41pQ+6HwplMOVRPSNuhwUdC31Bsf4c a4nkR4LUgx2GYHU0RwIIQhQ6aA6q4ZETaVoiNR928kTofsGIZ5SdWC6ns2sdW00i3ghr dajezxnh0Z9nHmsz/lCXesnqoQFiHmLoVPPoNQwk1r/JIsWJJTeQgHJzmYg1STbxyZlc AtvYrTE/gf36wTAAPNvZSzJv7oIgETWPwcaUMNoJeU008+ahV37+aEC3jgh2d+tMytIM R8Sg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=SnAYpz3P; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t5-v6si1075794ply.616.2018.04.04.06.29.47; Wed, 04 Apr 2018 06:30:01 -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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=SnAYpz3P; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751414AbeDDN2b (ORCPT + 99 others); Wed, 4 Apr 2018 09:28:31 -0400 Received: from mail-ot0-f196.google.com ([74.125.82.196]:42162 "EHLO mail-ot0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751155AbeDDN23 (ORCPT ); Wed, 4 Apr 2018 09:28:29 -0400 Received: by mail-ot0-f196.google.com with SMTP id h55-v6so21782020ote.9; Wed, 04 Apr 2018 06:28:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=UcVbPT5esDrgEXTkVtipfxZohtzrR19ORifWd1DgBMU=; b=SnAYpz3PauqkBpjL4eKiwqvsqHekomj9Ut8mWzDGo+6W85mGEbc56mfq+4QitDbk16 hpWUQiA0Xo83vAJfSqATdVvH0mixeM4O3EYwlV+zEVQpgsjtxXx1mNBeEQKb/C+UvxML rPkUxog9em+d1tcFU5Oz4mBZjXpPDgtbKM14qI/GhoI8CFDx8Gr28KxeQLUw5eFke95k q6JTtulc9MycZFDsWaVSfVGrbLSPWG0//jlqTq/iaRX2jGikWnz9sOj38Hf3iA9s3KY+ hIRF2ihRV8Zfm86lu6f64UWpwO+Vn2Hyjegj+KBilv39uAjuvta9nK1pvzSUADCH7I9c UKFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=UcVbPT5esDrgEXTkVtipfxZohtzrR19ORifWd1DgBMU=; b=S6HpXToI0yJQ3z2oUgalnUn946DY0GayJw3qoKxUS5Mbsbf9b+OS+AvsHr/ecaWZU6 r1Ge4Z4Xz+++ZtUZRKl1CNHFpIDZrKZPj+I2tStv/v5I1PsNQDinZq9imf/HPsW19mcI 8tZ1NxTb1R52KPMvv784GBrPq0HReFICkqP1/EcK3g8XY7WJKUhzdOoawUmZRaVeSwDf DKKN3Piu88n0R1gZ4s+OYC7bhiaJcGTLa2jaoQOY6jcLjDDzo7Wm4Me5hVx0zQVFuWUt Xtqp11ldPvujTmlecEQxGqSa+VuGfIzzR3Z+YrEVWHth0HY0p2adT0PqO6Z7I9MLnoLL EyAw== X-Gm-Message-State: ALQs6tB1x915rWSW5K0NM3l3cFATIiiUy9vnIG8dTxlU1fynDxrIOIAK BF5K+J3KrzljD7LzVYDzfNQu1uQ4GZ/Wmjb4yLg= X-Received: by 2002:a9d:2874:: with SMTP id h49-v6mr11599694otd.2.1522848509309; Wed, 04 Apr 2018 06:28:29 -0700 (PDT) MIME-Version: 1.0 Received: by 10.74.210.78 with HTTP; Wed, 4 Apr 2018 06:28:28 -0700 (PDT) In-Reply-To: <9d68b1b4-04e6-46d6-70b4-6ebcb0a0c4aa@redhat.com> References: <1522798129-14588-1-git-send-email-wanpengli@tencent.com> <1522798129-14588-2-git-send-email-wanpengli@tencent.com> <9d68b1b4-04e6-46d6-70b4-6ebcb0a0c4aa@redhat.com> From: Wanpeng Li Date: Wed, 4 Apr 2018 21:28:28 +0800 Message-ID: Subject: Re: [PATCH v5 1/2] KVM: X86: Introduce handle_ud() To: David Hildenbrand Cc: LKML , kvm , Paolo Bonzini , =?UTF-8?B?UmFkaW0gS3LEjW3DocWZ?= , Andrew Cooper , Konrad Rzeszutek Wilk , Liran Alon Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2018-04-04 19:54 GMT+08:00 David Hildenbrand : > On 04.04.2018 01:28, Wanpeng Li wrote: >> From: Wanpeng Li >> >> Introduce handle_ud() to handle invalid opcode, this function will be >> used by later patches. >> >> Reviewed-by: Konrad Rzeszutek Wilk >> Reviewed-by: Liran Alon >> Cc: Paolo Bonzini >> Cc: Radim Kr=C4=8Dm=C3=A1=C5=99 >> Cc: Andrew Cooper >> Cc: Konrad Rzeszutek Wilk >> Cc: Liran Alon >> Signed-off-by: Wanpeng Li >> --- >> arch/x86/kvm/svm.c | 9 +-------- >> arch/x86/kvm/vmx.c | 10 ++-------- >> arch/x86/kvm/x86.c | 13 +++++++++++++ >> arch/x86/kvm/x86.h | 2 ++ >> 4 files changed, 18 insertions(+), 16 deletions(-) >> >> diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c >> index f66fc2e..e0a3f56 100644 >> --- a/arch/x86/kvm/svm.c >> +++ b/arch/x86/kvm/svm.c >> @@ -2676,14 +2676,7 @@ static int bp_interception(struct vcpu_svm *svm) >> >> static int ud_interception(struct vcpu_svm *svm) >> { >> - int er; >> - >> - er =3D emulate_instruction(&svm->vcpu, EMULTYPE_TRAP_UD); >> - if (er =3D=3D EMULATE_USER_EXIT) >> - return 0; >> - if (er !=3D EMULATE_DONE) >> - kvm_queue_exception(&svm->vcpu, UD_VECTOR); >> - return 1; >> + return handle_ud(&svm->vcpu); >> } >> >> static int ac_interception(struct vcpu_svm *svm) >> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c >> index b2f8a70..0f11243 100644 >> --- a/arch/x86/kvm/vmx.c >> +++ b/arch/x86/kvm/vmx.c >> @@ -6436,14 +6436,8 @@ static int handle_exception(struct kvm_vcpu *vcpu= ) >> if (is_nmi(intr_info)) >> return 1; /* already handled by vmx_vcpu_run() */ >> >> - if (is_invalid_opcode(intr_info)) { >> - er =3D emulate_instruction(vcpu, EMULTYPE_TRAP_UD); >> - if (er =3D=3D EMULATE_USER_EXIT) >> - return 0; >> - if (er !=3D EMULATE_DONE) >> - kvm_queue_exception(vcpu, UD_VECTOR); >> - return 1; >> - } >> + if (is_invalid_opcode(intr_info)) >> + return handle_ud(vcpu); > > (maybe different on this branch) isn't "er" now unused? Hmm, It is used in other place of the function handle_exception. > >> >> error_code =3D 0; >> if (intr_info & INTR_INFO_DELIVER_CODE_MASK) >> diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c >> index 7d9a444..1eb495e 100644 >> --- a/arch/x86/kvm/x86.c >> +++ b/arch/x86/kvm/x86.c >> @@ -4840,6 +4840,19 @@ int kvm_write_guest_virt_system(struct x86_emulat= e_ctxt *ctxt, >> } >> EXPORT_SYMBOL_GPL(kvm_write_guest_virt_system); >> >> +int handle_ud(struct kvm_vcpu *vcpu) >> +{ >> + enum emulation_result er; >> + >> + er =3D emulate_instruction(vcpu, EMULTYPE_TRAP_UD); >> + if (er =3D=3D EMULATE_USER_EXIT) >> + return 0; >> + if (er !=3D EMULATE_DONE) >> + kvm_queue_exception(vcpu, UD_VECTOR); >> + return 1; > > I would now actually prefer > > if (er =3D=3D EMULATE_DONE) > return 1 ... Keep the original one I think. Regards, Wanpeng Li