From 1bb7080226f6b34b0d10b9c59397bc52f8a221a1 Mon Sep 17 00:00:00 2001 From: wukuan Date: Sat, 12 Oct 2024 10:43:34 +0800 Subject: [PATCH] debug drm_mode_mmap_dumb_ioctl Signed-off-by: wukuan --- drivers/gpu/drm/drm_dumb_buffers.c | 17 +++++++++++++---- drivers/gpu/drm/drm_gem.c | 10 ++++++++-- include/drm/drm_vma_manager.h | 2 ++ 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/drm_dumb_buffers.c b/drivers/gpu/drm/drm_dumb_buffers.c index 70032bba1c97..778ec0c18f8b 100644 --- a/drivers/gpu/drm/drm_dumb_buffers.c +++ b/drivers/gpu/drm/drm_dumb_buffers.c @@ -119,18 +119,27 @@ int drm_mode_create_dumb_ioctl(struct drm_device *dev, int drm_mode_mmap_dumb_ioctl(struct drm_device *dev, void *data, struct drm_file *file_priv) { + printk(KERN_WARNING "[w50043774] IN drm_mode_mmap_dumb_ioctl\n"); struct drm_mode_map_dumb *args = data; - if (!dev->driver->dumb_create) + if (!dev->driver->dumb_create) { + printk(KERN_WARNING "[w50043774] if (!dev->driver->dumb_create)\n"); return -ENOSYS; + } - if (dev->driver->dumb_map_offset) + if (dev->driver->dumb_map_offset) { + printk(KERN_WARNING "[w50043774] if (dev->driver->dumb_map_offset)\n"); return dev->driver->dumb_map_offset(file_priv, dev, args->handle, &args->offset); - else - return drm_gem_dumb_map_offset(file_priv, dev, args->handle, + } else { + printk(KERN_WARNING "[w50043774] if (!dev->driver->dumb_map_offset)\n"); + printk(KERN_WARNING "[w50043774] before: args->offset = %u\n", args->offset); + int retval = drm_gem_dumb_map_offset(file_priv, dev, args->handle, &args->offset); + printk(KERN_WARNING "[w50043774] after: retval = %d, args->offset = %u\n", retval, args->offset); + return retval; + } } int drm_mode_destroy_dumb(struct drm_device *dev, u32 handle, diff --git a/drivers/gpu/drm/drm_gem.c b/drivers/gpu/drm/drm_gem.c index 44a948b80ee1..49f607b6c2ef 100644 --- a/drivers/gpu/drm/drm_gem.c +++ b/drivers/gpu/drm/drm_gem.c @@ -314,22 +314,28 @@ EXPORT_SYMBOL(drm_gem_handle_delete); int drm_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, u32 handle, u64 *offset) { + printk(KERN_WARNING "[w50043774] IN drm_gem_dumb_map_offset\n"); struct drm_gem_object *obj; int ret; obj = drm_gem_object_lookup(file, handle); - if (!obj) + if (!obj) { + printk(KERN_WARNING "[w50043774] if (!obj), return -ENOENT\n"); return -ENOENT; + } /* Don't allow imported objects to be mapped */ if (obj->import_attach) { + printk(KERN_WARNING "[w50043774] if (obj->import_attach), goto out\n"); ret = -EINVAL; goto out; } ret = drm_gem_create_mmap_offset(obj); - if (ret) + if (ret) { + printk(KERN_WARNING "[w50043774] if (ret), goto out\n"); goto out; + } *offset = drm_vma_node_offset_addr(&obj->vma_node); out: diff --git a/include/drm/drm_vma_manager.h b/include/drm/drm_vma_manager.h index 6c2a2f21dbf0..2b093a2eafe4 100644 --- a/include/drm/drm_vma_manager.h +++ b/include/drm/drm_vma_manager.h @@ -202,6 +202,8 @@ static inline unsigned long drm_vma_node_size(struct drm_vma_offset_node *node) */ static inline __u64 drm_vma_node_offset_addr(struct drm_vma_offset_node *node) { + printk(KERN_WARNING "[w50043774] IN drm_vma_node_offset_addr\n"); + printk(KERN_WARNING "[w50043774] node->vm_node.start = %llu, PAGE_SHIFT = %d\n", (__u64)node->vm_node.start, PAGE_SHIFT); return ((__u64)node->vm_node.start) << PAGE_SHIFT; } -- Gitee