Received: by 2002:ac0:aed5:0:0:0:0:0 with SMTP id t21csp2279540imb; Mon, 4 Mar 2019 00:36:50 -0800 (PST) X-Google-Smtp-Source: APXvYqzGagnoRYNnFYYM6cjfOtZYro4/OgBOV8UceGMZFBiFPhuxNdQFRF+dwHwzvQxViqTMx0eo X-Received: by 2002:a17:902:b7c7:: with SMTP id v7mr19015411plz.148.1551688610897; Mon, 04 Mar 2019 00:36:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1551688610; cv=none; d=google.com; s=arc-20160816; b=t0sunCJlRL1abAHSHPITei0DTlpS+gYUornOl6HtG2pOSdKAPyLoUZcdjUbk2fYOZe 34KLq1M6PfrfEaOZ2FSnJSJNREF54xpYvjiCQZLbPK0JcwBz16oT5SlAnExIZlVzwrx2 zmrXztx8vzmJb+C1U8Kt3KLpbmhZgnzwc5pvhq6UV8MNXE8B1zJJgBSsGuVaGyDvqkK8 GXX5oGRu7dLmxMXS/JFNicW/x//zy1kdpgzXm4kriXnZZag0lZg541TvmWIcuZIderfE J7fvmguDsLtFjLwAtPbC3SQClo/jnU3ON9Oagd65XY3dOvQP0dN8o1FfE6A8eVf04oa4 zznw== 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=XyUWZStvMceZw6T5JQRc1TJNXFcAOUjEJ++ADsVPKJk=; b=Y8vXcg2noCVBEUpNjf/jjXDldBL+h/fcD1FFJ/S+vHOC4tNJeXI9jVC22HLzgmfGR3 ys3KNfossdVfHNVg1Z24Ad4ogIIBjJLMWdto7xB9lpbPqEmjlP8NeFxiiIGHYpegBFGf HpEcfdTIdvsp4EGjFSPeIg6JNECU/3Hr7aOIw2tRdd+goMlVN6kTSi95HC1MpbZd5EWB AJkKOJggtax9b94F2o/JUPmbFdI3asd7B39YeRjVKzxRsn9piZYwU63u/Yw+0Y8CKJKX Fgn7GtXx+t7G3Dvxm4Uw6JGgHXvyr/4lQLat9CzHr6IgRRtxar6GIEkw5ig03ptNIQ2M qK/w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=yk1JRY7z; 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 c9si4657645pgi.139.2019.03.04.00.36.35; Mon, 04 Mar 2019 00:36:50 -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=yk1JRY7z; 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 S1728383AbfCDIfB (ORCPT + 99 others); Mon, 4 Mar 2019 03:35:01 -0500 Received: from mail.kernel.org ([198.145.29.99]:42312 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727397AbfCDIe6 (ORCPT ); Mon, 4 Mar 2019 03:34:58 -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 5812220823; Mon, 4 Mar 2019 08:34:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1551688497; bh=tMOO13VPd1UqTMNfVpAebWp1vCtETY2dTynN+l9qZyQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=yk1JRY7z2rfBHwmIDkl58EG1C+WpvUGuJ/KnCgqZ4V1M38lpPIu+Q6HrqvMkcQi5K +cciI8wv0a4DrDWx8H+9lW/HXA/evu+TEJuPuKKp71nHphU5v4PpPg7D4Z4SjhFfr6 scfAl/CzP3yRVb8ex0RILgWKLsZFfb5Ql8jw2N1E= 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.20 64/88] svm: Fix AVIC incomplete IPI emulation Date: Mon, 4 Mar 2019 09:22:47 +0100 Message-Id: <20190304081633.103816649@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190304081630.610632175@linuxfoundation.org> References: <20190304081630.610632175@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.20-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 13baba9d1cc1a..77a9481ce4c49 100644 --- a/arch/x86/kvm/svm.c +++ b/arch/x86/kvm/svm.c @@ -4486,25 +4486,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