Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp13335137ybl; Sun, 29 Dec 2019 09:32:49 -0800 (PST) X-Google-Smtp-Source: APXvYqzqkVXqR/YqTcRfXLDPskaucVdGqTR5XBGaOJZ9Oam8G78e2kuAvW9JHRGjpLqzIb7hVAnS X-Received: by 2002:a9d:7852:: with SMTP id c18mr61215837otm.247.1577640769629; Sun, 29 Dec 2019 09:32:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577640769; cv=none; d=google.com; s=arc-20160816; b=ycL3OgQN9hPIkizjEhswcHFPlM3MieCaZC7iwGXC7Xqan98qBdAMiQ/vlyJnmLwtMM nf6EQvJ61BCy7FKX2r1X7Z/Q8nFNe07KsvTuIdhDSLq+VceKu9w7liiOoHdWOmZnROYy XSGwUmNBoZhUQaoDJLxszOm7AWqSslRam4huZ/+oJgRRpzUDXzNKOBzh9UkgNRmcTx+Z GUzx7TkifPXJxiS39RJJYc0yK4yxYNneTIYyWIOanTwOuDbcV5n6HsJuA9NOEu8Zhm78 SPSkJzA1gFcz7nD30l0yPtRft7izxjJWY6qYMk8k3FV3ReV2MmY98Y5wzOcj7gXMxm4i vm/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=2l8AjDXjbxd0ViU3rrW13PDQsBgOUKNT4MOsN1ojvSc=; b=yWDn2NgAlfuZnBj5H1KWsAFRbP2M6kC1wvq5YFBN547Oh6q0WpMzXC82+LET6AtHlX c5a/ZtUNHT/ItghpU+ONMgEZKcYJBruSskWz4J1bxMoTn+FPp5zif2HPVnyhSyLnCKt1 kMVLVmV8MsBFf7FfzDSGpXJNTU+UUk2VnKqL0Bxc1rp1tANG8rVD12XwQKpdfQ38RXRF 4tlfcJLxfldtct4HqONfWgTLrRkd+FF8yLptrh9Bujxk2x/7vFIShSaS9WBqohE9gJmU qyHsNs3Ul+88RxfJ9n7CVO3FDLOFoATsIN1P657G5hiOOZ7yFCqo98xapzQ8ONMeNf1X LZPQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=lW2NVsDa; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l5si18643362otn.194.2019.12.29.09.32.39; Sun, 29 Dec 2019 09:32:49 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=default header.b=lW2NVsDa; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729187AbfL2Rbg (ORCPT + 99 others); Sun, 29 Dec 2019 12:31:36 -0500 Received: from mail.kernel.org ([198.145.29.99]:58944 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729181AbfL2Rbc (ORCPT ); Sun, 29 Dec 2019 12:31:32 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 8538820722; Sun, 29 Dec 2019 17:31:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1577640692; bh=L1/H/euMDC1YsCVSbx+E6cc75ibeC8xUwvQqkU65t5M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lW2NVsDaYotmyhz+AePL8H4XjZsfuWNBMpwpW0luM6NgW7TSo5pvHHwOsl5VHvyMb dkrHW2cy7j+2E+S7qohfjAJI2YRPVGgfcZSDGvLVQsI+lX+ygU4Pn8hIDXsbJdswsF 2LphTx2dWCUlsa+eg9U8ZFb9Eo8c1hssqmvfMkl0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Thierry Reding , Sasha Levin Subject: [PATCH 4.19 100/219] gpu: host1x: Allocate gather copy for host1x Date: Sun, 29 Dec 2019 18:18:22 +0100 Message-Id: <20191229162523.338297488@linuxfoundation.org> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20191229162508.458551679@linuxfoundation.org> References: <20191229162508.458551679@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Thierry Reding [ Upstream commit b78e70c04c149299bd210759d7c7af7c86b89ca8 ] Currently when the gather buffers are copied, they are copied to a buffer that is allocated for the host1x client that wants to execute the command streams in the buffers. However, the gather buffers will be read by the host1x device, which causes SMMU faults if the DMA API is backed by an IOMMU. Fix this by allocating the gather buffer copy for the host1x device, which makes sure that it will be mapped into the host1x's IOVA space if the DMA API is backed by an IOMMU. Signed-off-by: Thierry Reding Signed-off-by: Sasha Levin --- drivers/gpu/host1x/job.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/gpu/host1x/job.c b/drivers/gpu/host1x/job.c index 527a1cddb14f..916b2355e11a 100644 --- a/drivers/gpu/host1x/job.c +++ b/drivers/gpu/host1x/job.c @@ -447,7 +447,8 @@ out: return err; } -static inline int copy_gathers(struct host1x_job *job, struct device *dev) +static inline int copy_gathers(struct device *host, struct host1x_job *job, + struct device *dev) { struct host1x_firewall fw; size_t size = 0; @@ -470,12 +471,12 @@ static inline int copy_gathers(struct host1x_job *job, struct device *dev) * Try a non-blocking allocation from a higher priority pools first, * as awaiting for the allocation here is a major performance hit. */ - job->gather_copy_mapped = dma_alloc_wc(dev, size, &job->gather_copy, + job->gather_copy_mapped = dma_alloc_wc(host, size, &job->gather_copy, GFP_NOWAIT); /* the higher priority allocation failed, try the generic-blocking */ if (!job->gather_copy_mapped) - job->gather_copy_mapped = dma_alloc_wc(dev, size, + job->gather_copy_mapped = dma_alloc_wc(host, size, &job->gather_copy, GFP_KERNEL); if (!job->gather_copy_mapped) @@ -523,7 +524,7 @@ int host1x_job_pin(struct host1x_job *job, struct device *dev) goto out; if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL)) { - err = copy_gathers(job, dev); + err = copy_gathers(host->dev, job, dev); if (err) goto out; } @@ -584,7 +585,7 @@ void host1x_job_unpin(struct host1x_job *job) job->num_unpins = 0; if (job->gather_copy_size) - dma_free_wc(job->channel->dev, job->gather_copy_size, + dma_free_wc(host->dev, job->gather_copy_size, job->gather_copy_mapped, job->gather_copy); } EXPORT_SYMBOL(host1x_job_unpin); -- 2.20.1