aboutsummaryrefslogtreecommitdiffstats
path: root/meta-baldeagle/recipes-kernel/linux/linux-yocto/0009-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VRAM-debugfs-access-v3.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-baldeagle/recipes-kernel/linux/linux-yocto/0009-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VRAM-debugfs-access-v3.patch')
-rw-r--r--meta-baldeagle/recipes-kernel/linux/linux-yocto/0009-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VRAM-debugfs-access-v3.patch168
1 files changed, 0 insertions, 168 deletions
diff --git a/meta-baldeagle/recipes-kernel/linux/linux-yocto/0009-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VRAM-debugfs-access-v3.patch b/meta-baldeagle/recipes-kernel/linux/linux-yocto/0009-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VRAM-debugfs-access-v3.patch
deleted file mode 100644
index c8788bd6..00000000
--- a/meta-baldeagle/recipes-kernel/linux/linux-yocto/0009-yocto-poky-dora-10.0.0-amd-drm-radeon-add-VRAM-debugfs-access-v3.patch
+++ /dev/null
@@ -1,168 +0,0 @@
-From c100632a7a63c7cc03b7c4ad391477c919c61666 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Christian=20K=C3=B6nig?= <christian.koenig@amd.com>
-Date: Tue, 10 Dec 2013 07:45:24 -0700
-Subject: [PATCH 09/44] drm/radeon: add VRAM debugfs access v3
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Not very fast, but makes it possible to access even the
-normally inaccessible parts of VRAM from userspace.
-
-v2: use MM_INDEX_HI for >2GB mem access, add default_llseek
-v3: set inode size in the open callback
-
-Signed-off-by: Christian König <christian.koenig@amd.com>
----
- drivers/gpu/drm/radeon/evergreen_reg.h | 1 +
- drivers/gpu/drm/radeon/radeon.h | 4 ++
- drivers/gpu/drm/radeon/radeon_ttm.c | 77 +++++++++++++++++++++++++++++++-
- 3 files changed, 81 insertions(+), 1 deletion(-)
-
-diff --git a/drivers/gpu/drm/radeon/evergreen_reg.h b/drivers/gpu/drm/radeon/evergreen_reg.h
-index 8a4e641..a0f63ff 100644
---- a/drivers/gpu/drm/radeon/evergreen_reg.h
-+++ b/drivers/gpu/drm/radeon/evergreen_reg.h
-@@ -33,6 +33,7 @@
- #define EVERGREEN_PIF_PHY0_DATA 0xc
- #define EVERGREEN_PIF_PHY1_INDEX 0x10
- #define EVERGREEN_PIF_PHY1_DATA 0x14
-+#define EVERGREEN_MM_INDEX_HI 0x18
-
- #define EVERGREEN_VGA_MEMORY_BASE_ADDRESS 0x310
- #define EVERGREEN_VGA_MEMORY_BASE_ADDRESS_HIGH 0x324
-diff --git a/drivers/gpu/drm/radeon/radeon.h b/drivers/gpu/drm/radeon/radeon.h
-index c0d4230..14df551 100644
---- a/drivers/gpu/drm/radeon/radeon.h
-+++ b/drivers/gpu/drm/radeon/radeon.h
-@@ -413,6 +413,10 @@ struct radeon_mman {
- struct ttm_bo_device bdev;
- bool mem_global_referenced;
- bool initialized;
-+
-+#if defined(CONFIG_DEBUG_FS)
-+ struct dentry *vram;
-+#endif
- };
-
- /* bo virtual address in a specific vm */
-diff --git a/drivers/gpu/drm/radeon/radeon_ttm.c b/drivers/gpu/drm/radeon/radeon_ttm.c
-index a2d6c4f..83ef24d 100644
---- a/drivers/gpu/drm/radeon/radeon_ttm.c
-+++ b/drivers/gpu/drm/radeon/radeon_ttm.c
-@@ -39,12 +39,14 @@
- #include <linux/seq_file.h>
- #include <linux/slab.h>
- #include <linux/swiotlb.h>
-+#include <linux/debugfs.h>
- #include "radeon_reg.h"
- #include "radeon.h"
-
- #define DRM_FILE_PAGE_OFFSET (0x100000000ULL >> PAGE_SHIFT)
-
- static int radeon_ttm_debugfs_init(struct radeon_device *rdev);
-+static void radeon_ttm_debugfs_fini(struct radeon_device *rdev);
-
- static struct radeon_device *radeon_get_rdev(struct ttm_bo_device *bdev)
- {
-@@ -753,6 +755,7 @@ void radeon_ttm_fini(struct radeon_device *rdev)
-
- if (!rdev->mman.initialized)
- return;
-+ radeon_ttm_debugfs_fini(rdev);
- if (rdev->stollen_vga_memory) {
- r = radeon_bo_reserve(rdev->stollen_vga_memory, false);
- if (r == 0) {
-@@ -862,12 +865,75 @@ static struct drm_info_list radeon_ttm_debugfs_list[] = {
- #endif
- };
-
-+static int radeon_ttm_vram_open(struct inode *inode, struct file *filep)
-+{
-+ struct radeon_device *rdev = inode->i_private;
-+ i_size_write(inode, rdev->mc.mc_vram_size);
-+ filep->private_data = inode->i_private;
-+ return 0;
-+}
-+
-+static ssize_t radeon_ttm_vram_read(struct file *f, char __user *buf,
-+ size_t size, loff_t *pos)
-+{
-+ struct radeon_device *rdev = f->private_data;
-+ ssize_t result = 0;
-+ int r;
-+
-+ if (size & 0x3 || *pos & 0x3)
-+ return -EINVAL;
-+
-+ while (size) {
-+ unsigned long flags;
-+ uint32_t value;
-+
-+ if (*pos >= rdev->mc.mc_vram_size)
-+ return result;
-+
-+ spin_lock_irqsave(&rdev->mmio_idx_lock, flags);
-+ WREG32(RADEON_MM_INDEX, ((uint32_t)*pos) | 0x80000000);
-+ if (rdev->family >= CHIP_CEDAR)
-+ WREG32(EVERGREEN_MM_INDEX_HI, *pos >> 31);
-+ value = RREG32(RADEON_MM_DATA);
-+ spin_unlock_irqrestore(&rdev->mmio_idx_lock, flags);
-+
-+ r = put_user(value, (uint32_t *)buf);
-+ if (r)
-+ return r;
-+
-+ result += 4;
-+ buf += 4;
-+ *pos += 4;
-+ size -= 4;
-+ }
-+
-+ return result;
-+}
-+
-+static const struct file_operations radeon_ttm_vram_fops = {
-+ .owner = THIS_MODULE,
-+ .open = radeon_ttm_vram_open,
-+ .read = radeon_ttm_vram_read,
-+ .llseek = default_llseek
-+};
-+
- #endif
-
- static int radeon_ttm_debugfs_init(struct radeon_device *rdev)
- {
- #if defined(CONFIG_DEBUG_FS)
-- unsigned count = ARRAY_SIZE(radeon_ttm_debugfs_list);
-+ unsigned count;
-+
-+ struct drm_minor *minor = rdev->ddev->primary;
-+ struct dentry *ent, *root = minor->debugfs_root;
-+
-+ ent = debugfs_create_file("radeon_vram", S_IFREG | S_IRUGO, root,
-+ rdev, &radeon_ttm_vram_fops);
-+ if (IS_ERR(ent))
-+ return PTR_ERR(ent);
-+ rdev->mman.vram = ent;
-+
-+ count = ARRAY_SIZE(radeon_ttm_debugfs_list);
-
- #ifdef CONFIG_SWIOTLB
- if (!swiotlb_nr_tbl())
-@@ -880,3 +946,12 @@ static int radeon_ttm_debugfs_init(struct radeon_device *rdev)
- return 0;
- #endif
- }
-+
-+static void radeon_ttm_debugfs_fini(struct radeon_device *rdev)
-+{
-+#if defined(CONFIG_DEBUG_FS)
-+
-+ debugfs_remove(rdev->mman.vram);
-+ rdev->mman.vram = NULL;
-+#endif
-+}
---
-1.7.9.5
-