From mboxrd@z Thu Jan 1 00:00:00 1970 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 CDE62ECD6FD for ; Thu, 12 Feb 2026 00:15:28 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B32BE10E6A4; Thu, 12 Feb 2026 00:15:27 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="nacNgvl6"; dkim-atps=neutral Received: from mail-oa1-f65.google.com (mail-oa1-f65.google.com [209.85.160.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 61CEC10E6A6 for ; Thu, 12 Feb 2026 00:15:15 +0000 (UTC) Received: by mail-oa1-f65.google.com with SMTP id 586e51a60fabf-40429b1d8baso2435163fac.0 for ; Wed, 11 Feb 2026 16:15:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770855314; x=1771460114; darn=lists.freedesktop.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UHp8sCSUnOW4CQStA6z3+YcZpaTlTtOrCU2N/8v851o=; b=nacNgvl6Gh19JUDWem83+zF3GUqxOApwckGyOh8gNeRjBHx34DcBfKoSzxtbIibodv 416iM9DG3hdyBbmZ8FzcDJc5FC0HL+7PigR9C3ItYgL0Mg1mXP2k+t923XJEezi+tALt e9aCkkOprialOkC+V511yFnMTs/Z/vn/WDUkcykWUzRYQ+vO/kFBn6WyO7hNgX1of3K4 IEi5Uy3BJZMfpOkcfCaRg9tvDMHhjzZpVvBZm0UTlDAwD5BJ+oGNZ9QhAoJH4fbabaJG 9qgfgTy2cehJhYcs5Fo0dd/PAAC4rC9YhmgoxoZMOK2HanPgDZwu1gQtENUnRqjCR15M ApDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770855314; x=1771460114; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=UHp8sCSUnOW4CQStA6z3+YcZpaTlTtOrCU2N/8v851o=; b=quYQ/X2cB0C290GxFePOvWGuQr+c6XrS+3Pq/hN++PcXqP2tYCS7pPr3gtc3Bt3gdI 5aEB7ERpBraVw+yP02nw/WzYkFcupAz5RCGMf52NfORreOngPqcLmO230WJlzsS6ljZh NxIAcnUpQCR3dtW3Cr5/cgb0qAywAji1axMh6dpgXotuLWaJQnbzMsuikEWRoNRF/3G1 QLDVbqAXKX7f68xykoKO6pqnHx47LzOaytst33OimiK6FYCABmOAv9r0Bd1FNX5kk5ll KgmDCKZ1aAms1cOulaxBWKyLzXaWSDkVQP0U0XVcwJj6q36JvOuh4H9xenOHSTBNrJJg 9wmA== X-Gm-Message-State: AOJu0YxBKKTdZmC7cnck+70+h9zoreFx1Ci1HfgIZHj74zaOHpfe9SQL tH1q1m6aire35ue7xHpoltRSSyDzEmym7UYQl9SNwlzs1AVWIx7UwjReGVfq3k4x X-Gm-Gg: AZuq6aI6n61aJHrpWYmobR4Z/QlBNZHdgRtCmCpI1BbPKuYVNT8avUdFd1+tWzyqaUG uPrR69Fy4tYFYBBODhT8F9gHAJkV8HxHxGpzKh7UYplz1+Nfim3j6JcLFiGa/6s27NswHg2szH/ ZU0d6KJoLWJw/+4h/fJiK0I07crS8ROdQ+Vwd5FT/Pp4xDMlWyXB4De40QDo+0On8Q5gzg1hFxW 3AXgm5FcWFJ67jAQdDjF1m0apsmZSr4Y6ErE9tfSv+vYBwhrXshMWaj2X74an4z+ZfW9LlmQN8B PBU91jg06F0NBrhq4qT7xwkU9RJTn47JXPrqYVTeJxZ8vqNzV2bnbEFp/VsnWHBBfeq6OwwAtL5 eIPK1QdnrR4gPgO9Tw2VRSkeOZY1M5BbCFXVPVx02bt7rzjae96K4K3NX9LIfMozve9sXIAyWYM ZXhslh5Pa7rBQJl51lDBDcUrq06R/U3FxbNZoWhNzPpcFCzizpBloB X-Received: by 2002:a05:6870:812b:b0:404:2f23:c63 with SMTP id 586e51a60fabf-40ec71b1ee8mr521988fac.42.1770855314391; Wed, 11 Feb 2026 16:15:14 -0800 (PST) Received: from godzilla (c-98-38-17-99.hsd1.co.comcast.net. [98.38.17.99]) by smtp.googlemail.com with ESMTPSA id 586e51a60fabf-40eaf1062ffsm2331939fac.13.2026.02.11.16.15.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 16:15:13 -0800 (PST) From: Jim Cromie To: dri-devel@lists.freedesktop.org, intel-gfx-trybot@lists.freedesktop.org Cc: Jim Cromie Subject: [PATCH 58/61] accel/ivpu: implement IVPU_DBG_* as a dyndbg classmap Date: Wed, 11 Feb 2026 17:13:55 -0700 Message-ID: <20260212001359.97296-61-jim.cromie@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260212001359.97296-60-jim.cromie@gmail.com> References: <20260212001359.97296-1-jim.cromie@gmail.com> <20260212001359.97296-2-jim.cromie@gmail.com> <20260212001359.97296-3-jim.cromie@gmail.com> <20260212001359.97296-4-jim.cromie@gmail.com> <20260212001359.97296-5-jim.cromie@gmail.com> <20260212001359.97296-6-jim.cromie@gmail.com> <20260212001359.97296-7-jim.cromie@gmail.com> <20260212001359.97296-8-jim.cromie@gmail.com> <20260212001359.97296-9-jim.cromie@gmail.com> <20260212001359.97296-10-jim.cromie@gmail.com> <20260212001359.97296-11-jim.cromie@gmail.com> <20260212001359.97296-12-jim.cromie@gmail.com> <20260212001359.97296-13-jim.cromie@gmail.com> <20260212001359.97296-14-jim.cromie@gmail.com> <20260212001359.97296-15-jim.cromie@gmail.com> <20260212001359.97296-16-jim.cromie@gmail.com> <20260212001359.97296-17-jim.cromie@gmail.com> <20260212001359.97296-18-jim.cromie@gmail.com> <20260212001359.97296-19-jim.cromie@gmail.com> <20260212001359.97296-20-jim.cromie@gmail.com> <20260212001359.97296-21-jim.cromie@gmail.com> <20260212001359.97296-22-jim.cromie@gmail.com> <20260212001359.97296-23-jim.cromie@gmail.com> <20260212001359.97296-24-jim.cromie@gmail.com> <20260212001359.97296-25-jim.cromie@gmail.com> <20260212001359.97296-26-jim.cromie@gmail.com> <20260212001359.97296-27-jim.cromie@gmail.com> <20260212001359.97296-28-jim.cromie@gmail.com> <20260212001359.97296-29-jim.cromie@gmail.com> <20260212001359.97296-30-jim.cromie@gmail.com> <20260212001359.97296-31-jim.cromie@gmail.com> <20260212001359.97296-32-jim.cromie@gmail.com> <20260212001359.97296-33-jim.cromie@gmail.com> <20260212001359.97296-34-jim.cromie@gmail.com> <20260212001359.97296-35-jim.cromie@gmail.com> <20260212001359.97296-36-jim.cromie@gmail.com> <20260212001359.97296-37-jim.cromie@gmail.com> <20260212001359.97296-38-jim.cromie@gmail.com> <20260212001359.97296-39-jim.cromie@gmail.com> <20260212001359.97296-40-jim.cromie@gmail.com> <20260212001359.97296-41-jim.cromie@gmail.com> <20260212001359.97296-42-jim.cromie@gmail.com> <20260212001359.97296-43-jim.cromie@gmail.com> <20260212001359.97296-44-jim.cromie@gmail.com> <20260212001359.97296-45-jim.cromie@gmail.com> <20260212001359.97296-46-jim.cromie@gmail.com> <20260212001359.97296-47-jim.cromie@gmail.com> <20260212001359.97296-48-jim.cromie@gmail.com> <20260212001359.97296-49-jim.cromie@gmail.com> <20260212001359.97296-50-jim.cromie@gmail.com> <20260212001359.97296-51-jim.cromie@gmail.com> <20260212001359.97296-52-jim.cromie@gmail.com> <20260212001359.97296-53-jim.cromie@gmail.com> <20260212001359.97296-54-jim.cromie@gmail.com> <20260212001359.97296-55-jim.cromie@gmail.com> <20260212001359.97296-56-jim.cromie@gmail.com> <20260212001359.97296-57-jim.cromie@gmail.com> <20260212001359.97296-58-jim.cromie@gmail.com> <20260212001359.97296-59-jim.cromie@gmail.com> <20260212001359.97296-60-jim.cromie@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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" Invoke DRM_CLASSMAP_DEFINE to create a classmap of class-ids/categories for ivpu_dbg(). This brings static-key optimized-off benefits to the ivpu_dbg() callsites. DRM_CLASSMAP_PARAM_REF wires the sysfs kparam to the classmap. This is the 1st real-world example of a module avoiding another module's classmap's class_id range reservation. Its also something of an oddity: it "is" a DRM module only cuz 1. CONFIG_DRM_ACCEL_IVPU exists. 2. code therefore uses CONFIG_DRM_USE_DYNAMIC_DEBUG, so must also use it's dependent wrappers: DRM_CLASSMAP_* accel/amdxdna is already using drm.debug via dev_dbg(), so it is more fully DRM but iirc its a single call. Anyway, to play nice with DRM, we change all the constants, from macros calling BIT(X), to an explicit "enum ivpu_dbg_category" starting at 16 to avoid DRM_UT_CORE..RES. This is all in an indef to avoid changing the constants for the non-dyndbg case. Signed-off-by: Jim Cromie --- drivers/accel/ivpu/ivpu_drv.c | 27 +++++++++++++++++++-- drivers/accel/ivpu/ivpu_drv.h | 45 ++++++++++++++++++++++++++++++----- 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/drivers/accel/ivpu/ivpu_drv.c b/drivers/accel/ivpu/ivpu_drv.c index 3d6fccdefdd6..1c7bb6de78cc 100644 --- a/drivers/accel/ivpu/ivpu_drv.c +++ b/drivers/accel/ivpu/ivpu_drv.c @@ -3,6 +3,7 @@ * Copyright (C) 2020-2025 Intel Corporation */ +#include #include #include #include @@ -37,8 +38,30 @@ #define DRIVER_VERSION_STR "1.0.0 " UTS_RELEASE #endif -int ivpu_dbg_mask; -module_param_named(dbg_mask, ivpu_dbg_mask, int, 0644); +long unsigned int ivpu_dbg_mask; + +#if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG) + +module_param_named(dbg_mask, ivpu_dbg_mask, ulong, 0644); +#else +DRM_CLASSMAP_DEFINE(ivpu_dbg_classes, DD_CLASS_TYPE_DISJOINT_BITS, + IVPU_DBG_REG, + "IVPU_DBG_REG", + "IVPU_DBG_IRQ", + "IVPU_DBG_MMU", + "IVPU_DBG_FILE", + "IVPU_DBG_MISC", + "IVPU_DBG_FW_BOOT", + "IVPU_DBG_PM", + "IVPU_DBG_IPC", + "IVPU_DBG_BO", + "IVPU_DBG_JOB", + "IVPU_DBG_JSM", + "IVPU_DBG_KREF", + "IVPU_DBG_RPM", + "IVPU_DBG_MMU_MAP"); +DRM_CLASSMAP_PARAM_REF(dbg_mask, ivpu_dbg_mask, ivpu_dbg_classes, p); +#endif MODULE_PARM_DESC(dbg_mask, "Driver debug mask. See IVPU_DBG_* macros."); int ivpu_test_mode; diff --git a/drivers/accel/ivpu/ivpu_drv.h b/drivers/accel/ivpu/ivpu_drv.h index 5b34b6f50e69..5a6279705651 100644 --- a/drivers/accel/ivpu/ivpu_drv.h +++ b/drivers/accel/ivpu/ivpu_drv.h @@ -65,6 +65,10 @@ #define IVPU_SCHED_MODE_AUTO -1 +extern long unsigned int ivpu_dbg_mask; + +#if !defined(CONFIG_DRM_USE_DYNAMIC_DEBUG) + #define IVPU_DBG_REG BIT(0) #define IVPU_DBG_IRQ BIT(1) #define IVPU_DBG_MMU BIT(2) @@ -81,6 +85,41 @@ #define IVPU_DBG_MMU_MAP BIT(13) #define IVPU_DBG_IOCTL BIT(14) +#define ivpu_dbg(vdev, type, fmt, args...) do { \ + if (unlikely(IVPU_DBG_##type & ivpu_dbg_mask)) \ + dev_dbg((vdev)->drm.dev, "[%s] " fmt, #type, ##args); \ +} while (0) + +#else /* !!CONFIG_DRM_USE_DYNAMIC_DEBUG */ + +enum ivpu_dbg_category { + /* + * since accels are drm-devices (CONFIG_DRM_ACCEL_*), adjust + * IVPU_DBG_* to avoid DRMs 0..10 class_id reservations. + */ + IVPU_DBG_REG = 16, + IVPU_DBG_IRQ, + IVPU_DBG_MMU, + IVPU_DBG_FILE, + IVPU_DBG_MISC, + IVPU_DBG_FW_BOOT, + IVPU_DBG_PM, + IVPU_DBG_IPC, + IVPU_DBG_BO, + IVPU_DBG_JOB, + IVPU_DBG_JSM, + IVPU_DBG_KREF, + IVPU_DBG_RPM, + IVPU_DBG_MMU_MAP, + IVPU_DBG_IOCTL +}; + +#define ivpu_dbg(vdev, type, fmt, ...) \ + _dynamic_func_call_cls(IVPU_DBG_##type, fmt, __dynamic_dev_dbg, \ + (vdev)->drm.dev, fmt, ##__VA_ARGS__) + +#endif /* !!CONFIG_DRM_USE_DYNAMIC_DEBUG */ + #define ivpu_err(vdev, fmt, ...) \ drm_err(&(vdev)->drm, "%s(): " fmt, __func__, ##__VA_ARGS__) @@ -95,11 +134,6 @@ #define ivpu_info(vdev, fmt, ...) drm_info(&(vdev)->drm, fmt, ##__VA_ARGS__) -#define ivpu_dbg(vdev, type, fmt, args...) do { \ - if (unlikely(IVPU_DBG_##type & ivpu_dbg_mask)) \ - dev_dbg((vdev)->drm.dev, "[%s] " fmt, #type, ##args); \ -} while (0) - #define IVPU_WA(wa_name) (vdev->wa.wa_name) #define IVPU_PRINT_WA(wa_name) do { \ @@ -197,7 +231,6 @@ struct ivpu_file_priv { bool aborted; }; -extern int ivpu_dbg_mask; extern u8 ivpu_pll_min_ratio; extern u8 ivpu_pll_max_ratio; extern int ivpu_sched_mode; -- 2.53.0