From patchwork Mon Nov 11 14:23:05 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Zimmermann X-Patchwork-Id: 13870868 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id AA81C1A0AE9 for ; Mon, 11 Nov 2024 14:31:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=195.135.223.130 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731335483; cv=none; b=LCQGZrUUrR8wMESrCzJ0OeBN/UO4qlg20/0ZCv0f78wDUqYxza4XJrMDkGXnC+PU0GNytyniw2ZfZaycB856rBVTYQagSA19L7iCgQxUoemkStOacTpXOlbFomNoN21ZogbTuSrlF0idJyeRimEPqGfcGljQGicisHvpKN3uqzQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1731335483; c=relaxed/simple; bh=LNwk3ovjhxV8CI2K/LmKb6MWpD1q6oxhZGVv37Oooz4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=e8xbzw9DfJEsS9ZMrEoa2RMo15FgCF+oz9WJfJ7fNz8GG+aNwi2zKwfaMubHTq0y1AHbVCyIj9CdIdSmRHW0gDiabLeTAXSYh8H+JLznAzKYS1gF+0IRAVDQ2fJ3iLJ3sGvTIwKckPEcgN3yCBDpO/r89eu8x3N6fthxPId/bbA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de; spf=pass smtp.mailfrom=suse.de; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=mJk1wojr; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=8v+i6Cso; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b=mJk1wojr; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b=8v+i6Cso; arc=none smtp.client-ip=195.135.223.130 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=suse.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="mJk1wojr"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="8v+i6Cso"; dkim=pass (1024-bit key) header.d=suse.de header.i=@suse.de header.b="mJk1wojr"; dkim=permerror (0-bit key) header.d=suse.de header.i=@suse.de header.b="8v+i6Cso" Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 0D34D2198F; Mon, 11 Nov 2024 14:31:20 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1731335480; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zMKeSh3h2kFM3GAJNr2vzHmRFexGjq5qUiie0o7/Rvo=; b=mJk1wojricgc4f2b7EuTsnE1/b4gLpzA/Y7nq3C8r2D+8qW9mv5/5f3yYM5yjKkWVaqS6W qLOQKgyuO5n474ry+ooykpj0JfDuuO2Mfi7qBgVbYzg8ztkP2N1Z3P/0jl564OP0CzJrLW YhQoOtkcGXTuFF3KFK6FOD34JObqJ6I= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1731335480; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zMKeSh3h2kFM3GAJNr2vzHmRFexGjq5qUiie0o7/Rvo=; b=8v+i6CsoezLAb8hcK7TIrIjyzwH2P25nvngMxKBBl1Ds3bc6+Vz2p9Ehh18itKWlySxKpr 3HFW5C7rk0nfwKDQ== Authentication-Results: smtp-out1.suse.de; none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1731335480; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zMKeSh3h2kFM3GAJNr2vzHmRFexGjq5qUiie0o7/Rvo=; b=mJk1wojricgc4f2b7EuTsnE1/b4gLpzA/Y7nq3C8r2D+8qW9mv5/5f3yYM5yjKkWVaqS6W qLOQKgyuO5n474ry+ooykpj0JfDuuO2Mfi7qBgVbYzg8ztkP2N1Z3P/0jl564OP0CzJrLW YhQoOtkcGXTuFF3KFK6FOD34JObqJ6I= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1731335480; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=zMKeSh3h2kFM3GAJNr2vzHmRFexGjq5qUiie0o7/Rvo=; b=8v+i6CsoezLAb8hcK7TIrIjyzwH2P25nvngMxKBBl1Ds3bc6+Vz2p9Ehh18itKWlySxKpr 3HFW5C7rk0nfwKDQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id C87B513A17; Mon, 11 Nov 2024 14:31:19 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id GCipLzcVMmeWaAAAD6G6ig (envelope-from ); Mon, 11 Nov 2024 14:31:19 +0000 From: Thomas Zimmermann To: maarten.lankhorst@linux.intel.com, mripard@kernel.org, airlied@gmail.com, simona@ffwll.ch, p.zabel@pengutronix.de Cc: dri-devel@lists.freedesktop.org, imx@lists.linux.dev, Thomas Zimmermann Subject: [PATCH 3/5] drm/gem-dma: Use aligned default pitch and size for dumb buffers Date: Mon, 11 Nov 2024 15:23:05 +0100 Message-ID: <20241111143114.631690-4-tzimmermann@suse.de> X-Mailer: git-send-email 2.47.0 In-Reply-To: <20241111143114.631690-1-tzimmermann@suse.de> References: <20241111143114.631690-1-tzimmermann@suse.de> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Spam-Level: X-Spamd-Result: default: False [-6.80 / 50.00]; REPLY(-4.00)[]; BAYES_HAM(-3.00)[100.00%]; MID_CONTAINS_FROM(1.00)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; R_MISSING_CHARSET(0.50)[]; NEURAL_HAM_SHORT(-0.20)[-1.000]; MIME_GOOD(-0.10)[text/plain]; FUZZY_BLOCKED(0.00)[rspamd.com]; MIME_TRACE(0.00)[0:+]; ARC_NA(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FREEMAIL_TO(0.00)[linux.intel.com,kernel.org,gmail.com,ffwll.ch,pengutronix.de]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; RCVD_TLS_ALL(0.00)[]; R_RATELIMIT(0.00)[to_ip_from(RLqirfcw6gnbcr9a9yhi49fhi6)]; FROM_EQ_ENVFROM(0.00)[]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; RCVD_COUNT_TWO(0.00)[2]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCPT_COUNT_SEVEN(0.00)[8]; FREEMAIL_ENVRCPT(0.00)[gmail.com] X-Spam-Score: -6.80 X-Spam-Flag: NO Use the pitch and size values stored in the args parameter for allocating a dumb buffer in drm_gem_dma_dumb_create(). The values come from drm_mode_create_dumb(). Align the pitch to a multiple of 8. Push the current calculation into the only direct caller imx. Imx's hardware requires the framebuffer width to be aligned to 8. The driver's current approach is actually incorrect, as it only guarantees this implicitly and requires bpp to be a multiple of 8 already. A later commit will fix this problem by aligning the scanline pitch such that an aligned width still fits into each scanline's memory. A number of other drivers are build on top of gem-dma helpers and implement their own dumb-buffer allocation. These drivers invoke drm_gem_dma_dumb_create_internal(), which is not affected by this commit. Signed-off-by: Thomas Zimmermann --- drivers/gpu/drm/drm_gem_dma_helper.c | 7 +++++-- drivers/gpu/drm/imx/ipuv3/imx-drm-core.c | 2 ++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_gem_dma_helper.c b/drivers/gpu/drm/drm_gem_dma_helper.c index 870b90b78bc4..0961e52893b9 100644 --- a/drivers/gpu/drm/drm_gem_dma_helper.c +++ b/drivers/gpu/drm/drm_gem_dma_helper.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -304,9 +305,11 @@ int drm_gem_dma_dumb_create(struct drm_file *file_priv, struct drm_mode_create_dumb *args) { struct drm_gem_dma_object *dma_obj; + int ret; - args->pitch = DIV_ROUND_UP(args->width * args->bpp, 8); - args->size = args->pitch * args->height; + ret = drm_mode_align_dumb(args, 8, 0); + if (ret) + return ret; dma_obj = drm_gem_dma_create_with_handle(file_priv, drm, args->size, &args->handle); diff --git a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c b/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c index ced06bd8eae8..b3c9e8fcb45e 100644 --- a/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c +++ b/drivers/gpu/drm/imx/ipuv3/imx-drm-core.c @@ -145,6 +145,8 @@ static int imx_drm_dumb_create(struct drm_file *file_priv, int ret; args->width = ALIGN(width, 8); + args->pitch = DIV_ROUND_UP(args->width * args->bpp, 8); + args->size = args->pitch * args->height; ret = drm_gem_dma_dumb_create(file_priv, drm, args); if (ret)