Rev 3764 | Rev 4104 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3764 | Rev 4075 | ||
---|---|---|---|
Line 667... | Line 667... | ||
667 | 667 | ||
668 | return (head->next->next == head); |
668 | return (head->next->next == head); |
669 | } |
669 | } |
Line 670... | Line 670... | ||
670 | EXPORT_SYMBOL(drm_mm_clean); |
670 | EXPORT_SYMBOL(drm_mm_clean); |
671 | 671 | ||
672 | int drm_mm_init(struct drm_mm * mm, unsigned long start, unsigned long size) |
672 | void drm_mm_init(struct drm_mm * mm, unsigned long start, unsigned long size) |
673 | { |
673 | { |
674 | INIT_LIST_HEAD(&mm->hole_stack); |
674 | INIT_LIST_HEAD(&mm->hole_stack); |
675 | INIT_LIST_HEAD(&mm->unused_nodes); |
675 | INIT_LIST_HEAD(&mm->unused_nodes); |
Line 688... | Line 688... | ||
688 | mm->head_node.start = start + size; |
688 | mm->head_node.start = start + size; |
689 | mm->head_node.size = start - mm->head_node.start; |
689 | mm->head_node.size = start - mm->head_node.start; |
690 | list_add_tail(&mm->head_node.hole_stack, &mm->hole_stack); |
690 | list_add_tail(&mm->head_node.hole_stack, &mm->hole_stack); |
Line 691... | Line 691... | ||
691 | 691 | ||
692 | mm->color_adjust = NULL; |
- | |
693 | - | ||
694 | return 0; |
692 | mm->color_adjust = NULL; |
695 | } |
693 | } |
Line 696... | Line 694... | ||
696 | EXPORT_SYMBOL(drm_mm_init); |
694 | EXPORT_SYMBOL(drm_mm_init); |
697 | 695 | ||
698 | void drm_mm_takedown(struct drm_mm * mm) |
696 | void drm_mm_takedown(struct drm_mm * mm) |
Line 699... | Line 697... | ||
699 | { |
697 | { |
700 | struct drm_mm_node *entry, *next; |
698 | struct drm_mm_node *entry, *next; |
701 | 699 | ||
702 | if (!list_empty(&mm->head_node.node_list)) { |
700 | if (WARN(!list_empty(&mm->head_node.node_list), |
Line 703... | Line 701... | ||
703 | DRM_ERROR("Memory manager not clean. Delaying takedown\n"); |
701 | "Memory manager not clean. Delaying takedown\n")) { |
704 | return; |
702 | return; |
Line 714... | Line 712... | ||
714 | 712 | ||
715 | BUG_ON(mm->num_unused != 0); |
713 | BUG_ON(mm->num_unused != 0); |
716 | } |
714 | } |
Line 717... | Line 715... | ||
717 | EXPORT_SYMBOL(drm_mm_takedown); |
715 | EXPORT_SYMBOL(drm_mm_takedown); |
- | 716 | ||
718 | 717 | static unsigned long drm_mm_debug_hole(struct drm_mm_node *entry, |
|
719 | void drm_mm_debug_table(struct drm_mm *mm, const char *prefix) |
- | |
720 | { |
- | |
721 | struct drm_mm_node *entry; |
718 | const char *prefix) |
Line -... | Line 719... | ||
- | 719 | { |
|
722 | unsigned long total_used = 0, total_free = 0, total = 0; |
720 | unsigned long hole_start, hole_end, hole_size; |
723 | unsigned long hole_start, hole_end, hole_size; |
721 | |
724 | 722 | if (entry->hole_follows) { |
|
725 | hole_start = drm_mm_hole_node_start(&mm->head_node); |
- | |
726 | hole_end = drm_mm_hole_node_end(&mm->head_node); |
723 | hole_start = drm_mm_hole_node_start(entry); |
727 | hole_size = hole_end - hole_start; |
724 | hole_end = drm_mm_hole_node_end(entry); |
728 | if (hole_size) |
725 | hole_size = hole_end - hole_start; |
729 | printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n", |
726 | printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n", |
- | 727 | prefix, hole_start, hole_end, |
|
- | 728 | hole_size); |
|
- | 729 | return hole_size; |
|
- | 730 | } |
|
- | 731 | ||
- | 732 | return 0; |
|
- | 733 | } |
|
- | 734 | ||
- | 735 | void drm_mm_debug_table(struct drm_mm *mm, const char *prefix) |
|
- | 736 | { |
|
- | 737 | struct drm_mm_node *entry; |
|
Line 730... | Line 738... | ||
730 | prefix, hole_start, hole_end, |
738 | unsigned long total_used = 0, total_free = 0, total = 0; |
731 | hole_size); |
739 | |
732 | total_free += hole_size; |
740 | total_free += drm_mm_debug_hole(&mm->head_node, prefix); |
733 | 741 | ||
734 | drm_mm_for_each_node(entry, mm) { |
742 | drm_mm_for_each_node(entry, mm) { |
735 | printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: used\n", |
- | |
736 | prefix, entry->start, entry->start + entry->size, |
- | |
737 | entry->size); |
- | |
738 | total_used += entry->size; |
743 | printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: used\n", |
739 | - | ||
740 | if (entry->hole_follows) { |
- | |
741 | hole_start = drm_mm_hole_node_start(entry); |
- | |
742 | hole_end = drm_mm_hole_node_end(entry); |
- | |
743 | hole_size = hole_end - hole_start; |
- | |
744 | printk(KERN_DEBUG "%s 0x%08lx-0x%08lx: %8lu: free\n", |
- | |
745 | prefix, hole_start, hole_end, |
744 | prefix, entry->start, entry->start + entry->size, |
746 | hole_size); |
745 | entry->size); |
Line 747... | Line 746... | ||
747 | total_free += hole_size; |
746 | total_used += entry->size; |
748 | } |
747 | total_free += drm_mm_debug_hole(entry, prefix); |