Received: by 10.223.171.12 with SMTP id q12csp5468204wrc; Tue, 30 Jan 2018 07:09:55 -0800 (PST) X-Google-Smtp-Source: AH8x224DiW5K6TRgciUpAvtLNKTmFDk4N054ImJ/liZMfgpa6lCh/+ibTEOMms+P6c62U5iEbiXy X-Received: by 10.98.18.150 with SMTP id 22mr30737179pfs.180.1517324995112; Tue, 30 Jan 2018 07:09:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1517324995; cv=none; d=google.com; s=arc-20160816; b=ZGdruQ1x/csnYDCaZgvpC5bICqMbQ4R6b6eSdO9NM/TKj87H1P1Gea7Vipv/zljKoI Taj1rEljoqzlX/O8J8KVvc4uANVB7m9EAQyguuqIG2KNNE0002Wv70vMO2Npgs7QRbvC CtDx6aMhusrSxRtJPui/lEI4IC91jdP3Lxn5UrHFlMf0Fr9wh0xzPlBely/y/79Pf/+l 6RSnjirCbe4ShXRiY7FsKbhVLAxMiY4SrxSVGq484U2hIDsVpM7LdBoHkdrxlsGH93hy RIPzYO0g3uOV/UbcUZrwsvp5n7fU72JHsQ8mHbXbfZ8PYHmcK2y1IHocBdrAofbMV3eu yujg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :references:in-reply-to:mime-version:dkim-signature :arc-authentication-results; bh=eNO2wW8dhWZrIAkSdb697tomsWiSQQW4bFB67HMtMZ0=; b=vX/Q07mH87DtderjAL+GUf9uVv2GYY/Fhnt3FI8AYkeBumoWqWQu9weDOPwGZCK2TK QYj9X//Sxu0EAMpGNNMXIOouZJKgjCS3QZ/3DVGAwOKsI4u8BuPmrUZuOSz+CioqSk7l DRgCA+Ci8QK4DjXPJM7D7aiTEV8Kx5Wi3cOLj3j/Rj9gPBd7R0RtAuv2Uklnoa3Bofzq pjE8EICEzSW7PxbsDm/9wAQ+0RLZM6HKBezY2OLMtqbfsmEv/v5QqHMQKM2ZkwdXIpRf DSelqzkKDaFfgTB2LI6g33Hr4HgJs6HGFGRVtwknfXecFaIcvo0inFG7a0R7f4q40jtT Q4Jw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=Ppj8hYHU; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id x6-v6si1039288plr.80.2018.01.30.07.09.38; Tue, 30 Jan 2018 07:09:55 -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=@linaro.org header.s=google header.b=Ppj8hYHU; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752725AbeA3PIv (ORCPT + 99 others); Tue, 30 Jan 2018 10:08:51 -0500 Received: from mail-qk0-f195.google.com ([209.85.220.195]:40929 "EHLO mail-qk0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751256AbeA3PIt (ORCPT ); Tue, 30 Jan 2018 10:08:49 -0500 Received: by mail-qk0-f195.google.com with SMTP id d18so10475603qke.7 for ; Tue, 30 Jan 2018 07:08:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=eNO2wW8dhWZrIAkSdb697tomsWiSQQW4bFB67HMtMZ0=; b=Ppj8hYHU+AVgtO2MiaD22IllrPJ2ehAv2U7u7xXKizhlGmE7Vpqz47jvMTvoIrg5+W Vlh0GF1WGgzOrmv/rwoUIr7DQ5/SQ4dP7DUKIL+YblEsoog7iqv1dUIu8uhjWF8SRfG6 Ip2jgMJP1+bpzfXjeaqgwHhjNoCnYYiBKwLAE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=eNO2wW8dhWZrIAkSdb697tomsWiSQQW4bFB67HMtMZ0=; b=TQQSIoIyhcplXGHiRU+pNGD6mbX8jmr0gRA1A65X7a4p8t906f3NajDrZXBw6rSaNx L+JVXvKGlKU8dpMMVOAYKuzYqNKnS5HJHuzeHeX5L2n69hFk/XIYcu8Q52jgUjrNz7Qj oMreTSwmyl6UF30z6p1u2iC0ZjAiCGZNCfkJENeE/XuW9VrhjCmIIXpSv9BPxvIcsTDA 0QKpSzCbC63R+kqK1gsmzxtYrmlAxmxWOXIfexi963DQEHFTeXImSKzggQUYH3aWCIxf ZoAdRFo8Xt/I5d5rsrxzfBDRSkahNpj+V/mzoJNrwadlAd3vOr58KPF/isC+LSTaY3mK mWsA== X-Gm-Message-State: AKwxytcF5y2pnN6/tEzm4wSb/B9/Zm7W0FKKSNFpzeaXFPEPkxl1MJAI qOX1yun6XxBZt1Qv+WHffTxmZn0JVn+rJHqwU43eZlxF X-Received: by 10.55.22.29 with SMTP id g29mr43124228qkh.26.1517324929000; Tue, 30 Jan 2018 07:08:49 -0800 (PST) MIME-Version: 1.0 Received: by 10.140.82.178 with HTTP; Tue, 30 Jan 2018 07:08:48 -0800 (PST) In-Reply-To: <3365044.AohtTD8A6l@avalon> References: <20180130104200.21602-1-philippe.cornu@st.com> <3365044.AohtTD8A6l@avalon> From: Benjamin Gaignard Date: Tue, 30 Jan 2018 16:08:48 +0100 Message-ID: Subject: Re: [PATCH v2] drm/stm: drv: Improve data transfers To: Laurent Pinchart Cc: Philippe Cornu , Yannick Fertre , Vincent Abriou , David Airlie , dri-devel@lists.freedesktop.org, Linux Kernel Mailing List , Archit Taneja , Andrzej Hajda , Fabien Dessenne , Mickael Reulier , Ludovic Barre , Alexandre Torgue , Maxime Coquelin Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 2018-01-30 15:58 GMT+01:00 Laurent Pinchart : > Hi Philippe, > > Thank you for the patch. > > On Tuesday, 30 January 2018 12:42:00 EET Philippe Cornu wrote: >> To optimize data transfers, align pitch on 128 bytes & height >> on 4 bytes. This optimization is not applicable on hw without MMU. >> >> Signed-off-by: Yannick Fertre >> Signed-off-by: Vincent Abriou >> Signed-off-by: Philippe Cornu >> --- >> Changes in v2: Rename stm_dumb_create() to stm_gem_cma_dumb_create() and >> move CONFIG_MMU inside the function following comments from Benjamin >> Gaignard. >> >> drivers/gpu/drm/stm/drv.c | 20 +++++++++++++++++++- >> 1 file changed, 19 insertions(+), 1 deletion(-) >> >> diff --git a/drivers/gpu/drm/stm/drv.c b/drivers/gpu/drm/stm/drv.c >> index 8fe954c27fba..8bc7e8418b8d 100644 >> --- a/drivers/gpu/drm/stm/drv.c >> +++ b/drivers/gpu/drm/stm/drv.c >> @@ -31,6 +31,24 @@ static const struct drm_mode_config_funcs >> drv_mode_config_funcs = { .atomic_commit = drm_atomic_helper_commit, >> }; >> >> +static int stm_gem_cma_dumb_create(struct drm_file *file, >> + struct drm_device *dev, >> + struct drm_mode_create_dumb *args) >> +{ >> +#ifdef CONFIG_MMU >> + unsigned int min_pitch = DIV_ROUND_UP(args->width * args->bpp, 8); >> + >> + /* >> + * in order to optimize data transfer, pitch is aligned on >> + * 128 bytes, height is aligned on 4 bytes >> + */ >> + args->pitch = roundup(min_pitch, 128); >> + args->height = roundup(args->height, 4); >> +#endif >> + >> + return drm_gem_cma_dumb_create_internal(file, dev, args); > > In the !CONFIG_MMU case you now bypass the pitch and size calculations > performed by drm_gem_cma_dumb_create(), allowing userspace to allocate > arbitrarily large buffers. Is that intentional ? My bad, I will send a fix > >> +} >> + >> DEFINE_DRM_GEM_CMA_FOPS(drv_driver_fops); >> >> static struct drm_driver drv_driver = { >> @@ -44,7 +62,7 @@ static struct drm_driver drv_driver = { >> .minor = 0, >> .patchlevel = 0, >> .fops = &drv_driver_fops, >> - .dumb_create = drm_gem_cma_dumb_create, >> + .dumb_create = stm_gem_cma_dumb_create, >> .prime_handle_to_fd = drm_gem_prime_handle_to_fd, >> .prime_fd_to_handle = drm_gem_prime_fd_to_handle, >> .gem_free_object_unlocked = drm_gem_cma_free_object, > > -- > Regards, > > Laurent Pinchart >