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.

Merge tag 'drm-intel-fixes-2022-07-17' of git://anongit.freedesktop.org/drm/drm-intel

Pull intel drm build fix from Rodrigo Vivi:
"Our 'dim' flow has a problem with fixes of fixes getting missed. We
need to take a look on that later.

Meanwhile, please allow me to quickly propagate this fix for the
32-bit build issue here upstream"

* tag 'drm-intel-fixes-2022-07-17' of git://anongit.freedesktop.org/drm/drm-intel:
drm/i915/ttm: fix 32b build

+15 -13
+2
drivers/gpu/drm/i915/gem/i915_gem_region.c
··· 60 60 if (page_size) 61 61 default_page_size = page_size; 62 62 63 + /* We should be able to fit a page within an sg entry */ 64 + GEM_BUG_ON(overflows_type(default_page_size, u32)); 63 65 GEM_BUG_ON(!is_power_of_2_u64(default_page_size)); 64 66 GEM_BUG_ON(default_page_size < PAGE_SIZE); 65 67
+1 -1
drivers/gpu/drm/i915/gem/i915_gem_ttm.c
··· 620 620 struct ttm_resource *res) 621 621 { 622 622 struct ttm_buffer_object *bo = i915_gem_to_ttm(obj); 623 - u64 page_alignment; 623 + u32 page_alignment; 624 624 625 625 if (!i915_ttm_gtt_binds_lmem(res)) 626 626 return i915_ttm_tt_get_st(bo->ttm);
+8 -8
drivers/gpu/drm/i915/i915_scatterlist.c
··· 79 79 */ 80 80 struct i915_refct_sgt *i915_rsgt_from_mm_node(const struct drm_mm_node *node, 81 81 u64 region_start, 82 - u64 page_alignment) 82 + u32 page_alignment) 83 83 { 84 - const u64 max_segment = round_down(UINT_MAX, page_alignment); 85 - u64 segment_pages = max_segment >> PAGE_SHIFT; 84 + const u32 max_segment = round_down(UINT_MAX, page_alignment); 85 + const u32 segment_pages = max_segment >> PAGE_SHIFT; 86 86 u64 block_size, offset, prev_end; 87 87 struct i915_refct_sgt *rsgt; 88 88 struct sg_table *st; ··· 96 96 97 97 i915_refct_sgt_init(rsgt, node->size << PAGE_SHIFT); 98 98 st = &rsgt->table; 99 - if (sg_alloc_table(st, DIV_ROUND_UP(node->size, segment_pages), 99 + if (sg_alloc_table(st, DIV_ROUND_UP_ULL(node->size, segment_pages), 100 100 GFP_KERNEL)) { 101 101 i915_refct_sgt_put(rsgt); 102 102 return ERR_PTR(-ENOMEM); ··· 123 123 st->nents++; 124 124 } 125 125 126 - len = min(block_size, max_segment - sg->length); 126 + len = min_t(u64, block_size, max_segment - sg->length); 127 127 sg->length += len; 128 128 sg_dma_len(sg) += len; 129 129 ··· 155 155 */ 156 156 struct i915_refct_sgt *i915_rsgt_from_buddy_resource(struct ttm_resource *res, 157 157 u64 region_start, 158 - u64 page_alignment) 158 + u32 page_alignment) 159 159 { 160 160 struct i915_ttm_buddy_resource *bman_res = to_ttm_buddy_resource(res); 161 161 const u64 size = res->num_pages << PAGE_SHIFT; 162 - const u64 max_segment = round_down(UINT_MAX, page_alignment); 162 + const u32 max_segment = round_down(UINT_MAX, page_alignment); 163 163 struct drm_buddy *mm = bman_res->mm; 164 164 struct list_head *blocks = &bman_res->blocks; 165 165 struct drm_buddy_block *block; ··· 207 207 st->nents++; 208 208 } 209 209 210 - len = min(block_size, max_segment - sg->length); 210 + len = min_t(u64, block_size, max_segment - sg->length); 211 211 sg->length += len; 212 212 sg_dma_len(sg) += len; 213 213
+2 -2
drivers/gpu/drm/i915/i915_scatterlist.h
··· 214 214 215 215 struct i915_refct_sgt *i915_rsgt_from_mm_node(const struct drm_mm_node *node, 216 216 u64 region_start, 217 - u64 page_alignment); 217 + u32 page_alignment); 218 218 219 219 struct i915_refct_sgt *i915_rsgt_from_buddy_resource(struct ttm_resource *res, 220 220 u64 region_start, 221 - u64 page_alignment); 221 + u32 page_alignment); 222 222 223 223 #endif
+1 -1
drivers/gpu/drm/i915/intel_region_ttm.c
··· 163 163 struct i915_refct_sgt * 164 164 intel_region_ttm_resource_to_rsgt(struct intel_memory_region *mem, 165 165 struct ttm_resource *res, 166 - u64 page_alignment) 166 + u32 page_alignment) 167 167 { 168 168 if (mem->is_range_manager) { 169 169 struct ttm_range_mgr_node *range_node =
+1 -1
drivers/gpu/drm/i915/intel_region_ttm.h
··· 25 25 struct i915_refct_sgt * 26 26 intel_region_ttm_resource_to_rsgt(struct intel_memory_region *mem, 27 27 struct ttm_resource *res, 28 - u64 page_alignment); 28 + u32 page_alignment); 29 29 30 30 void intel_region_ttm_resource_free(struct intel_memory_region *mem, 31 31 struct ttm_resource *res);