Received: by 2002:a05:6358:45e:b0:b5:b6eb:e1f9 with SMTP id 30csp4805258rwe; Tue, 30 Aug 2022 18:00:52 -0700 (PDT) X-Google-Smtp-Source: AA6agR6TLyXNfoqnUyXuxrG7VofBEZWpophs1V+GOwZH1MSOLVM7rH+SjUUNd3XGZt21q+IEMOzZ X-Received: by 2002:a17:907:2d1e:b0:73e:7c1f:b47d with SMTP id gs30-20020a1709072d1e00b0073e7c1fb47dmr14573770ejc.681.1661907651826; Tue, 30 Aug 2022 18:00:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661907651; cv=none; d=google.com; s=arc-20160816; b=z2mUN+nsxmLrzqbNBD33aiDEEBAFyVjGB3xqfpNsLsaNdcPDFY2xKGamvefAi/jpkS iq0Afsn8fA91xxWCqpYH1ASxLsWgtb2hvQyoLBbuxAsm/7/rW/zM11XWSBTQ907OWdQm TN4z+ewNWzdlLF8bBUFYgLlX40DtcFrYhrP+m5tEbwMsl3kS9Uj44zoDzGsUM5cYv6YR j7jlEhh8ohiHssGNFwU2fZFyXHfKfLXilPX5XOZ/a5R5ix2Dmv1b6WmMC1DNw3gli2bA hcoGp63K8SDEyyd04nmL94qa/JUjCrE95afevx4zaGgMAB51hrCzEwIol1PvKJ6K0WLQ v3Ow== 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=jKorNpXhvwAGsXROivEBSj6hwWRnB+Rxe5sOrtAqphg=; b=j9h7LKJydLlTdyOykMOut1AOx4BWIj37JOLzEo9KFa5KXtfptg2wRqHnvRkfttThJ9 +G3mxgG0Q9bATuAcotaDP00ARLJj2ps26FO0zUWC6KgDmWJAlBoy8BmvYdDIfiOJuN2w 7To0jyx5HmgzjGIa7l3bX7zNAJBDE5fmjVqC3bgycJe4hzKhuoH9/fw5zg6c1N26+VAT vW3r15zaOfpOJQzcS6l9nPqa/qbqAc1Wd/kh5CTeOYzx56H7W7JgfTLx2WP734t7R2B3 WowZWVARmx4RLtHPhL3QuPuhqF/aQqRrg9vtePFKGx5Cp3XJn39PUPp8no9VGmUfVXvn L6ng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=tIU13tu3; 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 w19-20020a056402269300b00448da245f3bsi2465077edd.6.2022.08.30.18.00.26; Tue, 30 Aug 2022 18:00:51 -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=tIU13tu3; 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 S231851AbiHaAiG (ORCPT + 99 others); Tue, 30 Aug 2022 20:38:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51746 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231604AbiHaAhO (ORCPT ); Tue, 30 Aug 2022 20:37:14 -0400 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 44429AB1BF for ; Tue, 30 Aug 2022 17:36:03 -0700 (PDT) Received: by mail-pf1-x44a.google.com with SMTP id 14-20020a056a00072e00b0053689e4d0e5so5206526pfm.5 for ; Tue, 30 Aug 2022 17:36:03 -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; bh=jKorNpXhvwAGsXROivEBSj6hwWRnB+Rxe5sOrtAqphg=; b=tIU13tu3TrRZIwVjv3NBqNY45MhfLObBL6gThmPiOhUD6+etBUdAZjTHH2Bd9lYATB mm3B0SIcYf9WsoH4X+DNkzgG0ymiFjKf1dhwKuhKL7+DbEf1731yMvENCFd8Y2rOCqLX 0NfwwTsjoiy6K40RaNI/f3p/JN1vVV9LgEN7ez756T3aQvTU/ln2o4jBeW8T/dteao5w lELNQ1P6djW8X4RFC1e/w1a+VZ6BI1RA6yX2YixQqGUyYIpXwRgH9G27UQNl2EFMPGRB MQ4noN2nDGKNGasEYXlxnYPZh7xlR/0dImt5IH7XdJWUg4VEgZMYS9sXuO5nMQYQIzan nD4g== 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; bh=jKorNpXhvwAGsXROivEBSj6hwWRnB+Rxe5sOrtAqphg=; b=HOEwaigQQCMFKM8CiEAEbEEKo/ckaq5FcJpbDsmIhf0J5Vdyz+/dv0dc0XMxCSURdz AHEh1nuvLfaw0H5G+fPFtdEQCAGNQ63KNwM9jq4/GDH8OaupKjccnXR3okdWGoBbhtwR Out1ogl4vYNxb8KMs9h8ovlXlb/qYvQNyIAJ/8q4BChnlMG/4ZvJ6WpOf4bigJKW1OfR pJerB8w07NRzWygt4QEhepGAYwxtbZRqY1lflUbgZFj5BKzNgAAuriJ7nZwpMvavqz45 9fOChGgYYKmhLvxeC+j8TuD9dgD7WxgGBOuhjpvoQirfMkzBBUK6viWo7eKc+RM4CIHM zUVQ== X-Gm-Message-State: ACgBeo3CUI6TMdw//8oARwilKtEEFUu8blw0O/7w9zqJpJQQ+tQRWt/4 Hm6dFAN/fjXRbouVSxi1neWiJNCmdV4= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a17:90b:4b0c:b0:1f4:ffac:699a with SMTP id lx12-20020a17090b4b0c00b001f4ffac699amr600872pjb.145.1661906131231; Tue, 30 Aug 2022 17:35:31 -0700 (PDT) Reply-To: Sean Christopherson Date: Wed, 31 Aug 2022 00:35:00 +0000 In-Reply-To: <20220831003506.4117148-1-seanjc@google.com> Mime-Version: 1.0 References: <20220831003506.4117148-1-seanjc@google.com> X-Mailer: git-send-email 2.37.2.672.g94769d06f0-goog Message-ID: <20220831003506.4117148-14-seanjc@google.com> Subject: [PATCH 13/19] 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 --- 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 82278acae95b..d537b51295d6 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.672.g94769d06f0-goog