From patchwork Tue Jan 19 12:18:18 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12029725 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BAE81C433DB for ; Tue, 19 Jan 2021 12:18:26 +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 415A122D2A for ; Tue, 19 Jan 2021 12:18:26 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 415A122D2A 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 81D9A6E86F; Tue, 19 Jan 2021 12:18:25 +0000 (UTC) Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3651A6E86F for ; Tue, 19 Jan 2021 12:18:24 +0000 (UTC) Received: by mail-ej1-x62d.google.com with SMTP id l9so22470220ejx.3 for ; Tue, 19 Jan 2021 04:18:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=AS1G0KOdPqgmsdiO0n8KjjxsqHB1GYyyOovN30yXXSs=; b=bNii2Sk+anXwZbhTw79opYXLmqWQR9QVPCR1fiobh5TrSPWBrdukNIkoAnDc2N7hkh GEI+LHA6J1uQrykZ5Wt+VTkKPQzg2c6ZgPYoEMjoMWL+ghyH4bEBCp6nVzhm0Tx1teA5 e0x4HRCguBLrOBMmmBZQQemsEpL0L+E3D+IDyVv57/4daRcZoATB2F8vpgjQFOyblqUI 5Nm692p03FKNhhvcOVf1TDjZfXZm9mrkrFZIjQv8qUyKtnQ+N2H5HhwhhCppOEwpHo+g e+p0z+ddvPLmo2dyc0eDgUK7v6DbLfLoikB8dQY5L0ghmQ+hvf+SjUA6f+3JpX8uFQh6 i4Hw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=AS1G0KOdPqgmsdiO0n8KjjxsqHB1GYyyOovN30yXXSs=; b=GJEXr4ir6GGKx6cMjkglnUr9+JdkawzEb4z4RULqOBZ/2y5b81JKnbb5YGF5wqN9qJ idrBvjCmPqfiNwko4QdBIGeEyDG69EB34ZaIhc8fLbPKwv6/S2iDKuJx0QLZvmS+1oLa ndL1euBRp/IH3htzY7gYECrqPL+qh+X+E31Xifj4FAT17PoP/L1LCKJ7vpDHKny/zMFT Q/fsBLtcHUWG0xbl+0BQLIkyyCOh+rQqX4WWvHaZ74ipxMkn87ZZwywDw5dDLplUgU/n +JjGw1moPx04FcEXDQ9BHWDS2LdkF4X8gV5EySFDmoakI6rs4/aeWLTkAgSiHSR60KhP f1Hw== X-Gm-Message-State: AOAM532BB21keFLxCPy2crhV4KpbKzqQ81Q0AruZ50PSninjz+VX/DPb kcylm+WeeUszhRN7BPD4ygI= X-Google-Smtp-Source: ABdhPJyUvN8EIbai4dDgkaDEiXsje8njs5+cTMvu5SpPKfkDbNNpFE7d/MEUTAgIuXgZc5F1t9DoqQ== X-Received: by 2002:a17:906:3b97:: with SMTP id u23mr2754760ejf.147.1611058702844; Tue, 19 Jan 2021 04:18:22 -0800 (PST) Received: from abel.fritz.box ([2a02:908:1252:fb60:b05c:1403:9024:973b]) by smtp.gmail.com with ESMTPSA id q9sm7090422ejd.113.2021.01.19.04.18.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 04:18:22 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: ray.huang@amd.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org Subject: [PATCH 1/4] drm/ttm: add debugfs directory v2 Date: Tue, 19 Jan 2021 13:18:18 +0100 Message-Id: <20210119121821.2320-1-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 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" As far as I can tell the buffer_count was never used by an userspace application. The number of BOs in the system is far better suited in debugfs than sysfs and we now should be able to add other information here as well. v2: add that additionally to sysfs Signed-off-by: Christian König Acked-by: Daniel Vetter --- drivers/gpu/drm/ttm/ttm_bo.c | 48 ++------------------------------ drivers/gpu/drm/ttm/ttm_module.c | 4 +++ drivers/gpu/drm/ttm/ttm_module.h | 6 ++-- 3 files changed, 11 insertions(+), 47 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index b65f4b12f986..c289a6a37ff9 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -44,8 +44,6 @@ #include "ttm_module.h" -static void ttm_bo_global_kobj_release(struct kobject *kobj); - /* * ttm_global_mutex - protecting the global BO state */ @@ -54,11 +52,6 @@ unsigned ttm_bo_glob_use_count; struct ttm_bo_global ttm_bo_glob; EXPORT_SYMBOL(ttm_bo_glob); -static struct attribute ttm_bo_count = { - .name = "bo_count", - .mode = S_IRUGO -}; - /* default destructor */ static void ttm_bo_default_destroy(struct ttm_buffer_object *bo) { @@ -84,32 +77,6 @@ static void ttm_bo_mem_space_debug(struct ttm_buffer_object *bo, } } -static ssize_t ttm_bo_global_show(struct kobject *kobj, - struct attribute *attr, - char *buffer) -{ - struct ttm_bo_global *glob = - container_of(kobj, struct ttm_bo_global, kobj); - - return snprintf(buffer, PAGE_SIZE, "%d\n", - atomic_read(&glob->bo_count)); -} - -static struct attribute *ttm_bo_global_attrs[] = { - &ttm_bo_count, - NULL -}; - -static const struct sysfs_ops ttm_bo_global_ops = { - .show = &ttm_bo_global_show -}; - -static struct kobj_type ttm_bo_glob_kobj_type = { - .release = &ttm_bo_global_kobj_release, - .sysfs_ops = &ttm_bo_global_ops, - .default_attrs = ttm_bo_global_attrs -}; - static void ttm_bo_del_from_lru(struct ttm_buffer_object *bo) { struct ttm_bo_device *bdev = bo->bdev; @@ -1228,14 +1195,6 @@ size_t ttm_bo_dma_acc_size(struct ttm_bo_device *bdev, } EXPORT_SYMBOL(ttm_bo_dma_acc_size); -static void ttm_bo_global_kobj_release(struct kobject *kobj) -{ - struct ttm_bo_global *glob = - container_of(kobj, struct ttm_bo_global, kobj); - - __free_page(glob->dummy_read_page); -} - static void ttm_bo_global_release(void) { struct ttm_bo_global *glob = &ttm_bo_glob; @@ -1247,6 +1206,7 @@ static void ttm_bo_global_release(void) kobject_del(&glob->kobj); kobject_put(&glob->kobj); ttm_mem_global_release(&ttm_mem_glob); + __free_page(glob->dummy_read_page); memset(glob, 0, sizeof(*glob)); out: mutex_unlock(&ttm_global_mutex); @@ -1279,10 +1239,8 @@ static int ttm_bo_global_init(void) INIT_LIST_HEAD(&glob->device_list); atomic_set(&glob->bo_count, 0); - ret = kobject_init_and_add( - &glob->kobj, &ttm_bo_glob_kobj_type, ttm_get_kobj(), "buffer_objects"); - if (unlikely(ret != 0)) - kobject_put(&glob->kobj); + debugfs_create_atomic_t("buffer_objects", 0444, ttm_debugfs_root, + &glob->bo_count); out: mutex_unlock(&ttm_global_mutex); return ret; diff --git a/drivers/gpu/drm/ttm/ttm_module.c b/drivers/gpu/drm/ttm/ttm_module.c index c0906437cb1c..f6566603a60f 100644 --- a/drivers/gpu/drm/ttm/ttm_module.c +++ b/drivers/gpu/drm/ttm/ttm_module.c @@ -32,12 +32,14 @@ #include #include #include +#include #include #include "ttm_module.h" static DECLARE_WAIT_QUEUE_HEAD(exit_q); static atomic_t device_released; +struct dentry *ttm_debugfs_root; static struct device_type ttm_drm_class_type = { .name = "ttm", @@ -77,6 +79,7 @@ static int __init ttm_init(void) if (unlikely(ret != 0)) goto out_no_dev_reg; + ttm_debugfs_root = debugfs_create_dir("ttm", NULL); return 0; out_no_dev_reg: atomic_set(&device_released, 1); @@ -94,6 +97,7 @@ static void __exit ttm_exit(void) */ wait_event(exit_q, atomic_read(&device_released) == 1); + debugfs_remove(ttm_debugfs_root); } module_init(ttm_init); diff --git a/drivers/gpu/drm/ttm/ttm_module.h b/drivers/gpu/drm/ttm/ttm_module.h index 45fa318c1585..2f03c2fcf570 100644 --- a/drivers/gpu/drm/ttm/ttm_module.h +++ b/drivers/gpu/drm/ttm/ttm_module.h @@ -31,10 +31,12 @@ #ifndef _TTM_MODULE_H_ #define _TTM_MODULE_H_ -#include +#define TTM_PFX "[TTM] " + struct kobject; +struct dentry; -#define TTM_PFX "[TTM] " extern struct kobject *ttm_get_kobj(void); +extern struct dentry *ttm_debugfs_root; #endif /* _TTM_MODULE_H_ */ From patchwork Tue Jan 19 12:18:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12029729 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0FE86C433DB for ; Tue, 19 Jan 2021 12:18:34 +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 B21D522D2A for ; Tue, 19 Jan 2021 12:18:33 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B21D522D2A 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 2AE6A6E871; Tue, 19 Jan 2021 12:18:27 +0000 (UTC) Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) by gabe.freedesktop.org (Postfix) with ESMTPS id D0F8E6E86F for ; Tue, 19 Jan 2021 12:18:24 +0000 (UTC) Received: by mail-ej1-x62e.google.com with SMTP id by1so21781320ejc.0 for ; Tue, 19 Jan 2021 04:18:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=1sgM5aPNlx24eTbGufLHiwY95EFfN7VzZFf07UEyVAs=; b=ddXJIgrPPfj4oChBzVuL2BoVYklg0zq5P1Ih99xMdyKyqS9wDRNYFCQGqos0nd0rN8 ziwFNEclrV2PWq6L1wW3YLdFpvrkMKh5BHJux2Xs4CyOqm5hqL4WPDe2c9ta/rNKKcHr JVUGnx/66g+Yzw1UPeIfiPs/pZzpwJknAfKD4YO5Kf7XOWjDX45n3/Z2NGpP08N3/t7W DzNLlqDhcLW+8iVfgCEwuqfcELcKHJ2D+HvKypffs8Lbx1N46ZMRNtEvLWZmSDccezU5 XZhEQPtm88v3/dKKVLJEDMIKggq5sTWqUbP4Fleg4u8JFQ1BAWcc8J5ooTkSj7K8BvoM Fzmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1sgM5aPNlx24eTbGufLHiwY95EFfN7VzZFf07UEyVAs=; b=ZItzL894Y3g73UpY47OwvERShPqEaWMzB1nsyLDhLRIsdvpGG9/7vxa642k8QD7xtC 5DoieqoUCDde4cNLoBmrTbaXGSjwn6RNgpfP7lwWL1sd3PanXweA5kHrRhxcPMKO4KYy CXMUs00cEaL5Wti/UawLvBeYvldg3qisHqT4a6uXeN5H78T/D9hobaKyxQR0KiTQ6I8E PpoqO/1QqefATIo1GOplwq3YHfiHUzjqAGvRwaIm96FDVXsmczL3x4kJr6eL9EXtjtuL QX3yWHEdiJBp+9PllpgtQAaAvJ1+moFQ4LD3RjsPanqIT75y24DPBV1HRi1PABoKldtG ZTVQ== X-Gm-Message-State: AOAM5319YHtcevpGvdZCrZJ5NEkM0MMPdVnnfdiEQix8JCbqiLjpT5kj s9WKsXO9ePQlnT7p0C9Vd4g= X-Google-Smtp-Source: ABdhPJx4ryc/GPkp0bA+9/y/a82bgsnQnimgnuPybRDUKiaIRX183DuINBjZ9zJJWRGpKOCtP1tfBA== X-Received: by 2002:a17:906:298b:: with SMTP id x11mr732831eje.158.1611058703604; Tue, 19 Jan 2021 04:18:23 -0800 (PST) Received: from abel.fritz.box ([2a02:908:1252:fb60:b05c:1403:9024:973b]) by smtp.gmail.com with ESMTPSA id q9sm7090422ejd.113.2021.01.19.04.18.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 04:18:23 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: ray.huang@amd.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org Subject: [PATCH 2/4] drm/ttm: add a debugfs file for the global page pools Date: Tue, 19 Jan 2021 13:18:19 +0100 Message-Id: <20210119121821.2320-2-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210119121821.2320-1-christian.koenig@amd.com> References: <20210119121821.2320-1-christian.koenig@amd.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" Instead of printing this on the per device pool. Signed-off-by: Christian König Reviewed-by: Daniel Vetter --- drivers/gpu/drm/ttm/ttm_pool.c | 70 ++++++++++++++++++++++++---------- 1 file changed, 50 insertions(+), 20 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.c index 7b2f60616750..1d61e8fc0e81 100644 --- a/drivers/gpu/drm/ttm/ttm_pool.c +++ b/drivers/gpu/drm/ttm/ttm_pool.c @@ -42,6 +42,8 @@ #include #include +#include "ttm_module.h" + /** * struct ttm_pool_dma - Helper object for coherent DMA mappings * @@ -543,6 +545,17 @@ static unsigned int ttm_pool_type_count(struct ttm_pool_type *pt) return count; } +/* Print a nice header for the order */ +static void ttm_pool_debugfs_header(struct seq_file *m) +{ + unsigned int i; + + seq_puts(m, "\t "); + for (i = 0; i < MAX_ORDER; ++i) + seq_printf(m, " ---%2u---", i); + seq_puts(m, "\n"); +} + /* Dump information about the different pool types */ static void ttm_pool_debugfs_orders(struct ttm_pool_type *pt, struct seq_file *m) @@ -554,6 +567,35 @@ static void ttm_pool_debugfs_orders(struct ttm_pool_type *pt, seq_puts(m, "\n"); } +/* Dump the total amount of allocated pages */ +static void ttm_pool_debugfs_footer(struct seq_file *m) +{ + seq_printf(m, "\ntotal\t: %8lu of %8lu\n", + atomic_long_read(&allocated_pages), page_pool_size); +} + +/* Dump the information for the global pools */ +static int ttm_pool_debugfs_globals_show(struct seq_file *m, void *data) +{ + ttm_pool_debugfs_header(m); + + spin_lock(&shrinker_lock); + seq_puts(m, "wc\t:"); + ttm_pool_debugfs_orders(global_write_combined, m); + seq_puts(m, "uc\t:"); + ttm_pool_debugfs_orders(global_uncached, m); + seq_puts(m, "wc 32\t:"); + ttm_pool_debugfs_orders(global_dma32_write_combined, m); + seq_puts(m, "uc 32\t:"); + ttm_pool_debugfs_orders(global_dma32_uncached, m); + spin_unlock(&shrinker_lock); + + ttm_pool_debugfs_footer(m); + + return 0; +} +DEFINE_SHOW_ATTRIBUTE(ttm_pool_debugfs_globals); + /** * ttm_pool_debugfs - Debugfs dump function for a pool * @@ -566,23 +608,9 @@ int ttm_pool_debugfs(struct ttm_pool *pool, struct seq_file *m) { unsigned int i; - spin_lock(&shrinker_lock); - - seq_puts(m, "\t "); - for (i = 0; i < MAX_ORDER; ++i) - seq_printf(m, " ---%2u---", i); - seq_puts(m, "\n"); - - seq_puts(m, "wc\t:"); - ttm_pool_debugfs_orders(global_write_combined, m); - seq_puts(m, "uc\t:"); - ttm_pool_debugfs_orders(global_uncached, m); - - seq_puts(m, "wc 32\t:"); - ttm_pool_debugfs_orders(global_dma32_write_combined, m); - seq_puts(m, "uc 32\t:"); - ttm_pool_debugfs_orders(global_dma32_uncached, m); + ttm_pool_debugfs_header(m); + spin_lock(&shrinker_lock); for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i) { seq_puts(m, "DMA "); switch (i) { @@ -598,12 +626,9 @@ int ttm_pool_debugfs(struct ttm_pool *pool, struct seq_file *m) } ttm_pool_debugfs_orders(pool->caching[i].orders, m); } - - seq_printf(m, "\ntotal\t: %8lu of %8lu\n", - atomic_long_read(&allocated_pages), page_pool_size); - spin_unlock(&shrinker_lock); + ttm_pool_debugfs_footer(m); return 0; } EXPORT_SYMBOL(ttm_pool_debugfs); @@ -660,6 +685,11 @@ int ttm_pool_mgr_init(unsigned long num_pages) ttm_uncached, i); } +#ifdef CONFIG_DEBUG_FS + debugfs_create_file("page_pool", 0444, ttm_debugfs_root, NULL, + &ttm_pool_debugfs_globals_fops); +#endif + mm_shrinker.count_objects = ttm_pool_shrinker_count; mm_shrinker.scan_objects = ttm_pool_shrinker_scan; mm_shrinker.seeks = 1; From patchwork Tue Jan 19 12:18:20 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12029727 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35405C433E0 for ; Tue, 19 Jan 2021 12:18:31 +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 D60A222D2A for ; Tue, 19 Jan 2021 12:18:30 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D60A222D2A 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 E84536E870; Tue, 19 Jan 2021 12:18:26 +0000 (UTC) Received: from mail-ej1-x62a.google.com (mail-ej1-x62a.google.com [IPv6:2a00:1450:4864:20::62a]) by gabe.freedesktop.org (Postfix) with ESMTPS id B420E6E870 for ; Tue, 19 Jan 2021 12:18:25 +0000 (UTC) Received: by mail-ej1-x62a.google.com with SMTP id g12so28193823ejf.8 for ; Tue, 19 Jan 2021 04:18:25 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=HW4kWonLF4Jixrj4X71t2cre4ql8cQhva/KG2KMO+DU=; b=WI3j5k6+2I1AsHjV/X7RLOPwdxSfiO9z1vcDW0MCEB3fQcQBjrfUXzWbOiJxpf+5UU CCnhS5a8m+pakWleZAouKkJsBERp0sxBnG6gFAIdIMJbl/dysEnKYCjN9ayOn0BWSFPO Uu9ByTf+1Dr9fDQvKE4qxAnLmfg8mZ/5a7H4bzV83uceSu7NSDepNuxu4Ibsr8pSNLlK suMM3SkWLItLjUzxijiR7Vo6CrCCvrsK2/CXAXDpNq5/vuE0grX2iojF2EyDlxDvhVdq ecGuJnaUHKMI9OsWNGeTGok1xOQfpccLsHQJsiq23HCJHuerqJKdxe02KjD8ogCuDsDM vhkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=HW4kWonLF4Jixrj4X71t2cre4ql8cQhva/KG2KMO+DU=; b=Jzo2PWGzIOlNGhtH5KlTzgGPJEeacJ73Vt3WHQKlQlJ9+A6Bv/AunZUX35IAbY9IS6 9YiGIcPwhsi+8v//CRH2Off6M6PfRlC/1/Fhv9Y6AcbxWVpRrQF94t+HkA38DXFBKtSK 0zFn2qkSXbeQS8xmPY8FXQ/qUdRzjpwIbmTaP2vAA0qZ2OFlcNPD9oH/H5Yw321HhQdC xHdFZTUhCVnGUGllUXyF8R1lcbcPGUAiHKStmMYFdCM6a/KOZEHPAKo5gwn3+z3HhzfG OYcI5OwxVFyqY0ahFQh0WpUatJaiNhBXrdh3GLcB876UFca0dgvcRQFXJYM2TlMSzw+b g/wA== X-Gm-Message-State: AOAM532d5VluWLxneuZa0KAQAuofmtPR9y67az4fuhQiZ92ht9CDOwCV gx1DD9zM4K3FM387ZoHtFh0= X-Google-Smtp-Source: ABdhPJw4UF8RXzE4c3F67oVyR5yr5JRyhxCawLnIEvt17E+O/qrYlOsEt7HiFqWvG+UfYMjOZ4GAbg== X-Received: by 2002:a17:906:a84a:: with SMTP id dx10mr2845692ejb.13.1611058704471; Tue, 19 Jan 2021 04:18:24 -0800 (PST) Received: from abel.fritz.box ([2a02:908:1252:fb60:b05c:1403:9024:973b]) by smtp.gmail.com with ESMTPSA id q9sm7090422ejd.113.2021.01.19.04.18.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 04:18:24 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: ray.huang@amd.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org Subject: [PATCH 3/4] drm/ttm: add debugfs entry to test pool shrinker v2 Date: Tue, 19 Jan 2021 13:18:20 +0100 Message-Id: <20210119121821.2320-3-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210119121821.2320-1-christian.koenig@amd.com> References: <20210119121821.2320-1-christian.koenig@amd.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" Useful for testing. v2: add fs_reclaim_acquire()/_release() Signed-off-by: Christian König Reviewed-by: Daniel Vetter --- drivers/gpu/drm/ttm/ttm_pool.c | 53 ++++++++++++++++++++++------------ 1 file changed, 35 insertions(+), 18 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.c index 1d61e8fc0e81..98ecb9c9842c 100644 --- a/drivers/gpu/drm/ttm/ttm_pool.c +++ b/drivers/gpu/drm/ttm/ttm_pool.c @@ -33,6 +33,7 @@ #include #include +#include #ifdef CONFIG_X86 #include @@ -529,6 +530,28 @@ void ttm_pool_fini(struct ttm_pool *pool) } EXPORT_SYMBOL(ttm_pool_fini); +/* As long as pages are available make sure to release at least one */ +static unsigned long ttm_pool_shrinker_scan(struct shrinker *shrink, + struct shrink_control *sc) +{ + unsigned long num_freed = 0; + + do + num_freed += ttm_pool_shrink(); + while (!num_freed && atomic_long_read(&allocated_pages)); + + return num_freed; +} + +/* Return the number of pages available or SHRINK_EMPTY if we have none */ +static unsigned long ttm_pool_shrinker_count(struct shrinker *shrink, + struct shrink_control *sc) +{ + unsigned long num_pages = atomic_long_read(&allocated_pages); + + return num_pages ? num_pages : SHRINK_EMPTY; +} + #ifdef CONFIG_DEBUG_FS /* Count the number of pages available in a pool_type */ static unsigned int ttm_pool_type_count(struct ttm_pool_type *pt) @@ -633,29 +656,21 @@ int ttm_pool_debugfs(struct ttm_pool *pool, struct seq_file *m) } EXPORT_SYMBOL(ttm_pool_debugfs); -#endif - -/* As long as pages are available make sure to release at least one */ -static unsigned long ttm_pool_shrinker_scan(struct shrinker *shrink, - struct shrink_control *sc) +/* Test the shrinker functions and dump the result */ +static int ttm_pool_debugfs_shrink_show(struct seq_file *m, void *data) { - unsigned long num_freed = 0; + struct shrink_control sc = { .gfp_mask = GFP_NOFS }; - do - num_freed += ttm_pool_shrink(); - while (!num_freed && atomic_long_read(&allocated_pages)); + fs_reclaim_acquire(GFP_KERNEL); + seq_printf(m, "%lu/%lu\n", ttm_pool_shrinker_count(&mm_shrinker, &sc), + ttm_pool_shrinker_scan(&mm_shrinker, &sc)); + fs_reclaim_release(GFP_KERNEL); - return num_freed; + return 0; } +DEFINE_SHOW_ATTRIBUTE(ttm_pool_debugfs_shrink); -/* Return the number of pages available or SHRINK_EMPTY if we have none */ -static unsigned long ttm_pool_shrinker_count(struct shrinker *shrink, - struct shrink_control *sc) -{ - unsigned long num_pages = atomic_long_read(&allocated_pages); - - return num_pages ? num_pages : SHRINK_EMPTY; -} +#endif /** * ttm_pool_mgr_init - Initialize globals @@ -688,6 +703,8 @@ int ttm_pool_mgr_init(unsigned long num_pages) #ifdef CONFIG_DEBUG_FS debugfs_create_file("page_pool", 0444, ttm_debugfs_root, NULL, &ttm_pool_debugfs_globals_fops); + debugfs_create_file("page_pool_shrink", 0400, ttm_debugfs_root, NULL, + &ttm_pool_debugfs_shrink_fops); #endif mm_shrinker.count_objects = ttm_pool_shrinker_count; From patchwork Tue Jan 19 12:18:21 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Christian_K=C3=B6nig?= X-Patchwork-Id: 12029731 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.6 required=3.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED,DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 00B89C433E6 for ; Tue, 19 Jan 2021 12:18:36 +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 A79AE22D2A for ; Tue, 19 Jan 2021 12:18:35 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org A79AE22D2A 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 4AB706E877; Tue, 19 Jan 2021 12:18:32 +0000 (UTC) Received: from mail-ej1-x631.google.com (mail-ej1-x631.google.com [IPv6:2a00:1450:4864:20::631]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B8486E871 for ; Tue, 19 Jan 2021 12:18:26 +0000 (UTC) Received: by mail-ej1-x631.google.com with SMTP id gx5so8940457ejb.7 for ; Tue, 19 Jan 2021 04:18:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=am4EeStR9m76doJ/yyB5TRIGf4Z+bQhxXz/r5WL0x9I=; b=rVPA4GBNqxCRtRpsGrR1R7ySyUnknsl5l1qxC/YX7PTlb8e+4BikFE6QkOlv65aXM2 /4ml3+Q6lnsAKFuG85iSsZmpcdzQNglw1ewpaBb2RD78tezgzYZB9oV5FW/j7WyDGOxX wM/pQkb55END23NJhxbVz1LO1HxZTHYxmn4fS+vIgNBImrlagW9rhcd3bt5w4Xiyab5I /Al+xZDvkREB68c1VXQ1QRxL1imu2wo382FNMsNNp9HIsgs0IkITHime3tVuZ++QlCrg MxadHokdepaaazjpiAOoCmA2XBsndeKFA/lQKBFfIN8oDo2oc7EoIvKYOkb7R+T1RVe0 3XuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=am4EeStR9m76doJ/yyB5TRIGf4Z+bQhxXz/r5WL0x9I=; b=byYzZoEtJ5Y3XiQb2ymtp+y8sUO/Ay2IasMAH1b3feoVfoq1Spueop6R1BQD0x6wia YEnukWiqLUgRex9wxc6VyNn4fvlcwrt8a5cR2HTVwJI20Oa9yOgD0hjhpdoP2Owd2Vo9 xi7GHAhcfWZm7FllBb/3iiPggP4IBj8tu6V4ihUtLQmraqJVewVOVF14Txpa9V6HXED6 /3tor+El1/5cWIk+Mc2Ei5gORaltlOZ0n8GzXXNDu0kIaFz39YjU6p1H/9IC6bHePhiM EcznXGJ2q4GKvJ3DgPvltjj7Kx61xx5X2BWRvzAD/Tu20K40WD9d0a/b4fbmXlbJz4+o YPhg== X-Gm-Message-State: AOAM531VR4qWandFZQebWHNVARyuH5NwsNqfHcPtFKU9uF//WP/A2bJF EV0Is+7ZLo+Xi4RB29yNQGocvz72j5Q= X-Google-Smtp-Source: ABdhPJxaBNjNTKbxWAlR/Ba82RRIHLWsjD7wQk2lxbRqzmEJ6Tq1k0Jxvt3sac9qKCM5IlWv1EG8Fg== X-Received: by 2002:a17:906:b186:: with SMTP id w6mr2888280ejy.477.1611058705174; Tue, 19 Jan 2021 04:18:25 -0800 (PST) Received: from abel.fritz.box ([2a02:908:1252:fb60:b05c:1403:9024:973b]) by smtp.gmail.com with ESMTPSA id q9sm7090422ejd.113.2021.01.19.04.18.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Jan 2021 04:18:24 -0800 (PST) From: " =?utf-8?q?Christian_K=C3=B6nig?= " X-Google-Original-From: =?utf-8?q?Christian_K=C3=B6nig?= To: ray.huang@amd.com, daniel@ffwll.ch, dri-devel@lists.freedesktop.org Subject: [PATCH 4/4] drm/ttm: optimize ttm pool shrinker a bit Date: Tue, 19 Jan 2021 13:18:21 +0100 Message-Id: <20210119121821.2320-4-christian.koenig@amd.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210119121821.2320-1-christian.koenig@amd.com> References: <20210119121821.2320-1-christian.koenig@amd.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" Only initialize the DMA coherent pools if they are used. Signed-off-by: Christian König Reviewed-by: Daniel Vetter --- drivers/gpu/drm/ttm/ttm_pool.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/ttm/ttm_pool.c b/drivers/gpu/drm/ttm/ttm_pool.c index 98ecb9c9842c..e0617717113f 100644 --- a/drivers/gpu/drm/ttm/ttm_pool.c +++ b/drivers/gpu/drm/ttm/ttm_pool.c @@ -505,10 +505,12 @@ void ttm_pool_init(struct ttm_pool *pool, struct device *dev, pool->use_dma_alloc = use_dma_alloc; pool->use_dma32 = use_dma32; - for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i) - for (j = 0; j < MAX_ORDER; ++j) - ttm_pool_type_init(&pool->caching[i].orders[j], - pool, i, j); + if (use_dma_alloc) { + for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i) + for (j = 0; j < MAX_ORDER; ++j) + ttm_pool_type_init(&pool->caching[i].orders[j], + pool, i, j); + } } EXPORT_SYMBOL(ttm_pool_init); @@ -524,9 +526,11 @@ void ttm_pool_fini(struct ttm_pool *pool) { unsigned int i, j; - for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i) - for (j = 0; j < MAX_ORDER; ++j) - ttm_pool_type_fini(&pool->caching[i].orders[j]); + if (pool->use_dma_alloc) { + for (i = 0; i < TTM_NUM_CACHING_TYPES; ++i) + for (j = 0; j < MAX_ORDER; ++j) + ttm_pool_type_fini(&pool->caching[i].orders[j]); + } } EXPORT_SYMBOL(ttm_pool_fini); @@ -631,6 +635,11 @@ int ttm_pool_debugfs(struct ttm_pool *pool, struct seq_file *m) { unsigned int i; + if (!pool->use_dma_alloc) { + seq_puts(m, "unused\n"); + return 0; + } + ttm_pool_debugfs_header(m); spin_lock(&shrinker_lock);