Hi
Am 02.09.19 um 14:41 schrieb Gerd Hoffmann:
Wire up drm_mm_print() for vram helpers, using a new debugfs file, so one can see how vram is used:
# cat /sys/kernel/debug/dri/0/vram-mm 0x0000000000000000-0x0000000000000300: 768: used 0x0000000000000300-0x0000000000000600: 768: used 0x0000000000000600-0x0000000000000900: 768: used 0x0000000000000900-0x0000000000000c00: 768: used 0x0000000000000c00-0x0000000000004000: 13312: free total: 16384, used 3072 free 13312
Signed-off-by: Gerd Hoffmann kraxel@redhat.com
include/drm/drm_gem_vram_helper.h | 1 + include/drm/drm_vram_mm_helper.h | 1 + drivers/gpu/drm/drm_vram_mm_helper.c | 33 ++++++++++++++++++++++++++++ 3 files changed, 35 insertions(+)
diff --git a/include/drm/drm_gem_vram_helper.h b/include/drm/drm_gem_vram_helper.h index 17f160dd6e7d..d48fdf90b254 100644 --- a/include/drm/drm_gem_vram_helper.h +++ b/include/drm/drm_gem_vram_helper.h @@ -123,6 +123,7 @@ int drm_gem_vram_driver_dumb_mmap_offset(struct drm_file *file,
- &struct drm_driver with default functions.
*/ #define DRM_GEM_VRAM_DRIVER \
- .debugfs_init = drm_vram_mm_debugfs_init, \
This line seems to be the reason for putting the include statement into the header in patch [2/5]. I suggest to merge both patches into one.
.dumb_create = drm_gem_vram_driver_dumb_create, \ .dumb_map_offset = drm_gem_vram_driver_dumb_mmap_offset, \ .gem_prime_mmap = drm_gem_prime_mmap diff --git a/include/drm/drm_vram_mm_helper.h b/include/drm/drm_vram_mm_helper.h index 2aacfb1ccfae..9e0ac9aaac7d 100644 --- a/include/drm/drm_vram_mm_helper.h +++ b/include/drm/drm_vram_mm_helper.h @@ -60,6 +60,7 @@ static inline struct drm_vram_mm *drm_vram_mm_of_bdev( return container_of(bdev, struct drm_vram_mm, bdev); }
+int drm_vram_mm_debugfs_init(struct drm_minor *minor);
I cannot find a caller of this function. Will this be called form drm_debugfs_init()?
int drm_vram_mm_init(struct drm_vram_mm *vmm, struct drm_device *dev, uint64_t vram_base, size_t vram_size, const struct drm_vram_mm_funcs *funcs); diff --git a/drivers/gpu/drm/drm_vram_mm_helper.c b/drivers/gpu/drm/drm_vram_mm_helper.c index c911781d6728..486061b83a73 100644 --- a/drivers/gpu/drm/drm_vram_mm_helper.c +++ b/drivers/gpu/drm/drm_vram_mm_helper.c @@ -1,7 +1,9 @@ // SPDX-License-Identifier: GPL-2.0-or-later
+#include <drm/drm_debugfs.h> #include <drm/drm_device.h> #include <drm/drm_file.h> +#include <drm/drm_gem_ttm_helper.h> #include <drm/drm_vram_mm_helper.h>
#include <drm/ttm/ttm_page_alloc.h> @@ -148,6 +150,37 @@ static struct ttm_bo_driver bo_driver = {
- struct drm_vram_mm
*/
+#if defined(CONFIG_DEBUG_FS) +static int drm_vram_mm_debugfs(struct seq_file *m, void *data) +{
- struct drm_info_node *node = (struct drm_info_node *) m->private;
- struct drm_vram_mm *vmm = node->minor->dev->vram_mm;
- struct drm_mm *mm = vmm->bdev.man[TTM_PL_VRAM].priv;
- struct ttm_bo_global *glob = vmm->bdev.glob;
- struct drm_printer p = drm_seq_file_printer(m);
- spin_lock(&glob->lru_lock);
- drm_mm_print(mm, &p);
- spin_unlock(&glob->lru_lock);
- return 0;
+}
+static struct drm_info_list drm_vram_mm_debugfs_list[] = {
Can this be made 'static const'?
- { "vram-mm", drm_vram_mm_debugfs, 0, NULL },
+}; +#endif
+int drm_vram_mm_debugfs_init(struct drm_minor *minor)
Documentation is missing.
With these points addressed
Acked-by: Thomas Zimmermann tzimmermann@suse.de
Best regards Thomas
+{ +#if defined(CONFIG_DEBUG_FS)
- drm_debugfs_create_files(drm_vram_mm_debugfs_list,
ARRAY_SIZE(drm_vram_mm_debugfs_list),
minor->debugfs_root, minor);
+#endif
- return 0;
+} +EXPORT_SYMBOL(drm_vram_mm_debugfs_init);
/**
- drm_vram_mm_init() - Initialize an instance of VRAM MM.
- @vmm: the VRAM MM instance to initialize