From patchwork Fri Jan 6 01:12:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sean Christopherson X-Patchwork-Id: 39880 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp577721wrt; Thu, 5 Jan 2023 17:18:12 -0800 (PST) X-Google-Smtp-Source: AMrXdXs9eg/IFAqmwQaW5yd+YyO41sRSXVqhzfP8ZlEsfCsDFntAm9EJQHseKddnr277BDxjw4YE X-Received: by 2002:a17:903:32cc:b0:189:129e:92af with SMTP id i12-20020a17090332cc00b00189129e92afmr78144391plr.14.1672967892410; Thu, 05 Jan 2023 17:18:12 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672967892; cv=none; d=google.com; s=arc-20160816; b=etRKsqHNGrQSJrhrJUiYl2b6vr2+3IQvJuRmT0049YSwNDY4z2cmd5MHWxQmNplKb0 bpeSCYpnymxkj6NPcQteSHjHEPqtHv1kpLwqZ1mNEogCcK4SFMSfqXPonivEj0mr2b7U 0b2NMcngFToh2WpUJd1M/3cQrbf3bkfHrg9qLdaJVmWcFKGUrSYLbUlO8dAS5ZAUf34g ++FVCjVsYoeqlUI/y2RuQ6f+Fq+OlklvOT1k31GmAJP5aTUX/2laMV2OPtmjk48O3av6 OR1PIsL8Ysznwqq0U8uDrBnQ7if6uGyqHPhcsbc+e/C5KjnariTIqBv4+5ZQhFdO+FpW MnUg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:reply-to:dkim-signature; bh=7iPI0dl/ko2Lo6A5R8RXBXgr3khsxs/MyGTJ8pdxMPM=; b=nTMGfQWlbDHsdhPPz/lOQbQFbgpJlNusJtEg+2tx4fkuASEBCv6lIBMOJSaXB0jG/J Sy9cOK0/+jPWCa+zqn/T1X6bHLnMYlQRtUoYB4n3hH1BcGk7wca+Y/yCcM/9U5rnKPni fz+nAhYt/UnyXwg9i+7GWzpcnR9NkS/3uimINcGLhABSG9wcHU/13nLbqFzfgjhFInRd g3VNWkhVmPc7SBVgfUNs5htwbeUH7kxGWfNHi9VpmlZhezBtcXJ/oBicAJarfOkHUDK2 zXTMGF62qjgL7qQhz+zECkSswI1F3oMJttGkrE11UKv9FGIp7XdL7AGasGUk3QoYCiLu 4nqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=ZaSgs0lS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f68-20020a636a47000000b004794d65bc1esi37937491pgc.399.2023.01.05.17.18.00; Thu, 05 Jan 2023 17:18:12 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=ZaSgs0lS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=google.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233322AbjAFBQr (ORCPT + 99 others); Thu, 5 Jan 2023 20:16:47 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41028 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231882AbjAFBQH (ORCPT ); Thu, 5 Jan 2023 20:16:07 -0500 Received: from mail-pf1-x44a.google.com (mail-pf1-x44a.google.com [IPv6:2607:f8b0:4864:20::44a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DAA573E86F for ; Thu, 5 Jan 2023 17:14:11 -0800 (PST) Received: by mail-pf1-x44a.google.com with SMTP id ct7-20020a056a000f8700b00582e67e255bso51206pfb.9 for ; Thu, 05 Jan 2023 17:14:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:from:to:cc:subject:date:message-id:reply-to; bh=7iPI0dl/ko2Lo6A5R8RXBXgr3khsxs/MyGTJ8pdxMPM=; b=ZaSgs0lSr/JJODEuSDEI4kPBIyYKk9ZEyKSnyX14YyGd+KcacGTqLZcQzCGgZE1j/6 NhleuIjiv89JqbxHeQJ2Fprh/hJA77EhZiE7Un9s7rlCZWL3wpLO7HF3MQmyLZf7y4Ey VcOQdJzEVe7LplFmBqKjTZykJBAlohsByvNNW9lasR6poy+KaKwQfCauHCUg8lk2GuCr STJy0HpuTrmVNyrlm//D66UZkS31Zf8sJ865YAvoNzjGqsLiiU9H/LbsQC4gJDvKi18C ZEIF2PUBAPFwzWPsCyqVAYSubqlxyCUI3MWPQbqMACZP+SDYU3Zh1jblTcAvddN2fd5p Qc0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:reply-to:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7iPI0dl/ko2Lo6A5R8RXBXgr3khsxs/MyGTJ8pdxMPM=; b=GvdWmCzCbkjSCVgJv4ryNUAD8zZ/jBEmV1dPyT/tSQpBRu2ELtbhl5W+3PdYnGlMB5 Q/bqI7wPC1wuuRHquOB+qUUx2DDWjRGXsjQiq8URuCynSLDgjqSE6AkmqKKGmxGpBgG4 k0vgN98ppy0G2VH293ETE1F6oTnxsI2GrAkSkmFY8eQybLC/+fIB6ibVNFGW21FZqcR+ 687r0yVcKHML94hjyx4c4F5B8bL98Jqmantm4B8RR62wEbAGW4AW5xi10ocaFRRb+XAs apEw1vy2gIuEAvMZxMUdHPMKAEGTTr9/a86+oSDNH1TfpqyNyZMWX/NXedxnMPJTMbM6 lO2g== X-Gm-Message-State: AFqh2krKmsRdm2BunbWouMd+sAymGatr6dhzTnIzpJjP3QbKvFQCJZ/C ScXz+BUnKH9Kq3OgXYrLVX153smD5q4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90b:3604:b0:219:d1eb:b8a1 with SMTP id ml4-20020a17090b360400b00219d1ebb8a1mr4230658pjb.174.1672967636674; Thu, 05 Jan 2023 17:13:56 -0800 (PST) Reply-To: Sean Christopherson Date: Fri, 6 Jan 2023 01:12:58 +0000 In-Reply-To: <20230106011306.85230-1-seanjc@google.com> Mime-Version: 1.0 References: <20230106011306.85230-1-seanjc@google.com> X-Mailer: git-send-email 2.39.0.314.g84b9a713c41-goog Message-ID: <20230106011306.85230-26-seanjc@google.com> Subject: [PATCH v5 25/33] KVM: SVM: Always update local APIC on writes to logical dest register From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini Cc: kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Alejandro Jimenez , Maxim Levitsky , Suravee Suthikulpanit , Li RongQing , Greg Edwards X-Spam-Status: No, score=-9.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,USER_IN_DEF_DKIM_WL autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754233980500722407?= X-GMAIL-MSGID: =?utf-8?q?1754233980500722407?= Update the vCPU's local (virtual) APIC on LDR writes even if the write "fails". The APIC needs to recalc the optimized logical map even if the LDR is invalid or zero, e.g. if the guest clears its LDR, the optimized map will be left as is and the vCPU will receive interrupts using its old LDR. Fixes: 18f40c53e10f ("svm: Add VMEXIT handlers for AVIC") Reviewed-by: Maxim Levitsky Signed-off-by: Sean Christopherson --- arch/x86/kvm/svm/avic.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index 1fd473a57159..144e383a4c5d 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -573,7 +573,7 @@ static void avic_invalidate_logical_id_entry(struct kvm_vcpu *vcpu) clear_bit(AVIC_LOGICAL_ID_ENTRY_VALID_BIT, (unsigned long *)entry); } -static int avic_handle_ldr_update(struct kvm_vcpu *vcpu) +static void avic_handle_ldr_update(struct kvm_vcpu *vcpu) { int ret = 0; struct vcpu_svm *svm = to_svm(vcpu); @@ -582,10 +582,10 @@ static int avic_handle_ldr_update(struct kvm_vcpu *vcpu) /* AVIC does not support LDR update for x2APIC */ if (apic_x2apic_mode(vcpu->arch.apic)) - return 0; + return; if (ldr == svm->ldr_reg) - return 0; + return; avic_invalidate_logical_id_entry(vcpu); @@ -594,8 +594,6 @@ static int avic_handle_ldr_update(struct kvm_vcpu *vcpu) if (!ret) svm->ldr_reg = ldr; - - return ret; } static void avic_handle_dfr_update(struct kvm_vcpu *vcpu) @@ -617,8 +615,7 @@ static int avic_unaccel_trap_write(struct kvm_vcpu *vcpu) switch (offset) { case APIC_LDR: - if (avic_handle_ldr_update(vcpu)) - return 0; + avic_handle_ldr_update(vcpu); break; case APIC_DFR: avic_handle_dfr_update(vcpu);