Received: by 2002:a05:7412:2a8c:b0:e2:908c:2ebd with SMTP id u12csp3446764rdh; Thu, 28 Sep 2023 11:52:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEjcM/U+USNIfxYssstgE1nflM/PUe1leoLd9m4go73gjucWUPwUfXj64LNZ6eBZAAtgfYA X-Received: by 2002:a17:902:650d:b0:1c6:11ca:8861 with SMTP id b13-20020a170902650d00b001c611ca8861mr2765255plk.21.1695927160377; Thu, 28 Sep 2023 11:52:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695927160; cv=none; d=google.com; s=arc-20160816; b=ZgQN/N6F4rWNmvHf+8qMkcK2eFva24+ELKb0IWtCpMejmE4Rwi+g1NYoyukdE0E+lk 7n51q7B/lL4FJh7rJ7FkqdWpeZUcgeBnhPfe9kBvj0t0+r0yUSnPqE/8QBus+9IkQ2b7 Ea0uQRfY9GO82fLcgj065iGIzOx5FwK/LppLzsyomPsiocucQkpYj1PTVoZZ5qWE7Koi Pj382EFw08B2jBQEO8VJowc7bSNVGRR6biLnjDMCp3Hs9zupXsp+AFt0UDYMs89oNMuj c49x3dPzGZGHw4XxS5sxxFYr50OF1D5gguF7FMQ2/VEmL7Pr54GsaDCr1gmwzJ8OfgQ3 IYOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Y+xDOUzJP3Y3bm7S22bgnNGRpZTJ9N7w9x7x0py/CUU=; fh=7KlpA4Bjwb9QBszesWchOFreRBW5Vq50Y+lUlai2k4M=; b=kWIXFmhM1uaXgxsp/On/sMkPgMkycWYwHrZqgNAX0jtTfdmWiT5UBcH0pkyRvrMbRh OWJrZ2pkp55GDC3yjrXMn5IVH4G0zAQppwcG0h4H+od5LvxmvaY49bwOBDjQa5trQFIq xf2rFomupat27XPaQGAWBLxER2EEqia9XbMn2C1lnmJ00IP1ocZmRhm3GBzzP0VK6XkG wAbzqOuAi9vuWe1UOKRo3fYn52BROpcAEXGpnVSCMbDr2yd1lCYGXkyrPHA9D9ZJJmUG 5cTXlZmic0fWemdbCPOIe47DQsIS+jkqBuyFSn9KhHTrisD4YETMiOnrRpvBHNbOV+hS Ndiw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jVpJtlYc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from morse.vger.email (morse.vger.email. [2620:137:e000::3:1]) by mx.google.com with ESMTPS id g16-20020a631110000000b00573f7ef60aesi19501571pgl.154.2023.09.28.11.52.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Sep 2023 11:52:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) client-ip=2620:137:e000::3:1; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=jVpJtlYc; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:1 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by morse.vger.email (Postfix) with ESMTP id 7800E83FC3A6; Thu, 28 Sep 2023 10:34:55 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at morse.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231935AbjI1Ret (ORCPT + 99 others); Thu, 28 Sep 2023 13:34:49 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37462 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229478AbjI1Res (ORCPT ); Thu, 28 Sep 2023 13:34:48 -0400 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A82351A2 for ; Thu, 28 Sep 2023 10:34:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1695922452; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=Y+xDOUzJP3Y3bm7S22bgnNGRpZTJ9N7w9x7x0py/CUU=; b=jVpJtlYcgT8tMQ+DRLhKFceALJeYt8IUAHMZ7jnLeQ4C+kQ+j2mg17nsWuaJebiDfxaYsl EMP2is3P/RGgX4U4DBUf6kFM82eqkcN+0Ctv5Q456HTjwClz3b636xUDMTb3m3+8bXqcrH Yei6fGsSVMuSdEnzonLYWrN45ytec10= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-518-HV-dXwYNNUe7OoOnepqTxw-1; Thu, 28 Sep 2023 13:34:10 -0400 X-MC-Unique: HV-dXwYNNUe7OoOnepqTxw-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.rdu2.redhat.com [10.11.54.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 460F429AA386; Thu, 28 Sep 2023 17:34:07 +0000 (UTC) Received: from localhost.localdomain (unknown [10.45.226.141]) by smtp.corp.redhat.com (Postfix) with ESMTP id C356214171CA; Thu, 28 Sep 2023 17:34:03 +0000 (UTC) From: Maxim Levitsky To: kvm@vger.kernel.org Cc: iommu@lists.linux.dev, "H. Peter Anvin" , Sean Christopherson , Maxim Levitsky , Paolo Bonzini , Thomas Gleixner , Borislav Petkov , Joerg Roedel , x86@kernel.org, Suravee Suthikulpanit , linux-kernel@vger.kernel.org, Dave Hansen , Will Deacon , Ingo Molnar , Robin Murphy , stable@vger.kernel.org Subject: [PATCH v2 2/4] x86: KVM: SVM: add support for Invalid IPI Vector interception Date: Thu, 28 Sep 2023 20:33:52 +0300 Message-Id: <20230928173354.217464-3-mlevitsk@redhat.com> In-Reply-To: <20230928173354.217464-1-mlevitsk@redhat.com> References: <20230928173354.217464-1-mlevitsk@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.1 on 10.11.54.7 X-Spam-Status: No, score=2.7 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RCVD_IN_SBL_CSS,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.6 X-Spam-Level: ** X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on morse.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (morse.vger.email [0.0.0.0]); Thu, 28 Sep 2023 10:34:55 -0700 (PDT) In later revisions of AMD's APM, there is a new 'incomplete IPI' exit code: "Invalid IPI Vector - The vector for the specified IPI was set to an illegal value (VEC < 16)" Note that tests on Zen2 machine show that this VM exit doesn't happen and instead AVIC just does nothing. Add support for this exit code by doing nothing, instead of filling the kernel log with errors. Also replace an unthrottled 'pr_err()' if another unknown incomplete IPI exit happens with vcpu_unimpl() (e.g in case AMD adds yet another 'Invalid IPI' exit reason) Cc: Signed-off-by: Maxim Levitsky --- arch/x86/include/asm/svm.h | 1 + arch/x86/kvm/svm/avic.c | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/x86/include/asm/svm.h b/arch/x86/include/asm/svm.h index 19bf955b67e0da0..3ac0ffc4f3e202b 100644 --- a/arch/x86/include/asm/svm.h +++ b/arch/x86/include/asm/svm.h @@ -268,6 +268,7 @@ enum avic_ipi_failure_cause { AVIC_IPI_FAILURE_TARGET_NOT_RUNNING, AVIC_IPI_FAILURE_INVALID_TARGET, AVIC_IPI_FAILURE_INVALID_BACKING_PAGE, + AVIC_IPI_FAILURE_INVALID_IPI_VECTOR, }; #define AVIC_PHYSICAL_MAX_INDEX_MASK GENMASK_ULL(8, 0) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 2092db892d7d052..4b74ea91f4e6bb6 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -529,8 +529,11 @@ int avic_incomplete_ipi_interception(struct kvm_vcpu *vcpu) case AVIC_IPI_FAILURE_INVALID_BACKING_PAGE: WARN_ONCE(1, "Invalid backing page\n"); break; + case AVIC_IPI_FAILURE_INVALID_IPI_VECTOR: + /* Invalid IPI with vector < 16 */ + break; default: - pr_err("Unknown IPI interception\n"); + vcpu_unimpl(vcpu, "Unknown avic incomplete IPI interception\n"); } return 1; -- 2.26.3