Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp27326288rwd; Tue, 4 Jul 2023 01:06:45 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4SOZ/arMgxxkt2Y0YbI0HBOe0ucCD+stHpRCmhvOgJUZqhc5cSo4cuxvnmZtMjQHbeuCnK X-Received: by 2002:a05:6a20:3d14:b0:115:dfb:da59 with SMTP id y20-20020a056a203d1400b001150dfbda59mr12769547pzi.3.1688458005471; Tue, 04 Jul 2023 01:06:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688458005; cv=none; d=google.com; s=arc-20160816; b=cK40frUH/+XJ0RAdtvy4R62Vg6RHsQ6je+a8lJUdbvYvE2zbuK/K/3akFMnqfMCaos 5q/rrxXPFUaT1mUg1r8yUusC9ksN804kg/dsqFOXEFUAjyoarYYqvCDKE7qhU3QuPkUB HbeUdlc7d6q8IEAFtF+9JTW0kWUDjhxNl0rz33bq2wwYTWBtu5rrZaIX0V3En70egVa4 fQ6YCV7NX59lXhW1PpC79jKJdGSODGO1UwhTmaQ3nlUPPpHDk+RdIDWJIsiZyrHr/9l8 /wEHdSZ45F+LNFIzCHUWDJf0FfZEnqsRB8YqTv6bl0ONukh0bQI5kMubf/sXvVDIRcOO S6Kw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Uw1cYx5mpX+mMIRwwTz/eOOOsab4miY9iNG5/ESy4Mk=; fh=X1rzoJLx21Q/z3690TmWgXK6AKQEtU2+tIc6Ze4j+Kg=; b=xqYfr8dlDdFtuh+C2hxJ+gqbCjX+rKALS7w3L8AGNdALzidqSR0/LWSx3uXMWbZ+wT JTww2aKWB+w8uRyQTVgyHi49/JMru88XIE/mYHBpSJH5WeBvEp09yiL9poDHX43JEDFU PmtwL1B2wHQIxZ8vM0uUoTATj1z8tnPtJG2rEPne/6ekGYNvwWyp8aN2Lr7x5rCu81I1 fFQwKolX9KzAOgJJehWYb7u5BkAh1pjL+9Gm2PD1jsas+prlWW1mRyqw+6LexErut6Bd BVWk3h3dtrTIhR5LvJZMOY70EQuxKdmiAcyovXS2EsBw7pAYvzm0ClurbVRl4INrHGxO nA/Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="hM2/lEtQ"; 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=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f7-20020a056a00238700b00668871bc9b1si5600038pfc.210.2023.07.04.01.06.32; Tue, 04 Jul 2023 01:06:45 -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=@chromium.org header.s=google header.b="hM2/lEtQ"; 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=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231671AbjGDHwS (ORCPT + 99 others); Tue, 4 Jul 2023 03:52:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32832 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231601AbjGDHwD (ORCPT ); Tue, 4 Jul 2023 03:52:03 -0400 Received: from mail-oa1-x36.google.com (mail-oa1-x36.google.com [IPv6:2001:4860:4864:20::36]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D363810FD for ; Tue, 4 Jul 2023 00:51:50 -0700 (PDT) Received: by mail-oa1-x36.google.com with SMTP id 586e51a60fabf-1b0719dd966so5235001fac.1 for ; Tue, 04 Jul 2023 00:51:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1688457109; x=1691049109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Uw1cYx5mpX+mMIRwwTz/eOOOsab4miY9iNG5/ESy4Mk=; b=hM2/lEtQfedjJNo6vksX1IzO4Wc7lA479rqm5EXmbgKzDwV1/aXimAiQpHo3XK8phH qL7Ga8Ly5/N9covlLsX8Q4ZpGICRncTKBb3TCq+F1unF0JVVYMtC5Yss6lU6mL9eAMDO HLrAMgF+i9FZ7IPDuh+PU/uN+tQR37ttUWdQo= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1688457109; x=1691049109; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Uw1cYx5mpX+mMIRwwTz/eOOOsab4miY9iNG5/ESy4Mk=; b=G6lNRO9nwtcTF6aPvdcBD++xrPkUlXBCTiyiP0mQm1Nlv4WcSNO7iUeis9TABIs3c4 sUopbMAg5cGSVdqjGZOWGb7ocePg56/grdRw29mesGgkhbEsyAH0koaYlRpHK+u2NBNJ WbkNcseLsYO2KEWCqyw0D3/lASK3yVhSW2APUBDJhVJxvpR6qKZbgm52KAbfTSBS++5j eAAIshfbCnUiuZGgIapzhJTJrXO2lPGNNKDA9237Uay5JLgXIAvNWgQ+DupspXEhE5Eo fT0ssGvGiAK492a1Jr4Ox3qhskR/DjSkc+wFPU0nhKBQ6s4tXfVLmwUgtOFfu4AqSaDX Fq3A== X-Gm-Message-State: ABy/qLaZTITl7ZnW9qlLGnAJgtW8sIUqWpFSIrbraocMsYd+XVtsBoA5 UFsJrG1MVnJafQkDF6wkyMryouRt85QLid7+pOw= X-Received: by 2002:a05:6870:7885:b0:1b0:805:8678 with SMTP id hc5-20020a056870788500b001b008058678mr13821055oab.24.1688457109645; Tue, 04 Jul 2023 00:51:49 -0700 (PDT) Received: from localhost ([2401:fa00:8f:203:a11b:bff7:d8ae:bb0]) by smtp.gmail.com with UTF8SMTPSA id w22-20020a17090a15d600b00263b28e49fcsm4324087pjd.47.2023.07.04.00.51.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 04 Jul 2023 00:51:49 -0700 (PDT) From: David Stevens X-Google-Original-From: David Stevens To: Sean Christopherson Cc: Marc Zyngier , Michael Ellerman , Peter Xu , linux-arm-kernel@lists.infradead.org, kvmarm@lists.linux.dev, linux-kernel@vger.kernel.org, linuxppc-dev@lists.ozlabs.org, kvm@vger.kernel.org, David Stevens Subject: [PATCH v7 4/8] KVM: x86/mmu: Migrate to __kvm_follow_pfn Date: Tue, 4 Jul 2023 16:50:49 +0900 Message-ID: <20230704075054.3344915-5-stevensd@google.com> X-Mailer: git-send-email 2.41.0.255.g8b1d071c50-goog In-Reply-To: <20230704075054.3344915-1-stevensd@google.com> References: <20230704075054.3344915-1-stevensd@google.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS,T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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 From: David Stevens Migrate from __gfn_to_pfn_memslot to __kvm_follow_pfn. Signed-off-by: David Stevens --- arch/x86/kvm/mmu/mmu.c | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/arch/x86/kvm/mmu/mmu.c b/arch/x86/kvm/mmu/mmu.c index ec169f5c7dce..e44ab512c3a1 100644 --- a/arch/x86/kvm/mmu/mmu.c +++ b/arch/x86/kvm/mmu/mmu.c @@ -4296,7 +4296,12 @@ void kvm_arch_async_page_ready(struct kvm_vcpu *vcpu, struct kvm_async_pf *work) static int __kvm_faultin_pfn(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault) { struct kvm_memory_slot *slot = fault->slot; - bool async; + struct kvm_follow_pfn foll = { + .slot = slot, + .gfn = fault->gfn, + .flags = FOLL_GET | (fault->write ? FOLL_WRITE : 0), + .allow_write_mapping = true, + }; /* * Retry the page fault if the gfn hit a memslot that is being deleted @@ -4325,12 +4330,14 @@ static int __kvm_faultin_pfn(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault return RET_PF_EMULATE; } - async = false; - fault->pfn = __gfn_to_pfn_memslot(slot, fault->gfn, false, false, &async, - fault->write, &fault->map_writable, - &fault->hva); - if (!async) - return RET_PF_CONTINUE; /* *pfn has correct page already */ + foll.flags |= FOLL_NOWAIT; + fault->pfn = __kvm_follow_pfn(&foll); + + if (!is_error_noslot_pfn(fault->pfn)) + goto success; + + if (fault->pfn != KVM_PFN_ERR_NEEDS_IO) + return RET_PF_CONTINUE; if (!fault->prefetch && kvm_can_do_async_pf(vcpu)) { trace_kvm_try_async_get_page(fault->addr, fault->gfn); @@ -4348,9 +4355,17 @@ static int __kvm_faultin_pfn(struct kvm_vcpu *vcpu, struct kvm_page_fault *fault * to wait for IO. Note, gup always bails if it is unable to quickly * get a page and a fatal signal, i.e. SIGKILL, is pending. */ - fault->pfn = __gfn_to_pfn_memslot(slot, fault->gfn, false, true, NULL, - fault->write, &fault->map_writable, - &fault->hva); + foll.flags |= FOLL_INTERRUPTIBLE; + foll.flags &= ~FOLL_NOWAIT; + fault->pfn = __kvm_follow_pfn(&foll); + + if (!is_error_noslot_pfn(fault->pfn)) + goto success; + + return RET_PF_CONTINUE; +success: + fault->hva = foll.hva; + fault->map_writable = foll.writable; return RET_PF_CONTINUE; } -- 2.41.0.255.g8b1d071c50-goog