Received: by 2002:a05:6358:bb9e:b0:b9:5105:a5b4 with SMTP id df30csp445160rwb; Fri, 2 Sep 2022 17:37:06 -0700 (PDT) X-Google-Smtp-Source: AA6agR6DzTOjGpvkoR+n90NzQNV7aPI3wEwnhkqfPeErVg5Rf8Tv7MRJDL0pQP1gcpOGfhv8BRzt X-Received: by 2002:a17:906:e9b:b0:730:a6a1:9fc9 with SMTP id p27-20020a1709060e9b00b00730a6a19fc9mr28757306ejf.601.1662165425998; Fri, 02 Sep 2022 17:37:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662165425; cv=none; d=google.com; s=arc-20160816; b=vhIe9bzeAvSX+eHb6emGDoxamS1Ykvq7UZ/UxaiAFtFtNfi888ZYDuft7Zzpzx+soo 8NXjTJo6Pzf/rvy9S0N8kO5Dbek9KDg/+saR7ALOug7A18PjRObqNNqzwMs6tEn1t0/x nmVx9vihue4vf+EaXW6Fj89W6liqJA7pwzYjPdvr/9qEQvHgNrTroGVm32y38GGXTmS5 KgQrFtsbYF5UPgL/dWcW8WaE53fsEPr8bQMC2+TRvMGl8WXfpqDR3yR4Wld3hPjUntnM gYPBONgghCBRzw8lwAYJU3AJ2dTUD1Ewyvsdaa1hFziZoXNS15qkRyhK/qr2EnK9jgWE 7+NA== 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=FKxxPsJ5vR3fIywfmzwGgyolr5i3fnsaWf12rApRz8g=; b=itfoIDzaoHBfcRFoxmCjKpiQpt8vee4+6Bt917/GxrdlQylIhl2X3G73C9Yum0t01k dEAepIDbKO5aiulB8Pk5t5DfHAl+JDqTlAMcjanQf2ARb+8ri9aZbc+abO/Kn4fEc/48 XPb316u76OlMREC+cEgQR2aSzOuiE2vKytlKTd12KlYIyprE27QgrZd9Cn6ZwV/sIuf9 ntiQzyxz5PByW/qEOWi0gpltca6c/YCQg4cY6Ckusbt8YwlxXovAJ/0juIyocbgNKVNT UH86rLvtwnRySB0WEJusHpcXD5zI3RC00SgyuL0Ca0cTSxN4lN1IyI5Qb7xoOb6GsmLM TJkA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=UXaApoi5; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id dp21-20020a170906c15500b0073832d0ce04si2828550ejc.745.2022.09.02.17.36.40; Fri, 02 Sep 2022 17:37:05 -0700 (PDT) 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=UXaApoi5; 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 S231652AbiICAYe (ORCPT + 99 others); Fri, 2 Sep 2022 20:24:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231542AbiICAXj (ORCPT ); Fri, 2 Sep 2022 20:23:39 -0400 Received: from mail-pg1-x54a.google.com (mail-pg1-x54a.google.com [IPv6:2607:f8b0:4864:20::54a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6A02010A9DA for ; Fri, 2 Sep 2022 17:23:30 -0700 (PDT) Received: by mail-pg1-x54a.google.com with SMTP id n28-20020a63a51c000000b0042b7f685f05so1875642pgf.13 for ; Fri, 02 Sep 2022 17:23:30 -0700 (PDT) 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; bh=FKxxPsJ5vR3fIywfmzwGgyolr5i3fnsaWf12rApRz8g=; b=UXaApoi52dJO+xyTKxC2+2kg/UewN03QjIy0Nd0nJst0xu5IAzECG7a1aK2lsqi67I qpECMyZxVre85JIU9pG3CirR125Baq1NfyEw4FlwiAN1L1bPZaZDmaJGj3jGonnXwxyn p3KeAf2NeBH5tMBEbK4yD9DHpywWkfxBbrSbeAisDgRjgN54EgbraREJQYyI8bzdbt/e QTIGTw+jkNYv+Ze3ETmbB9LLj7+369lqqWSU/aEHf6UoB1XlXcpZvu03o7kUUIjKb/vT UIgmfZQY0s1tpARNcMc+NeJtMAAG7VsMM/3+C/BDQJ2xcCvo2q1rO2lRgpbIrHzmUNWY cMxQ== 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; bh=FKxxPsJ5vR3fIywfmzwGgyolr5i3fnsaWf12rApRz8g=; b=eXC0gkaL5guOIDj1Cp5kMpEDRbjklw6bx6P76lyDrkNCszCfOISzEDmV/vjlX2mXzE VDKqNVxrtWpu6Ivfp+VFOXCWMWWjNrwYDMIvu4bBPotNr+qKdqqf8I356CEmlD22nXKM t3Ou4qyqa9VCoXpEXMl2N+sRLxrXRjs2PtIl8RMBxhYvlMhhJBdLIbNwrdUS3Cof/7eC 9NKEl7sU7gwij980hl26/eDg1r3MhoEX80wSKmKlFy6hTglKpNVdP3U1KwTMmU6szaMQ 7i2sHV/ojFMudir8Gi3/5BWDNNPfTG5YzO8/Ayqhm5ZEaL7X9NHjQqyVxtxQNPiXyBiK UOww== X-Gm-Message-State: ACgBeo2peJLAPiucyhypkJehtB9EmNsO1kkMgmQApXZUE45gJsIGVz5P tmAlGAZOWm1F0mM4Ull9AKnQ1g1N3Ws= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90a:e558:b0:1fb:c4b7:1a24 with SMTP id ei24-20020a17090ae55800b001fbc4b71a24mr30906pjb.1.1662164609500; Fri, 02 Sep 2022 17:23:29 -0700 (PDT) Reply-To: Sean Christopherson Date: Sat, 3 Sep 2022 00:22:49 +0000 In-Reply-To: <20220903002254.2411750-1-seanjc@google.com> Mime-Version: 1.0 References: <20220903002254.2411750-1-seanjc@google.com> X-Mailer: git-send-email 2.37.2.789.g6183377224-goog Message-ID: <20220903002254.2411750-19-seanjc@google.com> Subject: [PATCH v2 18/23] 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, Suravee Suthikulpanit , Maxim Levitsky , Li RongQing Content-Type: text/plain; charset="UTF-8" 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,T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL autolearn=unavailable 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 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") 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 efb0632d7457..456f24378961 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -600,7 +600,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); @@ -609,10 +609,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); @@ -621,8 +621,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) @@ -644,8 +642,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); -- 2.37.2.789.g6183377224-goog