Received: by 2002:a05:6358:bb9e:b0:b9:5105:a5b4 with SMTP id df30csp449218rwb; Fri, 2 Sep 2022 17:42:56 -0700 (PDT) X-Google-Smtp-Source: AA6agR74j/4fj6LDTQuR+wBJMxQCJxfRlRmdW3YixzyhJ8UtX93eV1Txjir9vuhtTBJBrJ90G4cW X-Received: by 2002:a05:6402:2884:b0:447:9f63:f969 with SMTP id eg4-20020a056402288400b004479f63f969mr34563150edb.407.1662165775763; Fri, 02 Sep 2022 17:42:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1662165775; cv=none; d=google.com; s=arc-20160816; b=P9negOzWA5T86sU7aGhmKSW5U+71Kpu7Vkg0tNUjj+AXFkyDF2jP/+3pKsC7o+EGRj LLLHbj/HDOmMzmFzu3u9dHiXGc2DOYfFEpHcBtcrqBJL34QOlaeeXK5gRr2Dfg8Pr+vb gigCeQ9LROyV57BB2aI2Oo/8qFBoCGr438V0+xHZ462IEnQRwrAb9Vw6bUwVYQuDuwmU 5n/bfmaOu9LejaADSeQ1b+Wo5GXW18COJWc8GG6MsOYgHsm0EuI8YOEC0EvPJ+eETHsQ LW6/XbJfetjRsfPoNOOdJ0vjF96ZbuK2OXDXsmp+nqSSkDfhs2oP98KZzY885wms94j2 3VPw== 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=sRJGbJUfwvTmIt7TCeDCGPl4C7G33IdwBZhsjLxh4VE=; b=gvWb9vFTumM6z7hYC9nJsh7+Hwjv1JyfT/MzAYHZr7CYOh0iuMrhHAMZWU5b0BwXUG rYSKGMJK99dNRG83Ev6PQ2/4oE8LvO+ybrIKgZYae4N2OfGTyV1jFf6s6GeZI0mwrChw MmfNDwrIhBWbkEybiGpbQ/wscn4p8O5+h7OwVXL/4QayCLXQCHJlkH3orozcgWM2S2bA mVFgGjhxierF8OI1m76MqvYXa0F4PrWBmuJMqaeJm3YIaYWaZC+7PuObn8kgwI6NipHv rBOMfbz+UwTwsK7/Pi5JZRyKj0K7bSsDwa61pjnqH2wlMSLPaswGeL/6w+j2zVUJqCxW Ssjw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=Lrtf7dft; 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 gs42-20020a1709072d2a00b00726b8b2949fsi2853601ejc.698.2022.09.02.17.42.30; Fri, 02 Sep 2022 17:42:55 -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=Lrtf7dft; 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 S231601AbiICAYF (ORCPT + 99 others); Fri, 2 Sep 2022 20:24:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53786 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231411AbiICAXX (ORCPT ); Fri, 2 Sep 2022 20:23:23 -0400 Received: from mail-yb1-xb49.google.com (mail-yb1-xb49.google.com [IPv6:2607:f8b0:4864:20::b49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6DC7AF72C1 for ; Fri, 2 Sep 2022 17:23:22 -0700 (PDT) Received: by mail-yb1-xb49.google.com with SMTP id v8-20020a258488000000b00695847496a4so2761248ybk.19 for ; Fri, 02 Sep 2022 17:23: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=sRJGbJUfwvTmIt7TCeDCGPl4C7G33IdwBZhsjLxh4VE=; b=Lrtf7dftYWdQobVdgIYPY6rFbIW/t3fpvvyqbmyM3pcHzZa84O+5S96zD5KZw3DiEJ vuPjMZQlr2ppg9GuBQEI9CH5Ih8F7Jm6P3e8qC2UoXHEDYk9jAClPlYuAOtWDlVxSpJJ EPdEItdldlbw0Ap4kJzxKdBMkwm8rZJv6mj44abpH1vu88KMUqD/B3DRHBnaT0H4Z3MD VL4+VWw/fxVq2p3ZDZ3iHnkzulp4D4CfOVq74bGwJintlSIzuIdnlMjR4g5wbCuo8oEa NPCHC5ZpSHWUGf+aqxBNOyVCdHWJwD2nbKyLepN/mRL4AXLiWmuL0AIDdX8QA1XBGhz9 uX8g== 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=sRJGbJUfwvTmIt7TCeDCGPl4C7G33IdwBZhsjLxh4VE=; b=cpi992VtjhRagvcDpI6bIvu2/5U+bYaH5s2fANkd1f/32mGL87UH9Fv8CcqcVYZJe4 aQpJlrqS0WhVoOTqfdw1PgrHPw+IFq8HX/twkihkrZmTLgDlbNYnEgOlnXXj9dij019H uRQjOrntAxxwcIAmm68xC2MVxhZCgvTosBQhIBV0MOprlElM0+Pi7ArMsmXlD9aX3tLd UFptdZ0KdfJ5Qj/OF5GDCZjYVH+POIEC6FvCmUX6dQfIietTFt5mouOufoHwARHte6ck d7qQHK2Vtps1j6U3SJbulQW/Rwcy2tgvUnnFYJtNwi+SiaTpYg//s6tCJgdKw2H57hO6 cP0Q== X-Gm-Message-State: ACgBeo0bB/wPH5nydDknyEMEBBjQFUKZmZBs3/4mSU2wHpgAzqDeSios ORCct47Skw7HIryxm7xVvQE0FCI8RLY= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:9986:0:b0:6a7:29ef:133c with SMTP id p6-20020a259986000000b006a729ef133cmr1686245ybo.479.1662164601696; Fri, 02 Sep 2022 17:23:21 -0700 (PDT) Reply-To: Sean Christopherson Date: Sat, 3 Sep 2022 00:22:44 +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-14-seanjc@google.com> Subject: [PATCH v2 13/23] KVM: x86: Disable APIC logical map if vCPUs are aliased in logical mode 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 Disable the optimized APIC logical map if multiple vCPUs are aliased to the same logical ID. Architecturally, all CPUs whose logical ID matches the MDA are supposed to receive the interrupt; overwriting existing map entries can result in missed IPIs. Fixes: 1e08ec4a130e ("KVM: optimize apic interrupt delivery") Signed-off-by: Sean Christopherson Reviewed-by: Maxim Levitsky --- arch/x86/kvm/lapic.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c index 6b2f538b8fd0..75748c380ceb 100644 --- a/arch/x86/kvm/lapic.c +++ b/arch/x86/kvm/lapic.c @@ -303,12 +303,13 @@ void kvm_recalculate_apic_map(struct kvm *kvm) if (!mask) continue; - if (!is_power_of_2(mask)) { + ldr = ffs(mask) - 1; + if (!is_power_of_2(mask) || cluster[ldr]) { new->mode = KVM_APIC_MODE_XAPIC_FLAT | KVM_APIC_MODE_XAPIC_CLUSTER; continue; } - cluster[ffs(mask) - 1] = apic; + cluster[ldr] = apic; } out: old = rcu_dereference_protected(kvm->arch.apic_map, -- 2.37.2.789.g6183377224-goog