Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp4819612imu; Tue, 8 Jan 2019 06:54:43 -0800 (PST) X-Google-Smtp-Source: ALg8bN7w/mndeRmLoQaFTk0l8kAtHiFb5BL3DHft0kZJf8yHL5PFhMpXJcX5o9UI+r7wOBXnNn0W X-Received: by 2002:a62:44d8:: with SMTP id m85mr2081541pfi.164.1546959282998; Tue, 08 Jan 2019 06:54:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1546959282; cv=none; d=google.com; s=arc-20160816; b=ebMDCtZB9q/mfP/iudtlxJXg5BIJ0GqK5BGKknWFxk+oamDV8Rdy5Uk7I3ZVzgIxM4 RYtWS0SVAqnJR8peRBHR9dfcUBIWsaKqbCToKnMO+ZjxYPqmESxrbvSMGo/TEPEszpm1 yVoeNdLP1AUOTYDDA+0UqTRjEJ2eghiWqwrg62TxX5FGR+p9VqDJFL/SlVhY0YYf5BVO V4A+viEsHLigoAdaIKSX+0vypkv3DEaC6erCNI7x8iIqLgTeRlXTVqt15qGfMs3DZQy+ xnNDMqO0IHWPNPx4g+5Pdf+2Zq72UWnnpKRpdTDeG4LjYWN/yOswRfj5lbBzdraffkLc 66CA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=grPb3m9+iDbgupM8IETZmRi6k/ptyR4325fEN5H6V34=; b=e2Jki9VmxPpJo6JoWNpebPmDyzflzipcycBc/qppPdaLf3jv5itL5Cn2993ZBLHsju dL0TxQpyRmXp+90nY581RpzbWqv5Ix0VGl3TBMNkhSHGx2Z/KwZaTwqNAQfJk4SeZ6EF ZsCxRAo8IcWw/bFy7lo2pNblI6l8TybepQ75V2bUOa5oBlIZJhCfta/D2faTNllE6HHP YOPAUMzJIW/OMCaX497U1k83EilGKyofaoWoDu/nD/2mIq8JJOQN5JKigvgfqDKXmq5g VjsKZYx1o21o8tedMYRogxDsrl4o/HU+SzgSbi2OnybOF18sxjnhC5UOfM0VBrNHV6xS ArbA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 66si519322plc.125.2019.01.08.06.54.27; Tue, 08 Jan 2019 06:54:42 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728950AbfAHOvZ (ORCPT + 99 others); Tue, 8 Jan 2019 09:51:25 -0500 Received: from mail.bootlin.com ([62.4.15.54]:41384 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728265AbfAHOvT (ORCPT ); Tue, 8 Jan 2019 09:51:19 -0500 Received: by mail.bootlin.com (Postfix, from userid 110) id 57AFC209C2; Tue, 8 Jan 2019 15:51:16 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.2 Received: from localhost.localdomain (aaubervilliers-681-1-45-241.w90-88.abo.wanadoo.fr [90.88.163.241]) by mail.bootlin.com (Postfix) with ESMTPSA id 11359206DC; Tue, 8 Jan 2019 15:51:16 +0100 (CET) From: Paul Kocialkowski To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: Eric Anholt , David Airlie , Maxime Ripard , Thomas Petazzoni , Eben Upton , Daniel Vetter , Boris Brezillon , Paul Kocialkowski Subject: [PATCH v3 4/4] drm/vc4: Add a debugfs entry to disable/enable the load tracker Date: Tue, 8 Jan 2019 15:50:56 +0100 Message-Id: <20190108145056.2276-5-paul.kocialkowski@bootlin.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190108145056.2276-1-paul.kocialkowski@bootlin.com> References: <20190108145056.2276-1-paul.kocialkowski@bootlin.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In order to test whether the load tracker is working as expected, we need the ability to compare the commit result with the underrun indication. With the load tracker always enabled, commits that are expected to trigger an underrun are always rejected, so userspace cannot get the actual underrun indication from the hardware. Add a debugfs entry to disable/enable the load tracker, so that a DRM commit expected to trigger an underrun can go through with the load tracker disabled. The underrun indication is then available to userspace and can be checked against the commit result with the load tracker enabled. Signed-off-by: Paul Kocialkowski Signed-off-by: Boris Brezillon --- Changes since v3 (of the standalone patch): * Added a comment for the load_tracker_enabled field; * Moved the ->load_tracker_enabled initialization in vc4_kms_load(); * Moved the if (vc4->load_tracker_enabled) check in vc4_load_tracker_atomic_check(); * Renamed the debugfs node to hvs_load_tracker to match hvs_underrun. Changes since v2: * Used the standard debugfs_create_bool instead of reinventing it. Changes since v1: * Moved all the debugfs-related functions and structure to vc4_debugfs.c. --- drivers/gpu/drm/vc4/vc4_debugfs.c | 9 +++++++++ drivers/gpu/drm/vc4/vc4_drv.h | 3 +++ drivers/gpu/drm/vc4/vc4_kms.c | 9 +++++++++ 3 files changed, 21 insertions(+) diff --git a/drivers/gpu/drm/vc4/vc4_debugfs.c b/drivers/gpu/drm/vc4/vc4_debugfs.c index 64021bcba041..59cdad89f844 100644 --- a/drivers/gpu/drm/vc4/vc4_debugfs.c +++ b/drivers/gpu/drm/vc4/vc4_debugfs.c @@ -36,6 +36,15 @@ static const struct drm_info_list vc4_debugfs_list[] = { int vc4_debugfs_init(struct drm_minor *minor) { + struct vc4_dev *vc4 = to_vc4_dev(minor->dev); + struct dentry *dentry; + + dentry = debugfs_create_bool("hvs_load_tracker", S_IRUGO | S_IWUSR, + minor->debugfs_root, + &vc4->load_tracker_enabled); + if (!dentry) + return -ENOMEM; + return drm_debugfs_create_files(vc4_debugfs_list, VC4_DEBUGFS_ENTRIES, minor->debugfs_root, minor); } diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h index 30cde58be737..4ba05c955787 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.h +++ b/drivers/gpu/drm/vc4/vc4_drv.h @@ -195,6 +195,9 @@ struct vc4_dev { int power_refcount; + /* Set to true when the load tracker is active. */ + bool load_tracker_enabled; + /* Mutex controlling the power refcount. */ struct mutex power_lock; diff --git a/drivers/gpu/drm/vc4/vc4_kms.c b/drivers/gpu/drm/vc4/vc4_kms.c index 695ec793d429..48f07f371e63 100644 --- a/drivers/gpu/drm/vc4/vc4_kms.c +++ b/drivers/gpu/drm/vc4/vc4_kms.c @@ -435,6 +435,10 @@ static int vc4_load_tracker_atomic_check(struct drm_atomic_state *state) } } + /* Don't check the load when the tracker is disabled. */ + if (!vc4->load_tracker_enabled) + return 0; + /* The absolute limit is 2Gbyte/sec, but let's take a margin to let * the system work when other blocks are accessing the memory. */ @@ -507,6 +511,11 @@ int vc4_kms_load(struct drm_device *dev) struct vc4_load_tracker_state *load_state; int ret; + /* Start with the load tracker enabled. Can be disabled through the + * debugfs load_tracker file. + */ + vc4->load_tracker_enabled = true; + sema_init(&vc4->async_modeset, 1); /* Set support for vblank irq fast disable, before drm_vblank_init() */ -- 2.20.1