Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3603707pxb; Mon, 24 Jan 2022 13:18:03 -0800 (PST) X-Google-Smtp-Source: ABdhPJy+jkDpPj3bJwZj5y89NtUn8OFLt30FJ7qV8o7lNwpLXxT+SpXi3jfPeHEmjD3IKRbONIvj X-Received: by 2002:a65:5c0c:: with SMTP id u12mr13411195pgr.176.1643059083099; Mon, 24 Jan 2022 13:18:03 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643059083; cv=none; d=google.com; s=arc-20160816; b=dj4xOa1w9JF4HFsHveaDdY1jYf0wuzG4avYdcSCL1LpGGSELXBvuZTnU4vSmIutIkD 0KA5pEeyLt8qCkgp3oWloc2rOn+so4tZ6wQzI1kocyqgErpm3kivId0FFhmTJpGRfg7L WERjcQVqPc30xc3b80wPmfb3FBs79oAMQD+xhAkFCyeuytN75biVYojqFYJaqxgESLIc ynS4PM7CvH7NqcU8jc10h2zEoJJsWFSuPycxj7WaOz86DW0zuzpKHEexckSKbFxCEGOI HD7xLv7vD4NAUEhHRswUiyuDUq8Q8TIwQhR5GuOr9Gts0n6E8G3w7krc9aO3fYufAKdI YlPA== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=EsIWXe4Cqjyv57wqD5V2ADUqVg3jtB3+9F8VrGEvxLg=; b=gGdx3ufgi3rVEKC3jSkik2nZPSd9nhh7+VjS7Uq36vZknMVggnkR8sw+Zna+1XnBH+ nCUkQQTA6m5pj289TWqGy4F3DsEgGHX8bEGiLVwQNMMYdQpvMA9NkoWWHQ2Mj1BsgJ54 v8HYiw0hHnyWHQQLkFdWg60g/tVHkBY9ou7w21w8j3PNfQgivyXSZotKY1drhHURxsSU K9lqI1owRQI0cAjkCbj4DlcvOL/MaLHuuy/z1ZmHfxB2nASs8vCH8n5SpWbU4907pfAa hzn/PB970hWrAWQXHA2CIfA/wwbGBnYOWruPB9XjmoiioS+WxSThKQrKka2p5xPnawHs zytg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=h7JAahBv; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id n6si16561815plh.1.2022.01.24.13.17.50; Mon, 24 Jan 2022 13:18:03 -0800 (PST) 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=@linuxfoundation.org header.s=korg header.b=h7JAahBv; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1442111AbiAXUxN (ORCPT + 99 others); Mon, 24 Jan 2022 15:53:13 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38516 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1384757AbiAXUad (ORCPT ); Mon, 24 Jan 2022 15:30:33 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C92E1C08B4D5; Mon, 24 Jan 2022 11:42:49 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id 865F2B80FA1; Mon, 24 Jan 2022 19:42:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id A9A43C340E5; Mon, 24 Jan 2022 19:42:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643053367; bh=FeZZ+ingMMeS9llhA0tL7fmg4FwHfTx7PJX3YvByI6A=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=h7JAahBvBFk8l/NZOpIEsvDjsdWUUXaLyEEKLapyXt0YF1RyjQ8uG0lbjH9lKx7Jo UArvXGoyOmc1vDvwKArdzvGMDiyMasroJnGiBOmGW4DzOYcZt+feF+fafgRUUuHrtm ng+hLd8qAs+tXDRP3wcBttFO1EQW2+5Xs8Hfa8mQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Dmitry Osipenko , Thierry Reding Subject: [PATCH 5.10 034/563] gpu: host1x: Add back arm_iommu_detach_device() Date: Mon, 24 Jan 2022 19:36:39 +0100 Message-Id: <20220124184025.606765771@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184024.407936072@linuxfoundation.org> References: <20220124184024.407936072@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Dmitry Osipenko commit d5185965c3b59073c4520bad7dd2adf725b9abba upstream. Host1x DMA buffer isn't mapped properly when CONFIG_ARM_DMA_USE_IOMMU=y. The memory management code of Host1x driver has a longstanding overhaul overdue and it's not obvious where the problem is in this case. Hence let's add back the old workaround which we already had sometime before. It explicitly detaches Host1x device from the offending implicit IOMMU domain. This fixes a completely broken Host1x DMA in case of ARM32 multiplatform kernel config. Cc: stable@vger.kernel.org Fixes: af1cbfb9bf0f ("gpu: host1x: Support DMA mapping of buffers") Signed-off-by: Dmitry Osipenko Signed-off-by: Thierry Reding Signed-off-by: Greg Kroah-Hartman --- drivers/gpu/host1x/dev.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) --- a/drivers/gpu/host1x/dev.c +++ b/drivers/gpu/host1x/dev.c @@ -18,6 +18,10 @@ #include #undef CREATE_TRACE_POINTS +#if IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) +#include +#endif + #include "bus.h" #include "channel.h" #include "debug.h" @@ -232,6 +236,17 @@ static struct iommu_domain *host1x_iommu struct iommu_domain *domain = iommu_get_domain_for_dev(host->dev); int err; +#if IS_ENABLED(CONFIG_ARM_DMA_USE_IOMMU) + if (host->dev->archdata.mapping) { + struct dma_iommu_mapping *mapping = + to_dma_iommu_mapping(host->dev); + arm_iommu_detach_device(host->dev); + arm_iommu_release_mapping(mapping); + + domain = iommu_get_domain_for_dev(host->dev); + } +#endif + /* * We may not always want to enable IOMMU support (for example if the * host1x firewall is already enabled and we don't support addressing