Received: by 2002:a25:e7d8:0:0:0:0:0 with SMTP id e207csp1235856ybh; Thu, 12 Mar 2020 20:21:07 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvywBuybPmiCf0cQXcvR15k9dUV41cxzwW5UgMPmLmCWa9KxSSC1HR1ZM6R2mv64uQ9dYLG X-Received: by 2002:a9d:6c05:: with SMTP id f5mr9249359otq.232.1584069667268; Thu, 12 Mar 2020 20:21:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1584069667; cv=none; d=google.com; s=arc-20160816; b=Ldpio5CvFsgMr6ARWpuAzz0jFt/F5xLMKpbKU6Id0v71O5r/LNn3C5brHKer8gZzWd dUXJ7Np8tNr5XKGnAZgoJEAYh+cm5NQn7FbRzxwAJxBrUd++1WeQOu9WKgrP9Xsw5Awp YlOv/zcdVDBKm8nW9nqVfdr4SMHYFzdineT7OzcyotOI2dzgrhVdBILealL/DpWXSpK0 ii1bag9GzVvgLTWstpNq2gHPCqq73tLo6lIb4HOIAvvFgaFYJMYIGJVtydTPP1hwOm5F JcKHH+irTS40kjtcV0KQKk2CNbS7V/V098IfABFe2yrsYJ5j8cr+LBxVcNDKr5J/Fw8g ec9g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=u1nijO8q3RNE4/Nonk1/cq8vsQU1L5lP/IxOjY6mpBY=; b=yRIWN0LuTZJODM8leA2EDZwXO2SY8Qjc6upIccWLHL9Lop3XQhZCfUUqeKTW9vSpbP QO4SA8QvXBjdy6co7NUwVsH57UTEDRHQoKY1/WXPBRi/+8NscFLYLEgUcXFzDMXz1bCx +Ju1KxeWN6c19eJQYWbEjYgBBgA076o0D/aXGss+tV0pHP7oVSLWGYaL212Z4AU/3eur RgkjGBMVUv1TMtIUFcn84f3BX6jIEpQQKEBc2Xb4uwO8Klg3rXbgO90fcWQTonSckQJk +lt4T7bPzcOYt132RYvXnFI6PeqJVUzWVUySmhTRrDLghpUyexbXpmvROFK+U5bdnL/1 03DA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id n198si3747230oig.37.2020.03.12.20.20.55; Thu, 12 Mar 2020 20:21:07 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726569AbgCMDUk (ORCPT + 99 others); Thu, 12 Mar 2020 23:20:40 -0400 Received: from mga01.intel.com ([192.55.52.88]:40635 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726479AbgCMDUk (ORCPT ); Thu, 12 Mar 2020 23:20:40 -0400 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga002.fm.intel.com ([10.253.24.26]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 12 Mar 2020 20:20:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,546,1574150400"; d="scan'208";a="278065753" Received: from joy-optiplex-7040.sh.intel.com ([10.239.13.16]) by fmsmga002.fm.intel.com with ESMTP; 12 Mar 2020 20:20:37 -0700 From: Yan Zhao To: intel-gvt-dev@lists.freedesktop.org, kvm@vger.kernel.org, linux-kernel@vger.kernel.org Cc: alex.williamson@redhat.com, zhenyuw@linux.intel.com, pbonzini@redhat.com, kevin.tian@intel.com, peterx@redhat.com, Yan Zhao Subject: [PATCH v4 5/7] drm/i915/gvt: subsitute kvm_read/write_guest with vfio_dma_rw Date: Thu, 12 Mar 2020 23:11:09 -0400 Message-Id: <20200313031109.7989-1-yan.y.zhao@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200313030548.7705-1-yan.y.zhao@intel.com> References: <20200313030548.7705-1-yan.y.zhao@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org As a device model, it is better to read/write guest memory using vfio interface, so that vfio is able to maintain dirty info of device IOVAs. Cc: Kevin Tian Signed-off-by: Yan Zhao --- drivers/gpu/drm/i915/gvt/kvmgt.c | 23 ++--------------------- 1 file changed, 2 insertions(+), 21 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/kvmgt.c b/drivers/gpu/drm/i915/gvt/kvmgt.c index 811cee28ae06..cee7376ba39d 100644 --- a/drivers/gpu/drm/i915/gvt/kvmgt.c +++ b/drivers/gpu/drm/i915/gvt/kvmgt.c @@ -2050,33 +2050,14 @@ static int kvmgt_rw_gpa(unsigned long handle, unsigned long gpa, void *buf, unsigned long len, bool write) { struct kvmgt_guest_info *info; - struct kvm *kvm; - int idx, ret; - bool kthread = current->mm == NULL; if (!handle_valid(handle)) return -ESRCH; info = (struct kvmgt_guest_info *)handle; - kvm = info->kvm; - - if (kthread) { - if (!mmget_not_zero(kvm->mm)) - return -EFAULT; - use_mm(kvm->mm); - } - idx = srcu_read_lock(&kvm->srcu); - ret = write ? kvm_write_guest(kvm, gpa, buf, len) : - kvm_read_guest(kvm, gpa, buf, len); - srcu_read_unlock(&kvm->srcu, idx); - - if (kthread) { - unuse_mm(kvm->mm); - mmput(kvm->mm); - } - - return ret; + return vfio_dma_rw(kvmgt_vdev(info->vgpu)->vfio_group, + gpa, buf, len, write); } static int kvmgt_read_gpa(unsigned long handle, unsigned long gpa, -- 2.17.1