From patchwork Wed Mar 19 15:03:16 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Adri=C3=A1n_Larumbe?= X-Patchwork-Id: 14022765 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 907FEC35FFC for ; Wed, 19 Mar 2025 15:16:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 040B510E523; Wed, 19 Mar 2025 15:16:30 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=collabora.com header.i=adrian.larumbe@collabora.com header.b="IOdPz4e/"; dkim-atps=neutral Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) by gabe.freedesktop.org (Postfix) with ESMTPS id DEC2D10E523 for ; Wed, 19 Mar 2025 15:16:28 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1742397377; cv=none; d=zohomail.com; s=zohoarc; b=M9S7NQWgUT7zE1cmhru5+2AxI8x0LVEZQ1lKwcIzfINTqrO4WL9Hfij8Ic0Gxvk98nGjING94OiOfP9vYIxwNUyLyA2lhOmTv/54L+sUVCiwE9nLF53WVb11xIf3RvjiFxOPNHvUu88sWabZ8FKnCwA++UzM7WUcWkVwAS145Dk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1742397377; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=vIPJQom7r4A3GWtfSUhf1tVdtm3CdKHcA/I1Ss7gdmA=; b=ITCYTex6Ue9uk5+Mc/C9iKXRFCE76ZKHiBfQvoJ+jrYOAHP5eoFyVM99+gQ6AgVdn2yLY/9Qb/EUU8KKJmoEYcv2zQ+2WceiSC236ATLORcos8QYoozPyNpmi2wF18/MwqdxxMGPEZJKTMjafhXvVhDS0k0TawKU8jCQNGe8cHo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=adrian.larumbe@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1742397377; s=zohomail; d=collabora.com; i=adrian.larumbe@collabora.com; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Type:Content-Transfer-Encoding:Message-Id:Reply-To; bh=vIPJQom7r4A3GWtfSUhf1tVdtm3CdKHcA/I1Ss7gdmA=; b=IOdPz4e/WNj+yEQDGCsU/RNKd0WTBA1/glY3kJu5167yVhi1Gnnf4/YgkED1iCxp 4kLSfdaOWAbiAP/0j3sWuHHCQWOy5Ohhvjr+w5Vu2pwF6OtfI6lAYPmUzYOu4bwPyiz BBU11U8YXF033vRURgFXYIj3NqRmyQF4JqimYFbQ= Received: by mx.zohomail.com with SMTPS id 1742397375095815.980850775402; Wed, 19 Mar 2025 08:16:15 -0700 (PDT) From: =?utf-8?q?Adri=C3=A1n_Larumbe?= To: Boris Brezillon , Steven Price , Liviu Dudau , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter Cc: kernel@collabora.com, =?utf-8?q?Adri=C3=A1n_Larumbe?= , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/4] drm/panthor: Introduce BO labeling Date: Wed, 19 Mar 2025 15:03:16 +0000 Message-ID: <20250319150953.1634322-2-adrian.larumbe@collabora.com> X-Mailer: git-send-email 2.48.1 In-Reply-To: <20250319150953.1634322-1-adrian.larumbe@collabora.com> References: <20250319150953.1634322-1-adrian.larumbe@collabora.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Add a new character string Panthor BO field, and a function that allows setting it from within the driver. Driver takes care of freeing the string when it's replaced or no longer needed at object destruction time, but allocating it is the responsibility of callers. Signed-off-by: Adrián Larumbe --- drivers/gpu/drm/panthor/panthor_gem.c | 24 ++++++++++++++++++++++++ drivers/gpu/drm/panthor/panthor_gem.h | 17 +++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/drivers/gpu/drm/panthor/panthor_gem.c b/drivers/gpu/drm/panthor/panthor_gem.c index 8244a4e6c2a2..165c7f4eb920 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.c +++ b/drivers/gpu/drm/panthor/panthor_gem.c @@ -18,6 +18,9 @@ static void panthor_gem_free_object(struct drm_gem_object *obj) struct panthor_gem_object *bo = to_panthor_bo(obj); struct drm_gem_object *vm_root_gem = bo->exclusive_vm_root_gem; + kfree(bo->label.str); + mutex_destroy(&bo->label.lock); + drm_gem_free_mmap_offset(&bo->base.base); mutex_destroy(&bo->gpuva_list_lock); drm_gem_shmem_free(&bo->base); @@ -196,6 +199,7 @@ struct drm_gem_object *panthor_gem_create_object(struct drm_device *ddev, size_t obj->base.map_wc = !ptdev->coherent; mutex_init(&obj->gpuva_list_lock); drm_gem_gpuva_set_lock(&obj->base.base, &obj->gpuva_list_lock); + mutex_init(&obj->label.lock); return &obj->base.base; } @@ -247,3 +251,23 @@ panthor_gem_create_with_handle(struct drm_file *file, return ret; } + +void +panthor_gem_bo_set_label(struct drm_gem_object *obj, const char *label) +{ + struct panthor_gem_object *bo = to_panthor_bo(obj); + const char *old_label; + + mutex_lock(&bo->label.lock); + old_label = bo->label.str; + bo->label.str = label; + mutex_unlock(&bo->label.lock); + + kfree(old_label); +} + +void +panthor_gem_kernel_bo_set_label(struct panthor_kernel_bo *bo, const char *label) +{ + panthor_gem_bo_set_label(bo->obj, kstrdup_const(label, GFP_KERNEL)); +} diff --git a/drivers/gpu/drm/panthor/panthor_gem.h b/drivers/gpu/drm/panthor/panthor_gem.h index 5749ef2ebe03..0582826b341a 100644 --- a/drivers/gpu/drm/panthor/panthor_gem.h +++ b/drivers/gpu/drm/panthor/panthor_gem.h @@ -46,6 +46,20 @@ struct panthor_gem_object { /** @flags: Combination of drm_panthor_bo_flags flags. */ u32 flags; + + /** + * @label: BO tagging fields. The label can be assigned within the + * driver itself or through a specific IOCTL. + */ + struct { + /** + * @label.str: Pointer to NULL-terminated string, + */ + const char *str; + + /** @lock.str: Protects access to the @label.str field. */ + struct mutex lock; + } label; }; /** @@ -91,6 +105,9 @@ panthor_gem_create_with_handle(struct drm_file *file, struct panthor_vm *exclusive_vm, u64 *size, u32 flags, uint32_t *handle); +void panthor_gem_bo_set_label(struct drm_gem_object *obj, const char *label); +void panthor_gem_kernel_bo_set_label(struct panthor_kernel_bo *bo, const char *label); + static inline u64 panthor_kernel_bo_gpuva(struct panthor_kernel_bo *bo) {