From patchwork Wed Aug 26 17:00:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 11740061 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 9571213B6 for ; Thu, 27 Aug 2020 06:58:02 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 73CD722B4E for ; Thu, 27 Aug 2020 06:58:02 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Fce5lMZP" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 73CD722B4E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id D3B476EB34; Thu, 27 Aug 2020 06:57:39 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-io1-xd41.google.com (mail-io1-xd41.google.com [IPv6:2607:f8b0:4864:20::d41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 161F96E226 for ; Wed, 26 Aug 2020 17:00:51 +0000 (UTC) Received: by mail-io1-xd41.google.com with SMTP id z17so2859945ioi.6 for ; Wed, 26 Aug 2020 10:00:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=TT/nPbomDmh8NQShHOC8FZBWwCU19NUKn3EZB0b0q/I=; b=Fce5lMZPmSr/R6QTYB7eE6nL3eFrkLLX7rJdVbaoCg7NYYWUOFtn4jZPNhguFFE0Ww h0t8AECaIll/C9E6AEcxUoJ5le0j7fFyRKNONqAaRXBJnN0KLBLAQ6tGEt4vlttY7Irt 8ykSWtiAR+VTO+UpMmiH+94GgFSa8xkKNW414kXDcTWCcgUp7wHg+/0FAlbiTnFGQZRd yWEHyK34HqJ8LhWzwexYM1kssLa7LBk/nCIcve+q3U4MBqz1RGTdHqBlk9an4wtlFMBy jpM0KSbhTeS7lR3i9cIExK0K18jOaaBOZs9YPIGbC5Upj3gY2ddewNA8VEyQ0cNBtdjx InCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=TT/nPbomDmh8NQShHOC8FZBWwCU19NUKn3EZB0b0q/I=; b=Yw7VbFJDHV9G5h5p3fsJKw3MeHwkjL60wUmGuAr2JVFOjedAsm9lDU7uCOmX0lo4w/ F2cXvnDN1wFgZyKyoWCwLHXOQgKslS7nvR965RxLJ8uZYLVxyHcYisSZJnfYIhh1RD/I 7uWL16X+BlPqbK6aftScth7aCxoG088dFODki1buPBt9E8IYHwvXfm5mRxeZ2dHp5xf6 yVyv7LFKWJTJTuVYZQ1+fJK7smHrOmjQJnVBc8P9r0eOLYbIJ+As9MZMpTYYm+9c+ET9 +TPdoS2aCdF+g1bupQ+KISdcl0fEx6/beHcSLWrFEcPETF1esOOlBIhTnpWveI/tUKsT yzpg== X-Gm-Message-State: AOAM532AO5xOEHJ8quE0NBZViMg80LoQsbPqOHd9/UpzcsZZTVz+Trqq IamfDtofOVE2BIJamOkLTVU= X-Google-Smtp-Source: ABdhPJxy5A5rKdHB0JGFzyPbJaQvXJ1YHzMRzjOYm2I0ca1HWwoG3rk1JxilvNBEZOnEKffrPVxEDw== X-Received: by 2002:a6b:7411:: with SMTP id s17mr10699072iog.192.1598461250478; Wed, 26 Aug 2020 10:00:50 -0700 (PDT) Received: from frodo.hsd1.co.comcast.net ([2601:284:8203:5970::c4c]) by smtp.googlemail.com with ESMTPSA id p78sm1479606iod.0.2020.08.26.10.00.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Aug 2020 10:00:49 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, jbaron@akamai.com Subject: [PATCH 1/4] drm-printk: POC caller of dynamic-debug-exec-queries Date: Wed, 26 Aug 2020 11:00:38 -0600 Message-Id: <20200826170041.2497546-2-jim.cromie@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200826170041.2497546-1-jim.cromie@gmail.com> References: <20200826170041.2497546-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 27 Aug 2020 06:57:36 +0000 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: , Cc: Thomas Zimmermann , Jim Cromie , David Airlie Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Export of dynamic-debug-exec-queries exists for users like drm. This commit is a 1st user-test; it adds a 2nd knob, __drm_debug2, similar in function to __drm_debug. module_param_cb wires it to a callback which maps the input value to one of: "module=drm* +/-p". The include is needed to see the exported function prototype. Notes: The define DEBUG at top of drm-printk enables all pr_debug()s, independent of CONFIG_DYNAMIC_DEBUG_CORE. drm-printk is an independent print control system using __drm_debug bits. The plan is to find the low-level macros in which to insert a pr_debug call, their eventual callsites will have distinct METADATA, so will be itemized in control, and individually selectable. Signed-off-by: Jim Cromie --- drivers/gpu/drm/drm_print.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c index 111b932cf2a9..52abaf2ae053 100644 --- a/drivers/gpu/drm/drm_print.c +++ b/drivers/gpu/drm/drm_print.c @@ -27,6 +27,7 @@ #include +#include #include #include #include @@ -54,6 +55,40 @@ MODULE_PARM_DESC(debug, "Enable debug output, where each bit enables a debug cat "\t\tBit 8 (0x100) will enable DP messages (displayport code)"); module_param_named(debug, __drm_debug, int, 0600); +/* POC for callback -> ddebug_exec_queries */ +unsigned int __drm_debug2; +EXPORT_SYMBOL(__drm_debug2); + +static int param_set_dyndbg(const char *val, const struct kernel_param *kp) +{ + int chgct, result; + + result = kstrtouint(val, 0, (unsigned int *)kp->arg); + pr_warn("set_dyndbg: result:%d from %s\n", result, val); + + if (result) + chgct = dynamic_debug_exec_queries("module=drm* +p", NULL); + else + chgct = dynamic_debug_exec_queries("module=drm* -p", NULL); + + pr_warn("change ct:%d\n", chgct); + return 0; +} +static int param_get_dyndbg(char *buffer, const struct kernel_param *kp) +{ + return scnprintf(buffer, PAGE_SIZE, "%u\n", + *((unsigned int *)kp->arg)); +} +static const struct kernel_param_ops param_ops_dyndbg = { + .set = param_set_dyndbg, + .get = param_get_dyndbg, +}; + +MODULE_PARM_DESC(debug_dyn, "Enable debug output, where each bit enables a debug category.\n" + "\t\tthese wont work yet\n"); +module_param_cb(debug_dyn, ¶m_ops_dyndbg, &__drm_debug2, 0644); + + void __drm_puts_coredump(struct drm_printer *p, const char *str) { struct drm_print_iterator *iterator = p->arg; From patchwork Wed Aug 26 17:00:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 11740071 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 4E45513B6 for ; Thu, 27 Aug 2020 06:58:18 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 2973822B4E for ; Thu, 27 Aug 2020 06:58:18 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="KJPDjh/C" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 2973822B4E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B57B66EB38; Thu, 27 Aug 2020 06:57:40 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-io1-xd41.google.com (mail-io1-xd41.google.com [IPv6:2607:f8b0:4864:20::d41]) by gabe.freedesktop.org (Postfix) with ESMTPS id 037176E226 for ; Wed, 26 Aug 2020 17:00:54 +0000 (UTC) Received: by mail-io1-xd41.google.com with SMTP id g13so2846334ioo.9 for ; Wed, 26 Aug 2020 10:00:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=1oMOfwKEWmeEjN59H8V2mAsUSePsbdq0+d1rTYV7cF4=; b=KJPDjh/CsHrR6htvj8qR1P2z1AP7kbrQj+KgZDUBR0k0fiXnMtd4xcisqf+NCVtUJa 5WvbWO8VmZBIH5lnToxyIG2ucMnzMZaFPYUULUWnFEMUeFkfSEgSZej8eirrQCNRc8fA 5iB4aR78TvM4rU5PyJBkp+d9UnBfkjWT+WR01pGGzlAYKUciTKI9Hah3ONMJSuz/892u JfFr26tO4jzqG9wLaxUVSjKCXqNdGqHcvjBisRNa6qhjpu7g6ZRE9s0fodG6rRP4Gy4o 5duMgFwrJLBZtNEOHuCyrNO8QQbRiOoFqGixd9T9wB9TP9a8PcSlNLIn/uaWgpAnSunE a9ZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1oMOfwKEWmeEjN59H8V2mAsUSePsbdq0+d1rTYV7cF4=; b=LgJrpF6kJZGaOiBAk3nN2xwFITksFyHgoFvTK9RMxH+0C10kEJxVSbgWRWcS6Efyhq 1aBCQpeF8WSnH33txNUjpsWYcpP4gx63eyK6r28BhPngIMUV6YHvrUAu5zQa5uu2XrYx IzCRheXRHqSoyjJKaXUgMtxAChpDQ6U+T/1yt87N8iw8jvlX3iedg3BvleKC1lrsbprF UQLJUQcodOfqZarYHiQn1XP8DTWqMPzAYn7MRWSCqzV4B85FY+KNTTxKxHQLUDEskply 5wWTvct8N/B2v/NIXGzFd+so4a8g5hbUah8oNj0mGDXw3q7k6rCIbCc3i12Evw60P/Dh Pr9g== X-Gm-Message-State: AOAM5319kJ8GN28aWS4Da+/Y5WagU8MdUQKD+s3uln6UN+qUsl4XPLj2 l1YVMojij4o/PLmNVZeNOrM= X-Google-Smtp-Source: ABdhPJzx+6JA1HW/akyHMxAsm/O6krv6/v8LwlcppdbYy47niZhoGtCRaXULzeNoN8h2OHZ9wmxWMA== X-Received: by 2002:a02:c919:: with SMTP id t25mr16243562jao.38.1598461253305; Wed, 26 Aug 2020 10:00:53 -0700 (PDT) Received: from frodo.hsd1.co.comcast.net ([2601:284:8203:5970::c4c]) by smtp.googlemail.com with ESMTPSA id p78sm1479606iod.0.2020.08.26.10.00.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Aug 2020 10:00:52 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, jbaron@akamai.com Subject: [PATCH 2/4] drm-printk: call pr_debug() from drm_dev_dbg, __drm_dbg Date: Wed, 26 Aug 2020 11:00:39 -0600 Message-Id: <20200826170041.2497546-3-jim.cromie@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200826170041.2497546-1-jim.cromie@gmail.com> References: <20200826170041.2497546-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 27 Aug 2020 06:57:36 +0000 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: , Cc: Thomas Zimmermann , Jim Cromie , David Airlie Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Put the pr_debug() after the vaf setup work, so as to use it. And move the if-category-disabled-return after both, so the pr_debug() runs unconditionally. This lets both debug-printers execute independently, according to their respective controls, allowing later comparison to each other. #> echo module=drm +pmftl > /proc/dynamic_debug/control yields logging like: [1772] drm:drm_dev_dbg:305: i915 0000:00:02.0: [drm:intel_atomic_get_global_obj_state [i915]] Cat:16 Added new global object 000000006fa51dd6 state 00000000bbddcf9d to 000000005f6e1bc3 [1772] drm:drm_dev_dbg:305: i915 0000:00:02.0: [drm:intel_atomic_get_global_obj_state [i915]] Cat:16 Added new global object 000000002a5e020a state 000000002b3685ed to 000000005f6e1bc3 [198] drm:drm_dev_dbg:305: i915 0000:00:02.0: [drm:drm_update_vblank_count [drm]] Cat:32 updating vblank count on crtc 0: current=260920, diff=0, hw=192024 hw_last=192024 [1772] drm:__drm_dbg:331: [drm:drm_atomic_nonblocking_commit [drm]] Cat:16 committing 000000005f6e1bc3 nonblocking [1772] drm:__drm_dbg:331: [drm:drm_mode_object_put.part.0 [drm]] Cat:1 OBJ ID: 113 (4) [1772] drm:__drm_dbg:331: [drm:drm_ioctl [drm]] Cat:1 comm="gnome-shell" pid=1772, dev=0xe200, auth=1, I915_GEM_CREATE [1772] drm:__drm_dbg:331: [drm:drm_ioctl [drm]] Cat:1 comm="gnome-shell" pid=1772, dev=0xe200, auth=1, I915_GEM_SET_DOMAIN [1772] drm:__drm_dbg:331: [drm:drm_ioctl [drm]] Cat:1 comm="gnome-shell" pid=1772, dev=0xe200, auth=1, I915_GEM_SET_TILING [1772] drm:__drm_dbg:331: [drm:drm_ioctl [drm]] Cat:1 comm="gnome-shell" pid=1772, dev=0xe200, auth=1, I915_GEM_MMAP_OFFSET Clearly, the mflt flags arent very helpful here, and callsite control is all or nothing (since theres only 2 callsites handling all the categories). We are 1 below the function layer of interest, but theres room for optimism. Signed-off-by: Jim Cromie --- drivers/gpu/drm/drm_print.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c index 52abaf2ae053..fa2bcf4ec475 100644 --- a/drivers/gpu/drm/drm_print.c +++ b/drivers/gpu/drm/drm_print.c @@ -27,6 +27,7 @@ #include +#define DYNAMIC_DEBUG_MODULE #include #include #include @@ -61,17 +62,17 @@ EXPORT_SYMBOL(__drm_debug2); static int param_set_dyndbg(const char *val, const struct kernel_param *kp) { - int chgct, result; + int chgct, rc, result; - result = kstrtouint(val, 0, (unsigned int *)kp->arg); - pr_warn("set_dyndbg: result:%d from %s\n", result, val); + rc = kstrtouint(val, 0, &result); + pr_debug("set_dyndbg: rc:%d got:%d from %s\n", rc, result, val); if (result) chgct = dynamic_debug_exec_queries("module=drm* +p", NULL); else chgct = dynamic_debug_exec_queries("module=drm* -p", NULL); - pr_warn("change ct:%d\n", chgct); + pr_debug("change ct:%d\n", chgct); return 0; } static int param_get_dyndbg(char *buffer, const struct kernel_param *kp) @@ -297,13 +298,16 @@ void drm_dev_dbg(const struct device *dev, enum drm_debug_category category, struct va_format vaf; va_list args; - if (!drm_debug_enabled(category)) - return; - va_start(args, format); vaf.fmt = format; vaf.va = &args; + dev_dbg(dev, "[" DRM_NAME ":%ps] Cat:%d %pV", + __builtin_return_address(0), category, &vaf); + + if (!drm_debug_enabled(category)) + return; + if (dev) dev_printk(KERN_DEBUG, dev, "[" DRM_NAME ":%ps] %pV", __builtin_return_address(0), &vaf); @@ -320,13 +324,16 @@ void __drm_dbg(enum drm_debug_category category, const char *format, ...) struct va_format vaf; va_list args; - if (!drm_debug_enabled(category)) - return; - va_start(args, format); vaf.fmt = format; vaf.va = &args; + pr_debug("[" DRM_NAME ":%ps] Cat:%d %pV", + __builtin_return_address(0), category, &vaf); + + if (!drm_debug_enabled(category)) + return; + printk(KERN_DEBUG "[" DRM_NAME ":%ps] %pV", __builtin_return_address(0), &vaf); From patchwork Wed Aug 26 17:00:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 11740057 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 1FB7313A4 for ; Thu, 27 Aug 2020 06:57:57 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id F290D22B4E for ; Thu, 27 Aug 2020 06:57:56 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e4Vi6MHy" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F290D22B4E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id B80636EB26; Thu, 27 Aug 2020 06:57:38 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-il1-x143.google.com (mail-il1-x143.google.com [IPv6:2607:f8b0:4864:20::143]) by gabe.freedesktop.org (Postfix) with ESMTPS id BFAC16E228; Wed, 26 Aug 2020 17:00:56 +0000 (UTC) Received: by mail-il1-x143.google.com with SMTP id q14so2385828ilj.8; Wed, 26 Aug 2020 10:00:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=F84GgHzsN1yeQN6PQRJoTTLm9lE05lKnfqitPnJqWLU=; b=e4Vi6MHy6UTLsDMSjkNofHtVcQzUuSjP1UEi4Zl4t/K7FK4wYLGiwebK/NStDprP7I odFjBwSqQCKsEVlcnX+yDkG/CENe6HUJJbKAsN/W791aS2qH2UWYswF/4ewLctaolHpV CBm8TzzLoKGLF8vkT58wSBPAmXdL2F7T/66f8TVM9Gf3FamqClb7nmLl1NgqcEsVUmHo dgabwZx0bB+Gx/t4j2JaxG/c/kX2yzPUPR68YgPP5jd8wvn7WTQR0BV2WhYxSEog3f9l QghttGRVagCMEoeemQdkmK0WpfU9s6H6i6hxGmw16LnQM+gcSjIo4/FUoxg6Nb/fe5Ep DnAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=F84GgHzsN1yeQN6PQRJoTTLm9lE05lKnfqitPnJqWLU=; b=IZsCJ6tRSgF8vckYtnInz6Mf3Efcl9pzfdbdCQLmnuzZcRPDrwaq4DHW5B8+gt+6tc NR3pKtUTF6Qljyk6cbkvFpcXjNCXzRj7ub6mTjTHJEMcgoJrH9ol0nCFvsuvxIV+Jb1/ /++uY/3WMnCEPqmMvU5zEir3xqkdidJK/XJpULkvWzvJdcacBuaXvuJx0knzGN4B2DtZ gtCgpKJ/BxYUSzvglhNGhI3goJdHH7N3FAi/IxhLZ7z3/5yEIHuMzjxFk/8rDUFAXVMb 6/82wK4QbXA99Ixuw1VnmOO4lOAL8qnva9N19CHsZjKsq785YEhA+A0gx+YE8UxAP6A8 dIGg== X-Gm-Message-State: AOAM531kRgCs+uhqlh25OcBxL0yRPruvbX9GpIz/wHRKeV2kSpioNAiF r26sU+l/zj69vm+5mfeRXt0= X-Google-Smtp-Source: ABdhPJym6BLUjQHAO+G1iUIi+hQhRvVbz7JUbJGnpDxNbIAXPZhbdIj6klLQKPC0ZPXyAe01GYF/mw== X-Received: by 2002:a92:bb8d:: with SMTP id x13mr13758338ilk.243.1598461256033; Wed, 26 Aug 2020 10:00:56 -0700 (PDT) Received: from frodo.hsd1.co.comcast.net ([2601:284:8203:5970::c4c]) by smtp.googlemail.com with ESMTPSA id p78sm1479606iod.0.2020.08.26.10.00.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Aug 2020 10:00:55 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, jbaron@akamai.com Subject: [PATCH 3/4] i915: add -DDYNAMIC_DEBUG_MODULE to i915/gvt/Makefile Date: Wed, 26 Aug 2020 11:00:40 -0600 Message-Id: <20200826170041.2497546-4-jim.cromie@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200826170041.2497546-1-jim.cromie@gmail.com> References: <20200826170041.2497546-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 27 Aug 2020 06:57:36 +0000 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: , Cc: Jim Cromie , intel-gfx@lists.freedesktop.org, David Airlie , Rodrigo Vivi , intel-gvt-dev@lists.freedesktop.org, Zhi Wang Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This addition to cflags enables dyndbg in the gvt component of the i915 module, on a CONFIG_DYNAMIC_DEBUG_CORE build. So here are the message classifications that the gvt driver uses. cut -d= -f2 | cut -d\ -f2,3 | \ perl -ne 'chomp $_ && $h{$_}++; END{print "$_\" \tseen $h{$_}\n" for sort keys %h}' "gvt: cmd:" seen 11 "gvt: core:" seen 48 "gvt: dpy:" seen 4 "gvt: el:" seen 21 "gvt: irq:" seen 1 "gvt: mm:" seen 6 "gvt: mmio:" seen 9 "gvt: render:" seen 1 "gvt: sched:" seen 15 Signed-off-by: Jim Cromie --- drivers/gpu/drm/i915/gvt/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/gvt/Makefile b/drivers/gpu/drm/i915/gvt/Makefile index ea8324abc784..2c581e910688 100644 --- a/drivers/gpu/drm/i915/gvt/Makefile +++ b/drivers/gpu/drm/i915/gvt/Makefile @@ -5,5 +5,6 @@ GVT_SOURCE := gvt.o aperture_gm.o handlers.o vgpu.o trace_points.o firmware.o \ execlist.o scheduler.o sched_policy.o mmio_context.o cmd_parser.o debugfs.o \ fb_decoder.o dmabuf.o page_track.o -ccflags-y += -I $(srctree)/$(src) -I $(srctree)/$(src)/$(GVT_DIR)/ -i915-y += $(addprefix $(GVT_DIR)/, $(GVT_SOURCE)) +ccflags-y += -I $(srctree)/$(src) -I $(srctree)/$(src)/$(GVT_DIR)/ +ccflags-y += -DDYNAMIC_DEBUG_MODULE +i915-y += $(addprefix $(GVT_DIR)/, $(GVT_SOURCE)) From patchwork Wed Aug 26 17:00:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jim Cromie X-Patchwork-Id: 11740077 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 562B613A4 for ; Thu, 27 Aug 2020 06:58:23 +0000 (UTC) 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 mail.kernel.org (Postfix) with ESMTPS id 34CF222B4E for ; Thu, 27 Aug 2020 06:58:23 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="UCIjmonq" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 34CF222B4E Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7E7736EB37; Thu, 27 Aug 2020 06:57:40 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-il1-x142.google.com (mail-il1-x142.google.com [IPv6:2607:f8b0:4864:20::142]) by gabe.freedesktop.org (Postfix) with ESMTPS id 407356E221; Wed, 26 Aug 2020 17:00:59 +0000 (UTC) Received: by mail-il1-x142.google.com with SMTP id j9so2383055ilc.11; Wed, 26 Aug 2020 10:00:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=Iifl+SrM927K50PeABJCPm1vnXa9Xbx3f5/rhAuv9Uk=; b=UCIjmonqsdoZZADUxRAJErxSCQ15XXBm5g2t7eD7umbVbTkt95mBhxnPcyoiqdMx/f 4ZgPZTFwDWxO/9ZVmGdf9LPDnJXCKtig3T2BQcWEgkreb/2mFIu5yG4B33T7PobYhe50 pLHQtCBOOSU9LEyJAIyaFrcb3ZI31jI5GxIcB21o6zVS3IFo3vJEBmWPPqIcvc0hwf7N EqkpOyj1qz4FmuO2LG2ehBAzEsIiauUHZcqh1e5ESjJdRZ0CUFyxdJqfG3oGzZ/+zJbj HGGUi22gfUelU1RgtqRjp3N1HZgSOyM2PZQZdMQkkjFM/694y+SxzKI3B8Z3sq5Pbkm+ 3/ag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=Iifl+SrM927K50PeABJCPm1vnXa9Xbx3f5/rhAuv9Uk=; b=KZmuVuLEzYCJrdvakDATBvU0WeGP1JMaQPeDuvZW8E2JUpU1/i82JvO40Uhcgb4CiT hdtjmH8ow9UeNoHG8GYeJCgIBoupCsXqv8M/FXYfKJRVY+uRZ1mGYrFffGfQsgd57tWp wrABuv23SdsT2Dewwrc54aNOl1xDjWplQq0grSRlQv4JrpM73OIo5q193jjccrDjjMcI lOLmLO/563kTQ/+9WExICeVA1q3KgI4lVh9fEzDLjM0qmGXzOYkv+DFKwFACLpIBD8s5 62ypZpZ7ZjfT/wRWGk/7iUd+Qyytqi6zU0GoIXCA9W46tz3dXvybaA0CwFmZaEYRblpQ AgUA== X-Gm-Message-State: AOAM532U5J8D1+PPXPk6ZbHEughj+AshSw2sXzT6QqtNvjrLXvjrVb04 rCAFOjLLiVAPrCYZt/01Z80= X-Google-Smtp-Source: ABdhPJxBi1zHiX32RRVtEu9X620S7bHDX1wd9DIE9g9VRWFTCA6+Ytp4dwOPtFz82AaD5G33jga18w== X-Received: by 2002:a92:d0c7:: with SMTP id y7mr14347265ila.224.1598461258562; Wed, 26 Aug 2020 10:00:58 -0700 (PDT) Received: from frodo.hsd1.co.comcast.net ([2601:284:8203:5970::c4c]) by smtp.googlemail.com with ESMTPSA id p78sm1479606iod.0.2020.08.26.10.00.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Aug 2020 10:00:57 -0700 (PDT) From: Jim Cromie To: linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, jbaron@akamai.com Subject: [PATCH 4/4] i915: POC use dynamic_debug_exec_queries to control pr_debugs in gvt Date: Wed, 26 Aug 2020 11:00:41 -0600 Message-Id: <20200826170041.2497546-5-jim.cromie@gmail.com> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20200826170041.2497546-1-jim.cromie@gmail.com> References: <20200826170041.2497546-1-jim.cromie@gmail.com> MIME-Version: 1.0 X-Mailman-Approved-At: Thu, 27 Aug 2020 06:57:36 +0000 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: , Cc: Jim Cromie , intel-gfx@lists.freedesktop.org, David Airlie , Rodrigo Vivi Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The gvt component of this driver has ~120 pr_debugs, in 9 "classes". Add a "knob", like drm.debug, to map bits to these classes. bash-5.0# echo 0x01 > /sys/module/i915/parameters/debug_dyn set_dyndbg: result:0x1 from 0x01 dyndbg: query 0: "format='^gvt: cmd: ' +p" dyndbg: entry, buf:'format='^gvt: cmd: ' +p' dyndbg: start-of-word:0 'format='^gvt: cmd: ' +p' dyndbg: start-of-word:1 ''^gvt: cmd: ' +p' dyndbg: start-of-word:2 '+p' dyndbg: split into words: "format" "^gvt: cmd: " "+p" dyndbg: op='+' dyndbg: flags=0x1 dyndbg: *flagsp=0x1 *maskp=0xffffffff dyndbg: key:'format' arg:'^gvt: cmd: ' dyndbg: parsed: func="" file="" module="i915" format="^gvt: cmd: " lineno=0-0 dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:3081 [i915]init_cmd_table =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:1376 [i915]gen8_check_mi_display_flip =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:1373 [i915]gen8_check_mi_display_flip =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:745 [i915]parser_exec_state_dump =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:744 [i915]parser_exec_state_dump =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:742 [i915]parser_exec_state_dump =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:733 [i915]parser_exec_state_dump =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:729 [i915]parser_exec_state_dump =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:722 [i915]parser_exec_state_dump =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:716 [i915]parser_exec_state_dump =p dyndbg: changed drivers/gpu/drm/i915/gvt/cmd_parser.c:691 [i915]print_opcode =p dyndbg: applied: func="" file="" module="i915" format="^gvt: cmd: " lineno=0-0 dyndbg: processed 1 queries, with 11 matches, 0 errs change ct:11 on format='gvt: cmd: ' change ct:11 Signed-off-by: Jim Cromie --- drivers/gpu/drm/i915/i915_params.c | 76 ++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_params.c b/drivers/gpu/drm/i915/i915_params.c index 8d8db9ff0a48..4e1f01ab4865 100644 --- a/drivers/gpu/drm/i915/i915_params.c +++ b/drivers/gpu/drm/i915/i915_params.c @@ -255,3 +255,79 @@ void i915_params_free(struct i915_params *params) I915_PARAMS_FOR_EACH(FREE); #undef FREE } + +/* POC for callback -> dynamic_debug_exec_queries */ +unsigned long __new_knob; +EXPORT_SYMBOL(__new_knob); + +static char *pr_debug_classes[] = { + "gvt: cmd: ", + "gvt: core: ", + "gvt: dpy: ", + "gvt: el: ", + "gvt: irq: ", + "gvt: mm: ", + "gvt: mmio: ", + "gvt: render: ", + "gvt: sched: " +}; +#define NUM_CLASSES ARRAY_SIZE(pr_debug_classes) +#define OUR_QUERY_SIZE 128 /* we need about 20 */ + +#include + +static int param_set_dyndbg(const char *instr, const struct kernel_param *kp) +{ + static unsigned long int old_val; + unsigned int val; + unsigned long int changes, result; + int rc, chgct = 0, totct = 0, bitpos; + char query[OUR_QUERY_SIZE]; + + rc = kstrtouint(instr, 0, &val); + if (rc) { + pr_err("set_dyndbg: failed\n"); + return -EINVAL; + } + result = val; + pr_info("set_dyndbg: result:0x%lx from %s\n", result, instr); + + changes = result ^ old_val; + + for_each_set_bit(bitpos, &changes, NUM_CLASSES) { + + sprintf(query, "format='^%s' %cp", pr_debug_classes[bitpos], + test_bit(bitpos, &result) ? '+' : '-'); + + chgct = dynamic_debug_exec_queries(query, "i915"); + totct += chgct; + pr_info("change ct:%d on format='%s'\n", chgct, + pr_debug_classes[bitpos]); + } + old_val = result; + pr_info("change ct:%d\n", totct); + return 0; +} +static int param_get_dyndbg(char *buffer, const struct kernel_param *kp) +{ + return scnprintf(buffer, PAGE_SIZE, "%u\n", + *((unsigned int *)kp->arg)); +} +static const struct kernel_param_ops param_ops_dyndbg = { + .set = param_set_dyndbg, + .get = param_get_dyndbg, +}; + +MODULE_PARM_DESC(debug_dyn, " enable dynamic-debug by format-string classifications.\n" + "\t\twhich are:" + "\n\t\t gvt: cmd:" + "\n\t\t gvt: core:" + "\n\t\t gvt: dpy:" + "\n\t\t gvt: el:" + "\n\t\t gvt: irq:" + "\n\t\t gvt: mm:" + "\n\t\t gvt: mmio:" + "\n\t\t gvt: render:" + "\n\t\t gvt: sched:" "\n"); + +module_param_cb(debug_dyn, ¶m_ops_dyndbg, &__new_knob, 0644);