Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp2275600imb; Mon, 4 Mar 2019 00:29:26 -0800 (PST) X-Google-Smtp-Source: APXvYqwHwyVHbl09wtlGFsw6COSz9mCFJ5Ukj/C3D9GmEVPHVcOqwiRq8R44pmcNm0NxVH4xciFW X-Received: by 2002:a62:503:: with SMTP id 3mr18614475pff.176.1551688166422; Mon, 04 Mar 2019 00:29:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551688166; cv=none; d=google.com; s=arc-20160816; b=q3cHMtrCeBEgczC3+uEAQZDi3C9nWmeSlRa/kAv3Lf794HOBwawPrt4v/8B6pVcyjf D3TjyYjHpcgS+ZOkwGcZqolvpr8kURsk2zteZGTu7Nqh1zOpKdHP8Zdn9KxR2nf0gHhi 879hBYwGd+M2QVe6vFUY5OhT4Uan04OOPSF34p9gRIuob21ZQHz+w26DEjVA7sm8seqD FZYmnKfyQbKRlvGgha/XxpSo9IEEu3wOu8rc/TIleFicRwjedPtD7k80XdjQWlSJ6btc r3PRzAx/qrXFOEnHMFoRzsmf/50aspHzTJwTiM6Jlg3nZFQMG6sx+u+tgwMLhxKvxiE/ R4oQ== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=hTBtPufaZ1/ma7w9LUco6lfAUcNyOWXnp7k7UUM85JE=; b=LJ6WmMGLBBJ6Sf7EGtcSxQ72wW9FmRF37SisIETTMgN6jP6lNqi6PHLwbgnPI4yfBi 70zb1TawAKEW2DPEMO9AQQ9RcbKdAyDC1gBZUZhJ8OBAWGbXdBFoyHmboC1XfRGe8CP6 zM5yWy5uQssKz16fC94YsvrFdw+z8eF375XxTiKIGzwhsHvoJzVSWrKccs67RvGXJwco A4sF/07IqfnB3UVZyEzZZAIZkW03d0+Ngl1n8GXOz5ntVoAmyjrcZOIY1sXE9+c9cZhy 7WecVL6eSq43I+7jgOIcMIH6u1ypYudSbEtI7kqRJDfVJvNqvgJxlfc4oiYLi3xMFHSg kPhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=dQ27U6uv; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t24si4630939pgv.141.2019.03.04.00.29.11; Mon, 04 Mar 2019 00:29:26 -0800 (PST) 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=@kernel.org header.s=default header.b=dQ27U6uv; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727182AbfCDI1B (ORCPT + 99 others); Mon, 4 Mar 2019 03:27:01 -0500 Received: from mail.kernel.org ([198.145.29.99]:49408 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727163AbfCDI04 (ORCPT ); Mon, 4 Mar 2019 03:26:56 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id BF88020823; Mon, 4 Mar 2019 08:26:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551688016; bh=62R3a1UT+N4uyijFIrtuzxDvrgOESHlyY+N20KKBVkA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=dQ27U6uvIvlBK5wGCXi/5bSFEazRDPek8p9HSJmjwy9+nlqTtSwXQwEBM88cBl2pk M5TpQCyiCFmdL3IvN1Q7WgDCwaxbp+qpuvTlmzaAMygERUSica3DytS9Dg/iYW38fe jV4sJiuAAoOPahjckQAIYPjb3mZ693cYyUZeUkb8= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Suravee Suthikulpanit , Paolo Bonzini , Sasha Levin Subject: [PATCH 4.14 42/52] svm: Fix AVIC incomplete IPI emulation Date: Mon, 4 Mar 2019 09:22:40 +0100 Message-Id: <20190304081619.532424243@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190304081617.159014799@linuxfoundation.org> References: <20190304081617.159014799@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit bb218fbcfaaa3b115d4cd7a43c0ca164f3a96e57 ] In case of incomplete IPI with invalid interrupt type, the current SVM driver does not properly emulate the IPI, and fails to boot FreeBSD guests with multiple vcpus when enabling AVIC. Fix this by update APIC ICR high/low registers, which also emulate sending the IPI. Signed-off-by: Suravee Suthikulpanit Signed-off-by: Paolo Bonzini Signed-off-by: Sasha Levin --- arch/x86/kvm/svm.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/arch/x86/kvm/svm.c b/arch/x86/kvm/svm.c index 656ac12f54392..a94beaecd3e02 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -4006,25 +4006,14 @@ static int avic_incomplete_ipi_interception(struct vcpu_svm *svm) kvm_lapic_reg_write(apic, APIC_ICR, icrl); break; case AVIC_IPI_FAILURE_TARGET_NOT_RUNNING: { - int i; - struct kvm_vcpu *vcpu; - struct kvm *kvm = svm->vcpu.kvm; struct kvm_lapic *apic = svm->vcpu.arch.apic; /* - * At this point, we expect that the AVIC HW has already - * set the appropriate IRR bits on the valid target - * vcpus. So, we just need to kick the appropriate vcpu. + * Update ICR high and low, then emulate sending IPI, + * which is handled when writing APIC_ICR. */ - kvm_for_each_vcpu(i, vcpu, kvm) { - bool m = kvm_apic_match_dest(vcpu, apic, - icrl & KVM_APIC_SHORT_MASK, - GET_APIC_DEST_FIELD(icrh), - icrl & KVM_APIC_DEST_MASK); - - if (m && !avic_vcpu_is_running(vcpu)) - kvm_vcpu_wake_up(vcpu); - } + kvm_lapic_reg_write(apic, APIC_ICR2, icrh); + kvm_lapic_reg_write(apic, APIC_ICR, icrl); break; } case AVIC_IPI_FAILURE_INVALID_TARGET: -- 2.19.1