diff options
Diffstat (limited to 'drivers/gpu/drm/drm_mm.c')
| -rw-r--r-- | drivers/gpu/drm/drm_mm.c | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/drivers/gpu/drm/drm_mm.c b/drivers/gpu/drm/drm_mm.c index db1e2d6f90d7..07cf99cc8862 100644 --- a/drivers/gpu/drm/drm_mm.c +++ b/drivers/gpu/drm/drm_mm.c | |||
| @@ -755,33 +755,35 @@ void drm_mm_debug_table(struct drm_mm *mm, const char *prefix) | |||
| 755 | EXPORT_SYMBOL(drm_mm_debug_table); | 755 | EXPORT_SYMBOL(drm_mm_debug_table); |
| 756 | 756 | ||
| 757 | #if defined(CONFIG_DEBUG_FS) | 757 | #if defined(CONFIG_DEBUG_FS) |
| 758 | int drm_mm_dump_table(struct seq_file *m, struct drm_mm *mm) | 758 | static unsigned long drm_mm_dump_hole(struct seq_file *m, struct drm_mm_node *entry) |
| 759 | { | 759 | { |
| 760 | struct drm_mm_node *entry; | ||
| 761 | unsigned long total_used = 0, total_free = 0, total = 0; | ||
| 762 | unsigned long hole_start, hole_end, hole_size; | 760 | unsigned long hole_start, hole_end, hole_size; |
| 763 | 761 | ||
| 764 | hole_start = drm_mm_hole_node_start(&mm->head_node); | 762 | if (entry->hole_follows) { |
| 765 | hole_end = drm_mm_hole_node_end(&mm->head_node); | 763 | hole_start = drm_mm_hole_node_start(entry); |
| 766 | hole_size = hole_end - hole_start; | 764 | hole_end = drm_mm_hole_node_end(entry); |
| 767 | if (hole_size) | 765 | hole_size = hole_end - hole_start; |
| 768 | seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", | 766 | seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", |
| 769 | hole_start, hole_end, hole_size); | 767 | hole_start, hole_end, hole_size); |
| 770 | total_free += hole_size; | 768 | return hole_size; |
| 769 | } | ||
| 770 | |||
| 771 | return 0; | ||
| 772 | } | ||
| 773 | |||
| 774 | int drm_mm_dump_table(struct seq_file *m, struct drm_mm *mm) | ||
| 775 | { | ||
| 776 | struct drm_mm_node *entry; | ||
| 777 | unsigned long total_used = 0, total_free = 0, total = 0; | ||
| 778 | |||
| 779 | total_free += drm_mm_dump_hole(m, &mm->head_node); | ||
| 771 | 780 | ||
| 772 | drm_mm_for_each_node(entry, mm) { | 781 | drm_mm_for_each_node(entry, mm) { |
| 773 | seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: used\n", | 782 | seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: used\n", |
| 774 | entry->start, entry->start + entry->size, | 783 | entry->start, entry->start + entry->size, |
| 775 | entry->size); | 784 | entry->size); |
| 776 | total_used += entry->size; | 785 | total_used += entry->size; |
| 777 | if (entry->hole_follows) { | 786 | total_free += drm_mm_dump_hole(m, entry); |
| 778 | hole_start = drm_mm_hole_node_start(entry); | ||
| 779 | hole_end = drm_mm_hole_node_end(entry); | ||
| 780 | hole_size = hole_end - hole_start; | ||
| 781 | seq_printf(m, "0x%08lx-0x%08lx: 0x%08lx: free\n", | ||
| 782 | hole_start, hole_end, hole_size); | ||
| 783 | total_free += hole_size; | ||
| 784 | } | ||
| 785 | } | 787 | } |
| 786 | total = total_free + total_used; | 788 | total = total_free + total_used; |
| 787 | 789 | ||
