Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp48182pxk; Wed, 30 Sep 2020 17:29:13 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzTPjunCahIcQ0sef/XwwJLeF8hsNB7OBhxv9+Mh708tDoqujDuuOsrm1wi7fD1SfUNV1CN X-Received: by 2002:a17:906:a207:: with SMTP id r7mr5584879ejy.32.1601512153170; Wed, 30 Sep 2020 17:29:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1601512153; cv=none; d=google.com; s=arc-20160816; b=iLl8CfhEhbLt1Lp8jJwnCqm9l6BWT/rDKctlP+hI5bCydL80pSlesoKHlMWPp3X8qn CbCyudp+YxrSgzcqxYF3q2qv9543ocKEOluH4D3VHvX2lQCbuHeGjF/xxPr+ydGt2LXm 559R7Rc18OV20Nz+gqAmSpDtQ+Du4jJExPg2V7qXWv5xkJF5w0xrKNPWEkdRpt08OXHn j1Xfe8Tf7vBYiCfJXzQEwET4ye5ZFU6czuV3SmhhtnpUZJTms0xROk9mcKAlz5/nmBtS r4KyHG2nxKNgRWq53vbD5vJR95ZFjPngjFKxzQ8Kj0iAIlG6OzjDm1WZiJLotb4ee2Ud h+3w== 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=ydei6tbieUrGV84RcjcDG5+cKSABmfDZaMX7u0/RNhs=; b=mDgZYZyjzMY5ja7SIvN7twQ8FinvY7/0oHlXINBHcos/T9ffCNKRtP2tdXXN9mBsi3 0P7uzZaZ0/SmIW+WHd6pc45DmexIX8wpNmrUkTfIjA7mleojr+KPC+/Sgj1uG8g+F8P1 CLJLu0goJZH94nK+ZrLw6UnYrQBqg7V4gTkZWaZMxDFWhEC9k3rnV20+sMYGeJeMTw2p j//1ste9a/oA3+d7OQBOELtBz5IQIwpY91TXaw/xn7G4F8Fu+M1N0D1MiQ1O+UY2KMEy HxMkHEyob+fp4H3xQ1RSbxeDCBKnr6ZTBOfv2GVhO6a1Hy+xFP2HLhVGEmjPCA3IExRh KpOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=UPyxJUuP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d8si2233311edt.19.2020.09.30.17.28.51; Wed, 30 Sep 2020 17:29:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@google.com header.s=20161025 header.b=UPyxJUuP; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S1731250AbgI3XDQ (ORCPT + 99 others); Wed, 30 Sep 2020 19:03:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1730307AbgI3XDQ (ORCPT ); Wed, 30 Sep 2020 19:03:16 -0400 Received: from mail-il1-x144.google.com (mail-il1-x144.google.com [IPv6:2607:f8b0:4864:20::144]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 76FBBC061755 for ; Wed, 30 Sep 2020 16:03:16 -0700 (PDT) Received: by mail-il1-x144.google.com with SMTP id j13so4126139ilc.4 for ; Wed, 30 Sep 2020 16:03:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ydei6tbieUrGV84RcjcDG5+cKSABmfDZaMX7u0/RNhs=; b=UPyxJUuPwzHVrtOgksQO8MAx7iiUFj9uPQ50sUQ5Oxl1pxUI7SSuQwnfj1EjV9ewEt lUrPC3/z+6+zAKRowAoBSarHNuTHMqBlHgT7D8oqYHt62PDoCNdmZzd9Ad8SbvxYLx7Z lxhQZCXq5Qjj7MIxo1/AdFPmHFjQxRwxtQhqEWClyEO4VeqAk/8VzvqNPGYXwlayPVct ++BA5NxlOHmBhgbTBQ3Pcfs4oZHNfO+4o12r7uHzw4MtPPVsGRGpvC5tHREoc+ALZTpU PD7gUAgqg0qZMZwBUC5FqjGq+zeC1Rou5vL6YONOY7h44Slry6qn7MQuq5ysmWI33Dtg N90g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ydei6tbieUrGV84RcjcDG5+cKSABmfDZaMX7u0/RNhs=; b=hWwQ/V8pSNVi6GFkg2YHg0G7GKYcbrdEcjicvrTDDkg46Csg1v1i/+n29/krqrCSsF qes7TFrMoum2HF0vXI5lV0DVLYFPyDiPBrrziWSgSefPFwDdGIAR+IcXKWECoKEj900M EZBNN25UPlulfCE3W452TfPHdAsnuoZ03+UCqPZAqvijVWcn+Nk6oDRrqFoxWTTXQ6zG YiqrKCOOJ6NRP2g6tZCnZrCIY9zAa0lWE3WPCe5xn+1XDmQkxbyTEW/onjl//YbTwZmF 4UVq8thRhdKfeJKmHPkR4GQkEdPHGxyAbPNa982k+YqnMsoWGH4B2r5yDko3nXoMT7nm djPg== X-Gm-Message-State: AOAM533LGT1ykTyDV6YCXeiaJXoRP2rHU12C+SM8S2RrAQbjQOh6bO0h DxuablhTLYqmrI+I3e4+0GqyCp1kdONIP7OjX03c51AAnlz9e3Eu X-Received: by 2002:a92:9a82:: with SMTP id c2mr148434ill.285.1601506995603; Wed, 30 Sep 2020 16:03:15 -0700 (PDT) MIME-Version: 1.0 References: <20200925212302.3979661-1-bgardon@google.com> <20200925212302.3979661-2-bgardon@google.com> <20200930045508.GA29405@linux.intel.com> In-Reply-To: <20200930045508.GA29405@linux.intel.com> From: Ben Gardon Date: Wed, 30 Sep 2020 16:03:04 -0700 Message-ID: Subject: Re: [PATCH 01/22] kvm: mmu: Separate making SPTEs from set_spte To: Sean Christopherson Cc: LKML , kvm , Cannon Matthews , Paolo Bonzini , Peter Xu , Peter Shier , Peter Feiner , Junaid Shahid , Jim Mattson , Yulei Zhang , Wanpeng Li , Vitaly Kuznetsov , Xiao Guangrong Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, Sep 29, 2020 at 9:55 PM Sean Christopherson wrote: > > On Fri, Sep 25, 2020 at 02:22:41PM -0700, Ben Gardon wrote: > > +static int set_spte(struct kvm_vcpu *vcpu, u64 *sptep, > > + unsigned int pte_access, int level, > > + gfn_t gfn, kvm_pfn_t pfn, bool speculative, > > + bool can_unsync, bool host_writable) > > +{ > > + u64 spte = 0; > > + struct kvm_mmu_page *sp; > > + int ret = 0; > > + > > + if (set_mmio_spte(vcpu, sptep, gfn, pfn, pte_access)) > > + return 0; > > + > > + sp = sptep_to_sp(sptep); > > + > > + spte = make_spte(vcpu, pte_access, level, gfn, pfn, *sptep, speculative, > > + can_unsync, host_writable, sp_ad_disabled(sp), &ret); > > + if (!spte) > > + return 0; > > This is an impossible condition. Well, maybe it's theoretically possible > if page track is active, with EPT exec-only support (shadow_present_mask is > zero), and pfn==0. But in that case, returning early is wrong. > > Rather than return the spte, what about returning 'ret', passing 'new_spte' > as a u64 *, and dropping the bail early path? That would also eliminate > the minor wart of make_spte() relying on the caller to initialize 'ret'. I agree that would make this much cleaner. > > > + > > + if (spte & PT_WRITABLE_MASK) > > + kvm_vcpu_mark_page_dirty(vcpu, gfn); > > + > > if (mmu_spte_update(sptep, spte)) > > ret |= SET_SPTE_NEED_REMOTE_TLB_FLUSH; > > return ret; > > -- > > 2.28.0.709.gb0816b6eb0-goog > >