Received: by 2002:a6b:fb09:0:0:0:0:0 with SMTP id h9csp600285iog; Wed, 15 Jun 2022 08:27:59 -0700 (PDT) X-Google-Smtp-Source: AGRyM1um0SHmAJKeHp9SeJQqgISMlpPTxkl0Lu6NiFJb835WoKYtvAG/d/x5vs+hqAGZJ/rsVDm0 X-Received: by 2002:a17:906:64d1:b0:712:3952:afdf with SMTP id p17-20020a17090664d100b007123952afdfmr365560ejn.212.1655306879525; Wed, 15 Jun 2022 08:27:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1655306879; cv=none; d=google.com; s=arc-20160816; b=USgZ9LAw9g5NeTcNsBB0hvXd8WSR8wnEj6T6Q1faGx7qwuWlTgZ5lkP1baNB3cyXUf 5M3rOZPFshuurQvO/TbSr7sCwNJIMznfJH/IitXd8TYpGFhVigvdUcnu+1JXFCPfe/Nt 1kYQAOwCJMEmKA1HwTlNZbBTZ4mTBsXMsItecBNT5+qeslO4n8C2vNQvPU/ppzEkyWjH 85yBVKcXCq6Gl8b88up21qK3jGhlWrF55aFXgX1iqdZ9hanGIK62TkiH62msMTMXAAVr 9FH3EqnxDAvDc+cCM0qOjem3nNU5hdZlJI4jDEr/ci21KDuG9cTYlbxTBBOIdWmU8yF0 ArCA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=p5WjwBxoG8hcN2wNzdX82aRVBrLb67GAEmI1dQxMZy0=; b=ZvN5mEyaCHJqmJ6AIZBp15xtYUHtPLkZ7mrX+5/1ke983V7M31id+d85w3awnjrSpH yEbDx/ajaP8HQdiICKPIhUAJFVEJnNFxtTwm1l2zuOOb8lRhEia6ATge6fY2zsKz6MXc Xqcjlv49V8dNYhZBnuPDxpmwaz1cn0NQz+FpwcL8zxEfolhDkYvqzwZFtDLaQx+YJ/Vo fF5hRapThgrfOA+aZ0kKXpGVLMxOHaQxg9pOJ4XnG4R0PBDm8aVFipeHZk7r9VN2vdDS HpPFQIx03Hqz1ruQKAc3F5jjm/CLeGZB37MG49CdtHxMipMGsTbwX+SZnwWQjiBwH7NG SvWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20210112 header.b=r4gnFG1k; 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 hb16-20020a170907161000b00718cd1e88fasi9138745ejc.394.2022.06.15.08.27.34; Wed, 15 Jun 2022 08:27:59 -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=r4gnFG1k; 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 S243981AbiFOO66 (ORCPT + 99 others); Wed, 15 Jun 2022 10:58:58 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:47482 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234162AbiFOO6m (ORCPT ); Wed, 15 Jun 2022 10:58:42 -0400 Received: from mail-lf1-x12d.google.com (mail-lf1-x12d.google.com [IPv6:2a00:1450:4864:20::12d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DA553326CD for ; Wed, 15 Jun 2022 07:58:40 -0700 (PDT) Received: by mail-lf1-x12d.google.com with SMTP id c4so19319059lfj.12 for ; Wed, 15 Jun 2022 07:58:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=p5WjwBxoG8hcN2wNzdX82aRVBrLb67GAEmI1dQxMZy0=; b=r4gnFG1k9OgfmQ7EP/1Y+kdN2g5zJ3GOyFpW2D2CfDDrt/w87w3TdP8K++zTRXmZ1O BUsJ3h/tq/C3iprUij5d3WqyvOGMw/I5Nw2LzaFWW8Kk0jJmwkKplMI+l41JN3y5PSh4 fnlFCyTAhS1yp+NaBsuAeFVDg+5EuG0LyQq5/dUn8T7aUi5OZPsYHQCp1xCWXpUZPDXd rJIptAm7vdcpJ/0G+qLHiC/f1LoLW2Sc6al5aQ3TJyiMG5BWUbqQ6aJ5ktnFyy06b9xI vu0WMbDHRbaiTdW1pIt4zXGO7csAzT3AsR+uTXqQIKxq3R7RPeMvVGoqtPSHqpYKJYto cxjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=p5WjwBxoG8hcN2wNzdX82aRVBrLb67GAEmI1dQxMZy0=; b=lecthBgUnPhwEh0kGvwzrn+thZ9/IwNFEBE5kl4a+e6H6Bw1rWhVVKwMWQhOv/PxP+ iy79x30oM5zlzo75/9TcxpVIgaJc8eX8hFnJVO1JeSVh41EiH4Iq2/flflPYdHsCroBL HbKp5F7s6qc5m6w0VZWc98xy0V9ZxNzX5ABWlFjpQ+Kz/KNbNScbIMEsNXUCZ2T2McTa xc2Ytr2augxfrp0qbjux0QEisbExms+rSaOqSIh7njXDVzEu1HOzTRn4dYZCraFX+JjT 4JGxYc/Dizbd190pZSCIlvECFQLr0m5mI+8oLWfSXKPMGGLLnaVFprzlbH3E8zOk+gN/ tuEg== X-Gm-Message-State: AJIora/PSAWpmeLWTTpeR4moEg5lfU764ULTo5xjGXbBF/YSWLc6n4t0 IpCIAAmGEcxqw5f5f6iKB/ox+yBJjES27fK/MnistYBHJ8194w== X-Received: by 2002:a05:6512:ba6:b0:47d:a6e3:ab37 with SMTP id b38-20020a0565120ba600b0047da6e3ab37mr6168253lfv.157.1655305118992; Wed, 15 Jun 2022 07:58:38 -0700 (PDT) MIME-Version: 1.0 References: <20220614021141.1101486-1-sashal@kernel.org> In-Reply-To: From: Jann Horn Date: Wed, 15 Jun 2022 16:58:02 +0200 Message-ID: Subject: Re: [PATCH MANUALSEL 5.15 1/4] KVM: x86: do not report a vCPU as preempted outside instruction boundaries To: Sasha Levin , Paolo Bonzini Cc: linux-kernel@vger.kernel.org, stable@vger.kernel.org, tglx@linutronix.de, mingo@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, x86@kernel.org, kvm@vger.kernel.org Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-17.6 required=5.0 tests=BAYES_00,DKIMWL_WL_MED, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, ENV_AND_HDR_SPF_MATCH,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,USER_IN_DEF_DKIM_WL,USER_IN_DEF_SPF_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 On Wed, Jun 15, 2022 at 4:53 PM Jann Horn wrote: > > On Tue, Jun 14, 2022 at 4:11 AM Sasha Levin wrote: > > > > From: Paolo Bonzini > > > > [ Upstream commit 6cd88243c7e03845a450795e134b488fc2afb736 ] > > > > If a vCPU is outside guest mode and is scheduled out, it might be in the > > process of making a memory access. A problem occurs if another vCPU uses > > the PV TLB flush feature during the period when the vCPU is scheduled > > out, and a virtual address has already been translated but has not yet > > been accessed, because this is equivalent to using a stale TLB entry. > > > > To avoid this, only report a vCPU as preempted if sure that the guest > > is at an instruction boundary. A rescheduling request will be delivered > > to the host physical CPU as an external interrupt, so for simplicity > > consider any vmexit *not* instruction boundary except for external > > interrupts. > > > > It would in principle be okay to report the vCPU as preempted also > > if it is sleeping in kvm_vcpu_block(): a TLB flush IPI will incur the > > vmentry/vmexit overhead unnecessarily, and optimistic spinning is > > also unlikely to succeed. However, leave it for later because right > > now kvm_vcpu_check_block() is doing memory accesses. Even > > though the TLB flush issue only applies to virtual memory address, > > it's very much preferrable to be conservative. > > > > Reported-by: Jann Horn > > Signed-off-by: Paolo Bonzini > > Signed-off-by: Sasha Levin > > This feature was introduced in commit f38a7b75267f1f (first in 4.16). > I think the fix has to be applied all the way back to there (so > additionally to what you already did, it'd have to be added to 4.19, > 5.4 and 5.10)? > > But it doesn't seem to apply cleanly to those older branches. Paolo, > are you going to send stable backports of this? Also, I think the same thing applies for "KVM: x86: do not set st->preempted when going back to user space"?