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 DFF77ECD6FD for ; Thu, 12 Feb 2026 00:15:41 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 4834F10E695; Thu, 12 Feb 2026 00:15:41 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="Ng/fH5vO"; dkim-atps=neutral Received: from mail-oa1-f67.google.com (mail-oa1-f67.google.com [209.85.160.67]) by gabe.freedesktop.org (Postfix) with ESMTPS id B37B910E6A0 for ; Thu, 12 Feb 2026 00:15:13 +0000 (UTC) Received: by mail-oa1-f67.google.com with SMTP id 586e51a60fabf-408199852c5so2034304fac.0 for ; Wed, 11 Feb 2026 16:15:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770855313; x=1771460113; 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=Ng/fH5vOjSV4smEvjq06dMWAMO2xDOHhDEtJne7fsLI2e6chV16J/gxCEqnK0gITFs XKVL5jI14DSQPqcus/luh6O3HcIOWxmo3ZzdN5SL3ZYjalWtrUPzcDQqvS9jiHv2S0IB d1IPuFJ+wbo6zoXP6B9z3jsCwrQ4RYIzwmdFxzpD2SptDJEn7dS4VmxOA4vY7u5cdIfp WSJfEE4cGm4QBpjMIpP5wS9CJ8vqf4sH+SfHv7fXNiAbr54aUIfBPUNcHhTb65ihKPWq 8Z3a30VQxNLRzPDlti/kMrJ8bcsEm4OKVL5sB5pvOhCPwhd7lCvUHth5VdsMbQFIlA2F LWMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770855313; x=1771460113; 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=ESpLIG5U1eC/MAEJ9Bd3qLlmtHUkFXJC2NKz5lZKogF1pdupwm9s0mqIyk7bQ17GiN v5l/9PFwcXTFXuo06e83nq9WNN/+9rRA6W2lrHguBt89sjJYHdLmKIihOz+EGdsu54EF hOxMiUn/Fco7OX194b/2RTiNdbSSQwqwHXOcKX2bdvQfVVvpfysc1xsxJA/TceLCCX6E ZljfMhXUWWdvUAlbQ2xI1Nzhf6NMDqQi23BJdZYBGpmQuD3ERvpVRhcKv6a+oAMKgLLp 22CjEu5d7UJMEreMOMV3p2mrdeGpl9WlF8AZ4okGE+9Qbtm37yt6A43qehoCsNbPwuh2 QtTA== X-Gm-Message-State: AOJu0YzgjR4llCpfxEDl3weLaG0jZ7Pp/229tXLPDMP46ELHxz2AOlMz Z/5w1yljdquSpfjuRMyDn502O9sJ1OJqxRpoL8q+DaCh+BurGVUtRkJ4NiL2U5js X-Gm-Gg: AZuq6aIpbyxPJDIZorjnWyPj/lnKgsngJ7bpzeBqStiLSKLs3ebeZN0JezlPluplsXU eAbiixDBWl789bG1cSidEFKM9dsMDoO+MjORW3t8VG9OtdwQupwg5JvBsMhkF19jdREDW7yWSEh FeqxaO143PhBXGpd6+mYuiw9KltVQ+5EcUOQMHFseWBbZRF0yvneB8VvODLw+izc/QnF5NIyGaI 7iIXfM+cJmLMn83yR5RnV0viMCliaxNrl9mx3KlPXLBOIF5r9OGAqNaOS1XdEXJb7UrIbjN03DY WVw+EvbBQZRxns5E5bsiK0gm6EsQ0zgSmxb7CKlUs7cMmC4Ot/fCRNUqUOzzUE0VVl/YlaioxAN rYObU7cCuHmJDilo2otLKIXdka07DCe89HDeS4H5g9j4eprniI1JUARqlbkfuzB5JuMMYuxVxRi hLzUBNuLcF6DLbr4EWkzBVGYFA4Nk68A8lwWnCaYcrvcSuW4Nws4n0 X-Received: by 2002:a05:6871:3603:b0:409:5241:8aad with SMTP id 586e51a60fabf-40eca291522mr377610fac.44.1770855312677; Wed, 11 Feb 2026 16:15:12 -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.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 11 Feb 2026 16:15:12 -0800 (PST) From: Jim Cromie To: dri-devel@lists.freedesktop.org, intel-gfx-trybot@lists.freedesktop.org Cc: Jim Cromie Subject: [PATCH 57/59] accel/ivpu: implement IVPU_DBG_* as a dyndbg classmap Date: Wed, 11 Feb 2026 17:13:53 -0700 Message-ID: <20260212001359.97296-59-jim.cromie@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260212001359.97296-58-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> 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