From patchwork Fri Feb 1 13:28:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thierry Reding X-Patchwork-Id: 1034764 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=linux-tegra-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="k6vligew"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43rdGt2g2Wz9sDX for ; Sat, 2 Feb 2019 00:28:54 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727809AbfBAN2y (ORCPT ); Fri, 1 Feb 2019 08:28:54 -0500 Received: from mail-wr1-f67.google.com ([209.85.221.67]:40604 "EHLO mail-wr1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726486AbfBAN2x (ORCPT ); Fri, 1 Feb 2019 08:28:53 -0500 Received: by mail-wr1-f67.google.com with SMTP id p4so7076902wrt.7 for ; Fri, 01 Feb 2019 05:28:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Z463s4eMqli6pxEQVh8/leiiDkOb6ijsQv8HwlAki8c=; b=k6vligewMZr322pj/F4POsGjmgG/m3/Er1ynGYNui3qDFY0w0NHKvee5xkOIDPrd2r GMKsVjiUUrHRUMxfLCw3kDSKw3VZQbQSVkVqNXfhsmeOz9fbMV+TrtGIDdjiiUun7Ueo eCM7RbVnci3VKppnN1WTM4RlKo/v/JOQ5reGktMNY74kQJBldjCtqUkkeiVWUBSSezMj dfAZk3ipwZhaxVDma178yemCtyPOn8rwgkDrIJv2LU0COd99MmIOzxShy85gzwXVRu+6 yR54sChMcHhkrrbzmEku4Yd49X3+jZlwvYtNYD9uxnJ3oajcZ17wZaBb7d6/Zoys4rIj VXtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Z463s4eMqli6pxEQVh8/leiiDkOb6ijsQv8HwlAki8c=; b=bUD+FGoNxdb3BsRTFjxpUz/kiKanenhwOXWOLzM/7KofM7OddRbKNF3/Dv0laj2zYu sj2aI/9ssnp8fCtwpeMNX5uF2aXRlHrcK1G9XdYdpccsNDe3/XDkvncauHtwHgN5JAnn Wwyrw0XozYnvKjolHIwNKOPeOUkMsDZ9hxI9KjrdrSgelmS9X8D/+JQDrcNy6RLciPf3 ZacqBhtG7mis9QlaFTEYzscnaGkmeb3Zg8LZYvGX6z8ZRvUbzBAvpEpPN7GePY9Lu0v7 3Dh4z6t2dDXl7IwgpPoHffJTwxdKvOKHgE/OD4z1X7w0mJb3BcLXRQH5u84xXyoK/f5Y DSeA== X-Gm-Message-State: AJcUukc1Z5e2lgP1h5foj058/wIEuOo0l92PWgSFtlBXwix5wLFHQxSB xnvaOpdKfvL+Cz7GnkHXiK8= X-Google-Smtp-Source: ALg8bN7ft0BCs1tEgrAPVEp/YFb+mxy9x2RxfCzLtdXwAAoba/Gt3nRcy4j8oJMV1b/UUCWFntwKTA== X-Received: by 2002:adf:ba8e:: with SMTP id p14mr37731216wrg.230.1549027731792; Fri, 01 Feb 2019 05:28:51 -0800 (PST) Received: from localhost (pD9E51040.dip0.t-ipconnect.de. [217.229.16.64]) by smtp.gmail.com with ESMTPSA id 141sm966641wmt.36.2019.02.01.05.28.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 01 Feb 2019 05:28:51 -0800 (PST) From: Thierry Reding To: Thierry Reding Cc: Mikko Perttunen , Dmitry Osipenko , dri-devel@lists.freedesktop.org, linux-tegra@vger.kernel.org Subject: [PATCH v3 08/16] gpu: host1x: Use correct semantics for HOST1X_CHANNEL_DMAEND Date: Fri, 1 Feb 2019 14:28:29 +0100 Message-Id: <20190201132837.12327-9-thierry.reding@gmail.com> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20190201132837.12327-1-thierry.reding@gmail.com> References: <20190201132837.12327-1-thierry.reding@gmail.com> MIME-Version: 1.0 Sender: linux-tegra-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-tegra@vger.kernel.org From: Thierry Reding The HOST1X_CHANNEL_DMAEND is an offset relative to the value written to the HOST1X_CHANNEL_DMASTART register, but it is currently treated as an absolute address. This can cause SMMU faults if the CDMA fetches past a pushbuffer's IOMMU mapping. Properly setting the DMAEND prevents the CDMA from fetching beyond that address and avoid such issues. This is currently not observed because a whole (almost) page of essentially scratch space absorbs any excessive prefetching by CDMA. However, changing the number of slots in the push buffer can trigger these SMMU faults. Signed-off-by: Thierry Reding Reviewed-by: Dmitry Osipenko Tested-by: Dmitry Osipenko --- drivers/gpu/host1x/hw/cdma_hw.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/host1x/hw/cdma_hw.c b/drivers/gpu/host1x/hw/cdma_hw.c index 485aef5761af..a24c090ac96f 100644 --- a/drivers/gpu/host1x/hw/cdma_hw.c +++ b/drivers/gpu/host1x/hw/cdma_hw.c @@ -75,7 +75,7 @@ static void cdma_start(struct host1x_cdma *cdma) cdma->last_pos = cdma->push_buffer.pos; start = cdma->push_buffer.dma; - end = start + cdma->push_buffer.size + 4; + end = cdma->push_buffer.size + 4; host1x_ch_writel(ch, HOST1X_CHANNEL_DMACTRL_DMASTOP, HOST1X_CHANNEL_DMACTRL); @@ -126,7 +126,7 @@ static void cdma_timeout_restart(struct host1x_cdma *cdma, u32 getptr) HOST1X_CHANNEL_DMACTRL); start = cdma->push_buffer.dma; - end = start + cdma->push_buffer.size + 4; + end = cdma->push_buffer.size + 4; /* set base, end pointer (all of memory) */ host1x_ch_writel(ch, lower_32_bits(start), HOST1X_CHANNEL_DMASTART);