Received: by 2002:a05:7412:f690:b0:e2:908c:2ebd with SMTP id ej16csp1328561rdb; Fri, 20 Oct 2023 15:58:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGVrUZJYA+6HFtaE4mzBEBD2RWoDbROkAoc3VmwVnd2NodGN7xJfmelg7lt7RYsy25mDvTA X-Received: by 2002:a05:6a00:2382:b0:6b1:cc77:4d2 with SMTP id f2-20020a056a00238200b006b1cc7704d2mr3832353pfc.15.1697842735607; Fri, 20 Oct 2023 15:58:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1697842735; cv=none; d=google.com; s=arc-20160816; b=Iau+TRw6noOX+KlBbhKaxLWF8z8yN8Hzdh4BRJk3G5UorL5vZdpwWh8/KhaYiDXf9E DgGgWi5p1Kko3YYSTH464N1W7kZji31Ud8DGieSCXN/BoVP7tBZxj0fUPpNseVysjj7o DMLG/ooMU588njEw+xKFebHolZyCejwblg2JedWhU8Davi6uyurZe6q6yo3IscFZBwSt aF8dUgcI553Dek9pDRyId666lQmwIQ+lLw/rKgajHeuXIHxZizYAH6OOrgN6O/JJmvOe nSvKcliPKOAcpV/GQCLMT0/0z8YoSkp6iw8WByP7Sd/N8hQPNR5y2hsWkqZsHf3uJBsM jLyA== 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:dkim-signature; bh=nV7hUiXwTHfWM008m9tGJ1YLn/BzCMBzf+rjk0AGTB0=; fh=7niz8YHrWfyalQ18RV8s/PalBOI5PsZn026Gw7w/Lzw=; b=nS7064A7pZSwHSnEA01uW078x4BjeO1yfROACaW6c3xQu0FC6pCtXhNJ2vZRVz38G7 iv9rrx92kWNNPihaegzlrVLB8w9xaHF6pQ3bRjwfRh2X9w0ePBBIFIWwg9D4enLjJIpY eywPz7mU2Quh0JoabF3evwL6e7NlAVA18dVR/SL4qIuafISV2bqLwmvvuzHmXRzLKKVs rhppqzg0oslzGkIUfwPqFolGPKaz0iQJgTVYTjBUXJg8AHjf9pv9x6Q77W0J/ttsmF20 BvIAgp8NEaJTKZUHdX1gzrH2Uj5Drb3jL3i+UTxenXcNOqhy0C2kAech0FBGiYZI5hU6 gPWQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=qR9abIwp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 howler.vger.email (howler.vger.email. [23.128.96.34]) by mx.google.com with ESMTPS id g12-20020a056a000b8c00b00691023321ebsi2831578pfj.113.2023.10.20.15.58.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Oct 2023 15:58:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 as permitted sender) client-ip=23.128.96.34; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20230601 header.b=qR9abIwp; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.34 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 (depot.vger.email [IPv6:2620:137:e000::3:0]) by howler.vger.email (Postfix) with ESMTP id 46C8C83B00A0; Fri, 20 Oct 2023 15:58:53 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at howler.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230318AbjJTW6o (ORCPT + 99 others); Fri, 20 Oct 2023 18:58:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41680 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230204AbjJTW6n (ORCPT ); Fri, 20 Oct 2023 18:58:43 -0400 Received: from mail-yb1-xb4a.google.com (mail-yb1-xb4a.google.com [IPv6:2607:f8b0:4864:20::b4a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8017A10C6 for ; Fri, 20 Oct 2023 15:58:32 -0700 (PDT) Received: by mail-yb1-xb4a.google.com with SMTP id 3f1490d57ef6-d9a5836ab12so1619128276.2 for ; Fri, 20 Oct 2023 15:58:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1697842711; x=1698447511; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=nV7hUiXwTHfWM008m9tGJ1YLn/BzCMBzf+rjk0AGTB0=; b=qR9abIwpBYqeCJa+5pUkw3oT4J+WVdXGTIhNJLjANGmOSEvuNKiTXeDEIGEeEQw9u+ BkAkETn5320gYhgmgXmse6GwZbQz5kidYKUB6iG5kHinHtYt+Biq09qRbd2BndnrHVcU lvXc9B3eL0rmfVlFwYVLe8eI+WtbozDtV/kBt9iqZ6ixErvPysc0+2n3FTCvrbTpVuTm PMcmhVuf8Nm2CZ+kz1Uk7ewYSJYgdYjojzkFzlEI3TMMwfc/V5+Jmv0APWmuC/M9jZ5q s0P14fBL5U0p4fWnvE71WtC+Q0QrIlRUV6Pvtb/hrpP5FDUwgdXXNTEuMT99WGRfz748 /MEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1697842711; x=1698447511; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=nV7hUiXwTHfWM008m9tGJ1YLn/BzCMBzf+rjk0AGTB0=; b=JaLlLMN9nQ5YwtWBKbO35Nv9GhEsPig+IRQ04Dc2cU+357c7NdKTzRLRJdbrtmRb6Q sx4MZqRYuYmSvqvBmu+xRjAqtyAYaemr+sdaQTC9Qj55lSdOUJOPI33n64qwkM54hu+L Avc5NPiZkg1Gaip2z0AQmS1C7RYiHSMVU8fY+QTPpS4dq7tcLU3Y4pDsa7iJPL3WbcP+ DV1gavsvt0ltzmwlXtsMmar3YS7t4jaVDr8K9xTvvo8B3X9duTKv2V5OZBxNf2454NaY VcVA1SooPmB1fsMuI17X2p1084574PVv3dniGotf0yx6saSgz4kFBTT+84pKv+gUrKRv XfPA== X-Gm-Message-State: AOJu0YxPCrxgRAZoXE4TsFe7VdMQ2cqWaChN/YmUOgnhnlnsoNNlh+GA 30yZUhi2ukbMnz0rRBQUPjx55Bs9wX8= X-Received: from zagreus.c.googlers.com ([fda3:e722:ac3:cc00:7f:e700:c0a8:5c37]) (user=seanjc job=sendgmr) by 2002:a25:938c:0:b0:d9a:37cf:c22b with SMTP id a12-20020a25938c000000b00d9a37cfc22bmr69932ybm.1.1697842711533; Fri, 20 Oct 2023 15:58:31 -0700 (PDT) Date: Fri, 20 Oct 2023 15:56:29 -0700 In-Reply-To: <20231002040839.2630027-1-mizhang@google.com> Mime-Version: 1.0 References: <20231002040839.2630027-1-mizhang@google.com> X-Mailer: git-send-email 2.42.0.655.g421f12c284-goog Message-ID: <169766419668.1911126.2774635531681023250.b4-ty@google.com> Subject: Re: [PATCH v2] KVM: x86: Service NMI requests after PMI requests in VM-Enter path From: Sean Christopherson To: Sean Christopherson , Paolo Bonzini , Mingwei Zhang Cc: "H. Peter Anvin" , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Jim Mattson , Like Xu , Kan Liang , Dapeng1 Mi , Xin Li Content-Type: text/plain; charset="utf-8" X-Spam-Status: No, score=-8.4 required=5.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,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 howler.vger.email Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (howler.vger.email [0.0.0.0]); Fri, 20 Oct 2023 15:58:53 -0700 (PDT) On Mon, 02 Oct 2023 04:08:39 +0000, Mingwei Zhang wrote: > Service NMI requests after PMI requests in vcpu_enter_guest() so that KVM > does not need to cancel and redo the VM-Enter. Because APIC emulation > "injects" NMIs via KVM_REQ_NMI, handling PMI requests after NMI requests > means KVM won't detect the pending NMI request until the final check for > outstanding requests. Detecting requests at the final stage is costly as > KVM has already loaded guest state, potentially queued events for > injection, disabled IRQs, dropped SRCU, etc., most of which needs to be > unwound. > > [...] Applied to kvm-x86 pmu, thanks! I made a tweak to the code and massaged one part of the changelog. For the code, I hoisted PMU/PMI above SMI too, mainly to keep SMI+NMI together, but also because *technically* the guest could configure LVTPC to send an SMI (LOL). Regarding the changelog, I replaced the justification about correctness with this: Note that changing the order of request processing doesn't change the end result, as KVM's final check for outstanding requests prevents entering the guest until all requests are serviced. I.e. KVM will ultimately coalesce events (or not) regardless of the ordering. The architectural behavior of NMIs and KVM's unintuitive simultaneous NMI handling simply doesn't matter as far as this patch is concerned, especially when considering the SMI technicality. E.g. the net effect would be the same even if KVM allowed only a single NMIs. Please holler if you disagree with either/both of the above changes. [1/1] KVM: x86: Service NMI requests after PMI requests in VM-Enter path https://github.com/kvm-x86/linux/commit/4b09cc132a59 -- https://github.com/kvm-x86/linux/tree/next