Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp104135rwb; Fri, 30 Sep 2022 18:17:30 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7BFn53BDNokGl8rzUZSdzFPRpICwZQMvnaFMLG3X/azr6KhyJkWkoPPvboOVk2KfaVTpoM X-Received: by 2002:a17:907:6d02:b0:781:c741:ce0f with SMTP id sa2-20020a1709076d0200b00781c741ce0fmr8329711ejc.762.1664587050310; Fri, 30 Sep 2022 18:17:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1664587050; cv=none; d=google.com; s=arc-20160816; b=fdfotgNM/fRfN8Q328UEcvgv/xhKnxmfHZZUT1HwnVcw/ZLbMPrnycSUjMTL8fRYhB JYNMYudqsg82vj7dnS8rLsfXWNhmBZCnamohRgDY+0f2R8it3+3hv5LmA66n8kZQzfYW hcU5UeZM7AdW3YSpD5sumFqtfdl++/JAezrtKIw1CRBoXj8JEZHwc+HeVmS0bGGAkrhr zf5WHmT9iGFo/0xkLU7Vw/sDuus3PVLo+T87QZoDE5AjtZMpDuZPaCdPaqmkYTX6sH+U g2b0PDmnTZwQBXSvz/Xv7KUUeZs7jra45jTfae9iZyAJbipJ4fEQ796V6nzGWNn/RZYO aJZw== 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=ImEFAENnzskoKsyXGbezKFbfsi23WTJyFD4CX9MnaEI=; b=vHqsS3lH/8te13rS9E21xTzQOsls7kvP87Zl0l5cVN+41mPNH8Cfmuuaf04oH2+xk2 QM4Ic71UXiZ3zH0MNL2wVcdzXTUMk2v7ab/tKLdunAI0T4+TkScywAWTiGC8usKWTenY acH3qC52soni6VZOGYNk7eKcXQXvcfMhM7KID4iDblSVCv4cIPJnCAj4fYA16QrDV0ki 3wLrSW43xl2l3tIuVy9XImFGYb6CpehW6BO110jTjzFY8bhFQ5AaMU3cnH+Wo6ThHS1Q gJ0CYMLjiPKryVNn4j+AYKGARpV1GOshewtMmJomw/BZ9kMxhf8Hy0QewdcoKPyh2ut4 cFYA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=oJrKz+f4; 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 cw8-20020a170906478800b00781c4c84c00si2396799ejc.531.2022.09.30.18.17.05; Fri, 30 Sep 2022 18:17:30 -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=oJrKz+f4; 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 S233081AbiJABDP (ORCPT + 99 others); Fri, 30 Sep 2022 21:03:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40566 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232825AbiJABC3 (ORCPT ); Fri, 30 Sep 2022 21:02:29 -0400 Received: from mail-yw1-x114a.google.com (mail-yw1-x114a.google.com [IPv6:2607:f8b0:4864:20::114a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B859147CF5 for ; Fri, 30 Sep 2022 18:00:22 -0700 (PDT) Received: by mail-yw1-x114a.google.com with SMTP id 00721157ae682-355ece59b6fso39428007b3.22 for ; Fri, 30 Sep 2022 18:00:22 -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=ImEFAENnzskoKsyXGbezKFbfsi23WTJyFD4CX9MnaEI=; b=oJrKz+f4QiJ3/5je4SGsdwTRQ/Y/8nnEDBVDtGzAMRDyHUe9K/4Q9DVH+kl34nMYCm aBgiPgsp2amkDfLoeSj6BIC0XkDKpbaOekubEXk/BjuqcCAm0hSv6Egx95GdpWkaJmFN +woTDE2gUbnoUPBjnUE8l8yF+a1f9EAAEVR/CLcE4dfUP3D8ndScHGZ/A7HjaQ+oFQCI jU+EgNy96yPE4PyuYN2oPpAVFunJqxq9HNcF2GE9EnBmHnB7xURq7IZJvcb1IJbfbOg0 +H2F7GCQEr3fR6FPsV7wEjoEkNHPOfXQ3MLTnuLutigEF2KtqiJva2Um7RcwM5cVFDNE XzQQ== 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=ImEFAENnzskoKsyXGbezKFbfsi23WTJyFD4CX9MnaEI=; b=hdqs7RZ1GN+gfPn2UdLpO5UChYVuKOGSjit3lcEABNImi4Z5kCNsKlCUChEgvWURGF 9OCwatPDtVNHpCPgIWrCG12RLdjRu4upMJkpWZdMu3bOklbsO/agSQHocYn5krqgAO31 kG95CxMyVo606AAZLM4j4KPLXAWq/ywZ2ShMty1zFska97qK++GK/0zsLYZDBRsPNV62 wdPjyodufaKnEBxK/jQ4J+yLB+VMuPzfGlqsyR0YRMp1+cyX9xutuhOwXZvRu/OlIuWd Tpff9WTHpSawAEbgKGGi3DhNqQml2ooqPkkAT5worUj7VhtTCwzP2tjs5c33u3nbQdXY k1fQ== X-Gm-Message-State: ACrzQf0jGgu1lI84mGnM4B4iDkJ70Rhur6TiS/49t8inrWD78DvTrlOu hJCn8EDWbTfTd9l5+aMlhDNg456yRpI= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a05:6902:1507:b0:6af:9e7:f947 with SMTP id q7-20020a056902150700b006af09e7f947mr10803591ybu.649.1664586002589; Fri, 30 Sep 2022 18:00:02 -0700 (PDT) Reply-To: Sean Christopherson Date: Sat, 1 Oct 2022 00:59:09 +0000 In-Reply-To: <20221001005915.2041642-1-seanjc@google.com> Mime-Version: 1.0 References: <20221001005915.2041642-1-seanjc@google.com> X-Mailer: git-send-email 2.38.0.rc1.362.ged0d419d3c-goog Message-ID: <20221001005915.2041642-27-seanjc@google.com> Subject: [PATCH v4 26/32] 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 , 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,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 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 27d5abc15a91..2b640c73f447 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); -- 2.38.0.rc1.362.ged0d419d3c-goog