Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/i915/stolen: convert intel_stolen_node into a real struct of its own

i915_gem_stolen.h simply defines intel_stolen_node as drm_mm_node. Make
struct intel_stolen_node an actual struct of its own right, and embed
struct drm_mm_node inside. This allow better unification between i915
and xe.

Reviewed-by: Ville Syrjälä <ville.syrjala@linux.intel.com>
Link: https://lore.kernel.org/r/36762f611566d81427e702369f4e8207ead5f26c.1758732183.git.jani.nikula@intel.com
Signed-off-by: Jani Nikula <jani.nikula@intel.com>

+57 -33
+45 -23
drivers/gpu/drm/i915/gem/i915_gem_stolen.c
··· 36 36 * for is a boon. 37 37 */ 38 38 39 - int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, 40 - struct drm_mm_node *node, u64 size, 41 - unsigned alignment, u64 start, u64 end) 39 + static int __i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, 40 + struct drm_mm_node *node, u64 size, 41 + unsigned int alignment, u64 start, u64 end) 42 42 { 43 43 int ret; 44 44 ··· 58 58 return ret; 59 59 } 60 60 61 - int i915_gem_stolen_insert_node(struct drm_i915_private *i915, 62 - struct drm_mm_node *node, u64 size, 63 - unsigned alignment) 61 + int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, 62 + struct intel_stolen_node *node, u64 size, 63 + unsigned int alignment, u64 start, u64 end) 64 64 { 65 - return i915_gem_stolen_insert_node_in_range(i915, node, 66 - size, alignment, 67 - I915_GEM_STOLEN_BIAS, 68 - U64_MAX); 65 + return __i915_gem_stolen_insert_node_in_range(i915, &node->node, 66 + size, alignment, 67 + start, end); 69 68 } 70 69 71 - void i915_gem_stolen_remove_node(struct drm_i915_private *i915, 72 - struct drm_mm_node *node) 70 + static int __i915_gem_stolen_insert_node(struct drm_i915_private *i915, 71 + struct drm_mm_node *node, u64 size, 72 + unsigned int alignment) 73 + { 74 + return __i915_gem_stolen_insert_node_in_range(i915, node, 75 + size, alignment, 76 + I915_GEM_STOLEN_BIAS, 77 + U64_MAX); 78 + } 79 + 80 + int i915_gem_stolen_insert_node(struct drm_i915_private *i915, 81 + struct intel_stolen_node *node, u64 size, 82 + unsigned int alignment) 83 + { 84 + return __i915_gem_stolen_insert_node(i915, &node->node, size, alignment); 85 + } 86 + 87 + static void __i915_gem_stolen_remove_node(struct drm_i915_private *i915, 88 + struct drm_mm_node *node) 73 89 { 74 90 mutex_lock(&i915->mm.stolen_lock); 75 91 drm_mm_remove_node(node); 76 92 mutex_unlock(&i915->mm.stolen_lock); 93 + } 94 + 95 + void i915_gem_stolen_remove_node(struct drm_i915_private *i915, 96 + struct intel_stolen_node *node) 97 + { 98 + __i915_gem_stolen_remove_node(i915, &node->node); 77 99 } 78 100 79 101 static bool valid_stolen_size(struct drm_i915_private *i915, struct resource *dsm) ··· 705 683 struct drm_mm_node *stolen = fetch_and_zero(&obj->stolen); 706 684 707 685 GEM_BUG_ON(!stolen); 708 - i915_gem_stolen_remove_node(i915, stolen); 686 + __i915_gem_stolen_remove_node(i915, stolen); 709 687 kfree(stolen); 710 688 711 689 i915_gem_object_release_memory_region(obj); ··· 794 772 ret = drm_mm_reserve_node(&i915->mm.stolen, stolen); 795 773 mutex_unlock(&i915->mm.stolen_lock); 796 774 } else { 797 - ret = i915_gem_stolen_insert_node(i915, stolen, size, 798 - mem->min_page_size); 775 + ret = __i915_gem_stolen_insert_node(i915, stolen, size, 776 + mem->min_page_size); 799 777 } 800 778 if (ret) 801 779 goto err_free; ··· 807 785 return 0; 808 786 809 787 err_remove: 810 - i915_gem_stolen_remove_node(i915, stolen); 788 + __i915_gem_stolen_remove_node(i915, stolen); 811 789 err_free: 812 790 kfree(stolen); 813 791 return ret; ··· 1038 1016 } 1039 1017 1040 1018 u64 i915_gem_stolen_node_address(const struct drm_i915_private *i915, 1041 - const struct drm_mm_node *node) 1019 + const struct intel_stolen_node *node) 1042 1020 { 1043 1021 return i915->dsm.stolen.start + i915_gem_stolen_node_offset(node); 1044 1022 } 1045 1023 1046 - bool i915_gem_stolen_node_allocated(const struct drm_mm_node *node) 1024 + bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node) 1047 1025 { 1048 - return drm_mm_node_allocated(node); 1026 + return drm_mm_node_allocated(&node->node); 1049 1027 } 1050 1028 1051 - u64 i915_gem_stolen_node_offset(const struct drm_mm_node *node) 1029 + u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node) 1052 1030 { 1053 - return node->start; 1031 + return node->node.start; 1054 1032 } 1055 1033 1056 - u64 i915_gem_stolen_node_size(const struct drm_mm_node *node) 1034 + u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node) 1057 1035 { 1058 - return node->size; 1036 + return node->node.size; 1059 1037 }
+12 -10
drivers/gpu/drm/i915/gem/i915_gem_stolen.h
··· 7 7 #define __I915_GEM_STOLEN_H__ 8 8 9 9 #include <linux/types.h> 10 + #include <drm/drm_mm.h> 10 11 11 - struct drm_i915_private; 12 - struct drm_mm_node; 13 12 struct drm_i915_gem_object; 13 + struct drm_i915_private; 14 14 15 - #define intel_stolen_node drm_mm_node 15 + struct intel_stolen_node { 16 + struct drm_mm_node node; 17 + }; 16 18 17 19 int i915_gem_stolen_insert_node(struct drm_i915_private *i915, 18 - struct drm_mm_node *node, u64 size, 20 + struct intel_stolen_node *node, u64 size, 19 21 unsigned alignment); 20 22 int i915_gem_stolen_insert_node_in_range(struct drm_i915_private *i915, 21 - struct drm_mm_node *node, u64 size, 23 + struct intel_stolen_node *node, u64 size, 22 24 unsigned alignment, u64 start, 23 25 u64 end); 24 26 void i915_gem_stolen_remove_node(struct drm_i915_private *i915, 25 - struct drm_mm_node *node); 27 + struct intel_stolen_node *node); 26 28 struct intel_memory_region * 27 29 i915_gem_stolen_smem_setup(struct drm_i915_private *i915, u16 type, 28 30 u16 instance); ··· 45 43 u64 i915_gem_stolen_area_size(const struct drm_i915_private *i915); 46 44 47 45 u64 i915_gem_stolen_node_address(const struct drm_i915_private *i915, 48 - const struct drm_mm_node *node); 46 + const struct intel_stolen_node *node); 49 47 50 - bool i915_gem_stolen_node_allocated(const struct drm_mm_node *node); 51 - u64 i915_gem_stolen_node_offset(const struct drm_mm_node *node); 52 - u64 i915_gem_stolen_node_size(const struct drm_mm_node *node); 48 + bool i915_gem_stolen_node_allocated(const struct intel_stolen_node *node); 49 + u64 i915_gem_stolen_node_offset(const struct intel_stolen_node *node); 50 + u64 i915_gem_stolen_node_size(const struct intel_stolen_node *node); 53 51 54 52 #endif /* __I915_GEM_STOLEN_H__ */