Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp3909166pxb; Tue, 2 Nov 2021 00:10:05 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzR98qUGFCw1rFf6fmrbuoC4gDt0htF0oIij5GC24DxgrRY7iYf0c3Iv4Z7u6mi6Dhbyw8q X-Received: by 2002:a5d:8c8b:: with SMTP id g11mr16776159ion.116.1635837005682; Tue, 02 Nov 2021 00:10:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1635837005; cv=none; d=google.com; s=arc-20160816; b=H+TvQIulfHoCOD9hRWpstOThGUASpVNxKEiP6sJm3y4QWJmhqWVo7KZf9aUx0Hb5kg WNdQy8aYhjtOI75i4bX81Gm5a5QPrhVx0UiFXpsJasornbplWDwQ8m4Vc97h+j7Wl7n4 VRJ2kPI8+qQEXKnDJI3OzXXwJehL54Ix2F9vm9B45ZgxclHyB/Ig7HSLv5132+r2l5xu PevSMSP5nQwp0Ahp/DGiKUpjyEE+eBuYPx9UrztP4+lPA7OSDtmASBYPBOkmmH8i8BMq WZ2oTccb2zlcWnfgkrmaWbwI2nT6BkxFHgd68euNLsyzjlKHR8SgkZaIRRFWU274YVfa Raww== 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=zpIYHRRuh/x3eFxNb3I43glE0uRJx00tjYUDg0ZLlzM=; b=gBxuaOxxQWZ2NxXyFkGJ5fdV9tm57zl/Qsu3xLR/jQJvqQT0og5WMNlcPyt1dSd1Kj lDncZebqs/eSOnSzXQtv7H2R4J1H1GiAQj7+knbTJ0IFxJFvwhVY3Px6Js5PeGE0+r1l QCoS8kFJh/3KAO+DBEG3rIszc3xI1I9Jm6234u2sz2CKctEWkR75z/BARrUlEp99PhNM JlEpW6o6n/UMPWczAIZQeCc+idwlhWXnstNoXTBjhTTi+ctcNhtgQkl2p8QG+3bIf1T0 YOrAUk/rfTqXy6W07vls/8i5fq8MKUaiD5yWKtqErJCjfHWKfzBNmeEvMdIMtnxLfYRl cbkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@infradead.org header.s=bombadil.20210309 header.b=3PX4HAcP; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id p7si5161748ilo.4.2021.11.02.00.09.54; Tue, 02 Nov 2021 00:10:05 -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=@infradead.org header.s=bombadil.20210309 header.b=3PX4HAcP; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231539AbhKBHKv (ORCPT + 99 others); Tue, 2 Nov 2021 03:10:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231663AbhKBHKb (ORCPT ); Tue, 2 Nov 2021 03:10:31 -0400 Received: from bombadil.infradead.org (bombadil.infradead.org [IPv6:2607:7c80:54:e::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7B19CC061203 for ; Tue, 2 Nov 2021 00:07:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From:Sender :Reply-To:Content-Type:Content-ID:Content-Description; bh=zpIYHRRuh/x3eFxNb3I43glE0uRJx00tjYUDg0ZLlzM=; b=3PX4HAcPlIgXI46EZTo5yL/LJd HziH3rQkAbLcx1K6sVShWHXMK+ZcwtUHoOa5rsEZMVW62fQoUHEi86RWWjH0nB0zKAfW2ZBBnORCc K1QQYIB+vxMwK5ODaC7XwX2lYkzmEMzjFHPHZ4vGCZT0zLYsKLGujhe+iy+LE3tG3iHr8kNPXSjoB ZNFRSHHsT7hTCWDIp4ip79eYU6wMr3FMN+beVI6/fT2DAjRUrfE5EAlg+TkGvij9MVOf68SLmgYF6 LDnrTZPUapty4mAm5aiK+3Lb+yjrvT4ljrcWPLwrUfedD4V6oLD01gHQ4Qwdiegs3Sxr1+1+QqK9N cbHV7HHQ==; Received: from 213-225-15-89.nat.highway.a1.net ([213.225.15.89] helo=localhost) by bombadil.infradead.org with esmtpsa (Exim 4.94.2 #2 (Red Hat Linux)) id 1mhnth-000iHG-CY; Tue, 02 Nov 2021 07:07:54 +0000 From: Christoph Hellwig To: Jani Nikula , Joonas Lahtinen , Rodrigo Vivi , Zhenyu Wang , Zhi Wang Cc: Jason Gunthorpe , intel-gfx@lists.freedesktop.org, intel-gvt-dev@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH 18/29] drm/i915/gvt: devirtualize ->is_valid_gfn Date: Tue, 2 Nov 2021 08:05:50 +0100 Message-Id: <20211102070601.155501-19-hch@lst.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20211102070601.155501-1-hch@lst.de> References: <20211102070601.155501-1-hch@lst.de> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SRS-Rewrite: SMTP reverse-path rewritten from by bombadil.infradead.org. See http://www.infradead.org/rpr.html Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Just call the code directly and move towards the callers. Signed-off-by: Christoph Hellwig --- drivers/gpu/drm/i915/gvt/gtt.c | 20 ++++++++++++++++++-- drivers/gpu/drm/i915/gvt/hypercall.h | 1 - drivers/gpu/drm/i915/gvt/kvmgt.c | 17 ----------------- drivers/gpu/drm/i915/gvt/mpt.h | 17 ----------------- 4 files changed, 18 insertions(+), 37 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/gtt.c b/drivers/gpu/drm/i915/gvt/gtt.c index 1a9b9b8a5d937..d3f9c22de7761 100644 --- a/drivers/gpu/drm/i915/gvt/gtt.c +++ b/drivers/gpu/drm/i915/gvt/gtt.c @@ -47,6 +47,22 @@ static bool enable_out_of_sync = false; static int preallocated_oos_pages = 8192; +static bool intel_gvt_is_valid_gfn(struct intel_vgpu *vgpu, unsigned long gfn) +{ + struct kvm *kvm = vgpu->kvm; + int idx; + bool ret; + + if (!vgpu->attached) + return false; + + idx = srcu_read_lock(&kvm->srcu); + ret = kvm_is_visible_gfn(kvm, gfn); + srcu_read_unlock(&kvm->srcu, idx); + + return ret; +} + /* * validate a gm address and related range size, * translate it to host gm address @@ -1329,7 +1345,7 @@ static int ppgtt_populate_spt(struct intel_vgpu_ppgtt_spt *spt) ppgtt_set_shadow_entry(spt, &se, i); } else { gfn = ops->get_pfn(&ge); - if (!intel_gvt_hypervisor_is_valid_gfn(vgpu, gfn)) { + if (!intel_gvt_is_valid_gfn(vgpu, gfn)) { ops->set_pfn(&se, gvt->gtt.scratch_mfn); ppgtt_set_shadow_entry(spt, &se, i); continue; @@ -2313,7 +2329,7 @@ static int emulate_ggtt_mmio_write(struct intel_vgpu *vgpu, unsigned int off, /* one PTE update may be issued in multiple writes and the * first write may not construct a valid gfn */ - if (!intel_gvt_hypervisor_is_valid_gfn(vgpu, gfn)) { + if (!intel_gvt_is_valid_gfn(vgpu, gfn)) { ops->set_pfn(&m, gvt->gtt.scratch_mfn); goto out; } diff --git a/drivers/gpu/drm/i915/gvt/hypercall.h b/drivers/gpu/drm/i915/gvt/hypercall.h index de63bd8dd05ba..c1a9eeed04607 100644 --- a/drivers/gpu/drm/i915/gvt/hypercall.h +++ b/drivers/gpu/drm/i915/gvt/hypercall.h @@ -55,7 +55,6 @@ struct intel_gvt_mpt { dma_addr_t dma_addr); int (*dma_pin_guest_page)(struct intel_vgpu *vgpu, dma_addr_t dma_addr); - bool (*is_valid_gfn)(struct intel_vgpu *vgpu, unsigned long gfn); }; #endif /* _GVT_HYPERCALL_H_ */ diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index dcec7549461f2..fd46f904e86a4 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -1962,22 +1962,6 @@ static void kvmgt_dma_unmap_guest_page(struct intel_vgpu *vgpu, mutex_unlock(&vgpu->cache_lock); } -static bool kvmgt_is_valid_gfn(struct intel_vgpu *vgpu, unsigned long gfn) -{ - struct kvm *kvm = vgpu->kvm; - int idx; - bool ret; - - if (!vgpu->attached) - return false; - - idx = srcu_read_lock(&kvm->srcu); - ret = kvm_is_visible_gfn(kvm, gfn); - srcu_read_unlock(&kvm->srcu, idx); - - return ret; -} - static const struct intel_gvt_mpt kvmgt_mpt = { .host_init = kvmgt_host_init, .host_exit = kvmgt_host_exit, @@ -1987,7 +1971,6 @@ static const struct intel_gvt_mpt kvmgt_mpt = { .dma_map_guest_page = kvmgt_dma_map_guest_page, .dma_unmap_guest_page = kvmgt_dma_unmap_guest_page, .dma_pin_guest_page = kvmgt_dma_pin_guest_page, - .is_valid_gfn = kvmgt_is_valid_gfn, }; struct intel_gvt_host intel_gvt_host = { diff --git a/drivers/gpu/drm/i915/gvt/mpt.h b/drivers/gpu/drm/i915/gvt/mpt.h index 59369e8b3b692..1a796f2181ba8 100644 --- a/drivers/gpu/drm/i915/gvt/mpt.h +++ b/drivers/gpu/drm/i915/gvt/mpt.h @@ -157,21 +157,4 @@ intel_gvt_hypervisor_dma_pin_guest_page(struct intel_vgpu *vgpu, return intel_gvt_host.mpt->dma_pin_guest_page(vgpu, dma_addr); } -/** - * intel_gvt_hypervisor_is_valid_gfn - check if a visible gfn - * @vgpu: a vGPU - * @gfn: guest PFN - * - * Returns: - * true on valid gfn, false on not. - */ -static inline bool intel_gvt_hypervisor_is_valid_gfn( - struct intel_vgpu *vgpu, unsigned long gfn) -{ - if (!intel_gvt_host.mpt->is_valid_gfn) - return true; - - return intel_gvt_host.mpt->is_valid_gfn(vgpu, gfn); -} - #endif /* _GVT_MPT_H_ */ -- 2.30.2