* drivers/gpu/drm/i915/i915_scatterlist.c:154 i915_rsgt_from_buddy_resource() warn: should 'res->num_pages << 12' be a 64 bit type?
@ 2022-01-31 14:29 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-01-31 14:29 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 7537 bytes --]
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: "Thomas Hellström" <thomas.hellstrom@linux.intel.com>
CC: Matthew Auld <matthew.auld@intel.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 26291c54e111ff6ba87a164d85d4a4e134b7315c
commit: cad7109a2b5e7d48466b77728aa16ce55415eea0 drm/i915: Introduce refcounted sg-tables
date: 3 months ago
:::::: branch date: 25 hours ago
:::::: commit date: 3 months ago
config: i386-randconfig-m021-20220131 (https://download.01.org/0day-ci/archive/20220131/202201312218.4lsfgfAM-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
smatch warnings:
drivers/gpu/drm/i915/i915_scatterlist.c:154 i915_rsgt_from_buddy_resource() warn: should 'res->num_pages << 12' be a 64 bit type?
vim +154 drivers/gpu/drm/i915/i915_scatterlist.c
d148738923fdb5 Thomas Hellström 2021-06-02 136
f701b16d4cc535 Matthew Auld 2021-06-16 137 /**
cad7109a2b5e7d Thomas Hellström 2021-11-01 138 * i915_rsgt_from_buddy_resource - Create a refcounted sg_table from a struct
f701b16d4cc535 Matthew Auld 2021-06-16 139 * i915_buddy_block list
f701b16d4cc535 Matthew Auld 2021-06-16 140 * @res: The struct i915_ttm_buddy_resource.
f701b16d4cc535 Matthew Auld 2021-06-16 141 * @region_start: An offset to add to the dma addresses of the sg list.
f701b16d4cc535 Matthew Auld 2021-06-16 142 *
f701b16d4cc535 Matthew Auld 2021-06-16 143 * Create a struct sg_table, initializing it from struct i915_buddy_block list,
f701b16d4cc535 Matthew Auld 2021-06-16 144 * taking a maximum segment length into account, splitting into segments
f701b16d4cc535 Matthew Auld 2021-06-16 145 * if necessary.
f701b16d4cc535 Matthew Auld 2021-06-16 146 *
cad7109a2b5e7d Thomas Hellström 2021-11-01 147 * Return: A pointer to a kmalloced struct i915_refct_sgts on success, negative
f701b16d4cc535 Matthew Auld 2021-06-16 148 * error code cast to an error pointer on failure.
f701b16d4cc535 Matthew Auld 2021-06-16 149 */
cad7109a2b5e7d Thomas Hellström 2021-11-01 150 struct i915_refct_sgt *i915_rsgt_from_buddy_resource(struct ttm_resource *res,
f701b16d4cc535 Matthew Auld 2021-06-16 151 u64 region_start)
f701b16d4cc535 Matthew Auld 2021-06-16 152 {
f701b16d4cc535 Matthew Auld 2021-06-16 153 struct i915_ttm_buddy_resource *bman_res = to_ttm_buddy_resource(res);
f701b16d4cc535 Matthew Auld 2021-06-16 @154 const u64 size = res->num_pages << PAGE_SHIFT;
f701b16d4cc535 Matthew Auld 2021-06-16 155 const u64 max_segment = rounddown(UINT_MAX, PAGE_SIZE);
f701b16d4cc535 Matthew Auld 2021-06-16 156 struct i915_buddy_mm *mm = bman_res->mm;
f701b16d4cc535 Matthew Auld 2021-06-16 157 struct list_head *blocks = &bman_res->blocks;
f701b16d4cc535 Matthew Auld 2021-06-16 158 struct i915_buddy_block *block;
cad7109a2b5e7d Thomas Hellström 2021-11-01 159 struct i915_refct_sgt *rsgt;
f701b16d4cc535 Matthew Auld 2021-06-16 160 struct scatterlist *sg;
f701b16d4cc535 Matthew Auld 2021-06-16 161 struct sg_table *st;
f701b16d4cc535 Matthew Auld 2021-06-16 162 resource_size_t prev_end;
f701b16d4cc535 Matthew Auld 2021-06-16 163
f701b16d4cc535 Matthew Auld 2021-06-16 164 GEM_BUG_ON(list_empty(blocks));
f701b16d4cc535 Matthew Auld 2021-06-16 165
cad7109a2b5e7d Thomas Hellström 2021-11-01 166 rsgt = kmalloc(sizeof(*rsgt), GFP_KERNEL);
cad7109a2b5e7d Thomas Hellström 2021-11-01 167 if (!rsgt)
f701b16d4cc535 Matthew Auld 2021-06-16 168 return ERR_PTR(-ENOMEM);
f701b16d4cc535 Matthew Auld 2021-06-16 169
cad7109a2b5e7d Thomas Hellström 2021-11-01 170 i915_refct_sgt_init(rsgt, size);
cad7109a2b5e7d Thomas Hellström 2021-11-01 171 st = &rsgt->table;
f701b16d4cc535 Matthew Auld 2021-06-16 172 if (sg_alloc_table(st, res->num_pages, GFP_KERNEL)) {
cad7109a2b5e7d Thomas Hellström 2021-11-01 173 i915_refct_sgt_put(rsgt);
f701b16d4cc535 Matthew Auld 2021-06-16 174 return ERR_PTR(-ENOMEM);
f701b16d4cc535 Matthew Auld 2021-06-16 175 }
f701b16d4cc535 Matthew Auld 2021-06-16 176
f701b16d4cc535 Matthew Auld 2021-06-16 177 sg = st->sgl;
f701b16d4cc535 Matthew Auld 2021-06-16 178 st->nents = 0;
f701b16d4cc535 Matthew Auld 2021-06-16 179 prev_end = (resource_size_t)-1;
f701b16d4cc535 Matthew Auld 2021-06-16 180
f701b16d4cc535 Matthew Auld 2021-06-16 181 list_for_each_entry(block, blocks, link) {
f701b16d4cc535 Matthew Auld 2021-06-16 182 u64 block_size, offset;
f701b16d4cc535 Matthew Auld 2021-06-16 183
f701b16d4cc535 Matthew Auld 2021-06-16 184 block_size = min_t(u64, size, i915_buddy_block_size(mm, block));
f701b16d4cc535 Matthew Auld 2021-06-16 185 offset = i915_buddy_block_offset(block);
f701b16d4cc535 Matthew Auld 2021-06-16 186
f701b16d4cc535 Matthew Auld 2021-06-16 187 while (block_size) {
f701b16d4cc535 Matthew Auld 2021-06-16 188 u64 len;
f701b16d4cc535 Matthew Auld 2021-06-16 189
f701b16d4cc535 Matthew Auld 2021-06-16 190 if (offset != prev_end || sg->length >= max_segment) {
f701b16d4cc535 Matthew Auld 2021-06-16 191 if (st->nents)
f701b16d4cc535 Matthew Auld 2021-06-16 192 sg = __sg_next(sg);
f701b16d4cc535 Matthew Auld 2021-06-16 193
f701b16d4cc535 Matthew Auld 2021-06-16 194 sg_dma_address(sg) = region_start + offset;
f701b16d4cc535 Matthew Auld 2021-06-16 195 sg_dma_len(sg) = 0;
f701b16d4cc535 Matthew Auld 2021-06-16 196 sg->length = 0;
f701b16d4cc535 Matthew Auld 2021-06-16 197 st->nents++;
f701b16d4cc535 Matthew Auld 2021-06-16 198 }
f701b16d4cc535 Matthew Auld 2021-06-16 199
f701b16d4cc535 Matthew Auld 2021-06-16 200 len = min(block_size, max_segment - sg->length);
f701b16d4cc535 Matthew Auld 2021-06-16 201 sg->length += len;
f701b16d4cc535 Matthew Auld 2021-06-16 202 sg_dma_len(sg) += len;
f701b16d4cc535 Matthew Auld 2021-06-16 203
f701b16d4cc535 Matthew Auld 2021-06-16 204 offset += len;
f701b16d4cc535 Matthew Auld 2021-06-16 205 block_size -= len;
f701b16d4cc535 Matthew Auld 2021-06-16 206
f701b16d4cc535 Matthew Auld 2021-06-16 207 prev_end = offset;
f701b16d4cc535 Matthew Auld 2021-06-16 208 }
f701b16d4cc535 Matthew Auld 2021-06-16 209 }
f701b16d4cc535 Matthew Auld 2021-06-16 210
f701b16d4cc535 Matthew Auld 2021-06-16 211 sg_mark_end(sg);
f701b16d4cc535 Matthew Auld 2021-06-16 212 i915_sg_trim(st);
f701b16d4cc535 Matthew Auld 2021-06-16 213
cad7109a2b5e7d Thomas Hellström 2021-11-01 214 return rsgt;
f701b16d4cc535 Matthew Auld 2021-06-16 215 }
f701b16d4cc535 Matthew Auld 2021-06-16 216
:::::: The code at line 154 was first introduced by commit
:::::: f701b16d4cc535d24facdfdd21dc97a3691e5576 drm/i915/ttm: add i915_sg_from_buddy_resource
:::::: TO: Matthew Auld <matthew.auld@intel.com>
:::::: CC: Matthew Auld <matthew.auld@intel.com>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-01-31 14:29 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-31 14:29 drivers/gpu/drm/i915/i915_scatterlist.c:154 i915_rsgt_from_buddy_resource() warn: should 'res->num_pages << 12' be a 64 bit type? kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.