drivers/gpu/drm/i915/gem/i915_gem_create.c:571:37: warning: 'prelim_create_extensions' defined but not used

From: kernel test robot
Date: Mon May 09 2022 - 18:40:08 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 9be9ed2612b5aedb52a2c240edb1630b6b743cb6
commit: dcaccaf0e83a97750985bdb866649cc952b127cf drm/i915/gem: split gem_create into own file
date: 1 year, 4 months ago
config: i386-debian-10.3-kselftests (https://download.01.org/0day-ci/archive/20220510/202205100605.76EqlXtm-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.2.0-20) 11.2.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dcaccaf0e83a97750985bdb866649cc952b127cf
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout dcaccaf0e83a97750985bdb866649cc952b127cf
# save the config file
make W=1 ARCH=i386 SHELL=/bin/bash tools/all

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All warnings (new ones prefixed by >>):

524 | void __exit acpi_video_detect_exit(void)
| ^~~~~~~~~~~~~~~~~~~~~~
kernel/latencytop.c:152: warning: Function parameter or member 'tsk' not described in '__account_scheduler_latency'
kernel/latencytop.c:152: warning: Function parameter or member 'usecs' not described in '__account_scheduler_latency'
kernel/latencytop.c:152: warning: Function parameter or member 'inter' not described in '__account_scheduler_latency'
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2404: warning: Function parameter or member 'intel_connector' not described in 'intel_connector_debugfs_add'
drivers/gpu/drm/i915/display/intel_display_debugfs.c:2404: warning: Excess function parameter 'connector' description in 'intel_connector_debugfs_add'
lib/argv_split.c:36: warning: Function parameter or member 'argv' not described in 'argv_free'
lib/cpumask.c:114: warning: Function parameter or member 'node' not described in 'alloc_cpumask_var_node'
lib/cpumask.c:239: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Returns an arbitrary cpu within srcp1 & srcp2.
lib/decompress_inflate.c:42:17: warning: no previous prototype for '__gunzip' [-Wmissing-prototypes]
42 | STATIC int INIT __gunzip(unsigned char *buf, long len,
| ^~~~~~~~
drivers/gpu/drm/i915/gt/intel_engine_cs.c:1489: warning: expecting prototype for intel_engines_init_common(). Prototype was for engine_init_common() instead
drivers/gpu/drm/i915/gt/intel_engine_cs.c:1615: warning: expecting prototype for intel_engines_cleanup_common(). Prototype was for intel_engine_cleanup_common() instead
lib/decompress_unzstd.c:331:17: warning: no previous prototype for 'unzstd' [-Wmissing-prototypes]
331 | STATIC int INIT unzstd(unsigned char *buf, long len,
| ^~~~~~
lib/decompress_unxz.c:251:17: warning: no previous prototype for 'unxz' [-Wmissing-prototypes]
251 | STATIC int INIT unxz(unsigned char *in, long in_size,
| ^~~~
drivers/watchdog/pretimeout_noop.c:19: warning: Function parameter or member 'wdd' not described in 'pretimeout_noop'
lib/radix-tree.c:288:6: warning: no previous prototype for 'radix_tree_node_rcu_free' [-Wmissing-prototypes]
288 | void radix_tree_node_rcu_free(struct rcu_head *head)
| ^~~~~~~~~~~~~~~~~~~~~~~~
drivers/watchdog/pretimeout_panic.c:19: warning: Function parameter or member 'wdd' not described in 'pretimeout_panic'
drivers/watchdog/it87_wdt.c:222: warning: Function parameter or member 'wdd' not described in 'wdt_set_timeout'
lib/vsprintf.c: In function 'va_format':
lib/vsprintf.c:1694:9: warning: function 'va_format' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
1694 | buf += vsnprintf(buf, end > buf ? end - buf : 0, va_fmt->fmt, va);
| ^~~
lib/win_minmax.c:31: warning: Function parameter or member 'm' not described in 'minmax_subwin_update'
lib/win_minmax.c:31: warning: Function parameter or member 'win' not described in 'minmax_subwin_update'
lib/win_minmax.c:31: warning: Function parameter or member 'val' not described in 'minmax_subwin_update'
lib/win_minmax.c:31: warning: expecting prototype for lib/minmax.c(). Prototype was for minmax_subwin_update() instead
fs/reiserfs/do_balan.c: In function 'balance_leaf_new_nodes_paste_whole':
fs/reiserfs/do_balan.c:1147:13: warning: variable 'leaf_mi' set but not used [-Wunused-but-set-variable]
1147 | int leaf_mi;
| ^~~~~~~
drivers/edac/i7300_edac.c:1199: warning: expecting prototype for i7300_init(). Prototype was for i7300_exit() instead
fs/ext4/balloc.c:423: warning: Function parameter or member 'ignore_locked' not described in 'ext4_read_block_bitmap_nowait'
lib/bitmap.c:498: warning: Function parameter or member 'buf' not described in 'bitmap_print_to_buf'
lib/bitmap.c:498: warning: Function parameter or member 'maskp' not described in 'bitmap_print_to_buf'
lib/bitmap.c:498: warning: Function parameter or member 'nmaskbits' not described in 'bitmap_print_to_buf'
lib/bitmap.c:498: warning: Function parameter or member 'off' not described in 'bitmap_print_to_buf'
lib/bitmap.c:498: warning: Function parameter or member 'count' not described in 'bitmap_print_to_buf'
lib/bitmap.c:606: warning: Function parameter or member 'buf' not described in 'bitmap_print_list_to_buf'
lib/bitmap.c:606: warning: Function parameter or member 'maskp' not described in 'bitmap_print_list_to_buf'
lib/bitmap.c:606: warning: Function parameter or member 'nmaskbits' not described in 'bitmap_print_list_to_buf'
lib/bitmap.c:606: warning: Function parameter or member 'off' not described in 'bitmap_print_list_to_buf'
lib/bitmap.c:606: warning: Function parameter or member 'count' not described in 'bitmap_print_list_to_buf'
fs/reiserfs/fix_node.c: In function 'dc_check_balance_leaf':
fs/reiserfs/fix_node.c:1938:13: warning: variable 'maxsize' set but not used [-Wunused-but-set-variable]
1938 | int maxsize, ret;
| ^~~~~~~
fs/reiserfs/fix_node.c:1935:13: warning: variable 'levbytes' set but not used [-Wunused-but-set-variable]
1935 | int levbytes;
| ^~~~~~~~
fs/reiserfs/prints.c: In function 'prepare_error_buf':
fs/reiserfs/prints.c:221:17: warning: function 'prepare_error_buf' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
221 | p += vscnprintf(p, end - p, fmt1, args);
| ^
fs/reiserfs/prints.c:260:9: warning: function 'prepare_error_buf' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
260 | p += vscnprintf(p, end - p, fmt1, args);
| ^
lib/scatterlist.c:286: warning: Function parameter or member 'first_chunk' not described in '__sg_alloc_table'
lib/scatterlist.c:788: warning: Function parameter or member 'flags' not described in 'sg_miter_start'
fs/reiserfs/lbalance.c: In function 'leaf_copy_items':
fs/reiserfs/lbalance.c:524:29: warning: variable 'dest' set but not used [-Wunused-but-set-variable]
524 | struct buffer_head *dest;
| ^~~~
drivers/cpuidle/governors/ladder.c:54: warning: Function parameter or member 'dev' not described in 'ladder_do_selection'
drivers/cpufreq/intel_pstate.c:263: warning: Function parameter or member 'epp_cached' not described in 'cpudata'
fs/jbd2/journal.c:1294: warning: Function parameter or member 'shrink' not described in 'jbd2_journal_shrink_scan'
fs/jbd2/journal.c:1294: warning: Function parameter or member 'sc' not described in 'jbd2_journal_shrink_scan'
fs/jbd2/journal.c:1318: warning: Function parameter or member 'shrink' not described in 'jbd2_journal_shrink_count'
fs/jbd2/journal.c:1318: warning: Function parameter or member 'sc' not described in 'jbd2_journal_shrink_count'
drivers/cpuidle/sysfs.c:512: warning: expecting prototype for cpuidle_remove_driver_sysfs(). Prototype was for cpuidle_remove_state_sysfs() instead
drivers/cpufreq/powernow-k6.c:141: warning: Function parameter or member 'policy' not described in 'powernow_k6_target'
drivers/gpu/drm/i915/gt/intel_rps.c:2508: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Tells the intel_ips driver that the i915 driver is now loaded, if
drivers/cpufreq/longhaul.c: In function 'do_powersaver':
drivers/cpufreq/longhaul.c:165:13: warning: variable 't' set but not used [-Wunused-but-set-variable]
165 | u32 t;
| ^
drivers/cpufreq/longrun.c:21: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* longrun_{low,high}_freq is needed for the conversion of cpufreq kHz
drivers/cpufreq/longrun.c:126: warning: expecting prototype for longrun_verify_poliy(). Prototype was for longrun_verify_policy() instead
drivers/cpufreq/gx-suspmod.c:143: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* we can detect a core multiplier from dir0_lsb
drivers/cpufreq/gx-suspmod.c:203: warning: Function parameter or member 'cpu' not described in 'gx_get_cpuspeed'
drivers/cpufreq/gx-suspmod.c:219: warning: Function parameter or member 'khz' not described in 'gx_validate_speed'
drivers/cpufreq/gx-suspmod.c:219: warning: Function parameter or member 'on_duration' not described in 'gx_validate_speed'
drivers/cpufreq/gx-suspmod.c:219: warning: Function parameter or member 'off_duration' not described in 'gx_validate_speed'
drivers/cpufreq/gx-suspmod.c:251: warning: Function parameter or member 'policy' not described in 'gx_set_cpuspeed'
drivers/cpufreq/gx-suspmod.c:251: warning: Function parameter or member 'khz' not described in 'gx_set_cpuspeed'
drivers/cpufreq/longhaul.c:247: warning: Function parameter or member 'policy' not described in 'longhaul_setstate'
drivers/cpufreq/longhaul.c:247: warning: Function parameter or member 'table_index' not described in 'longhaul_setstate'
drivers/cpufreq/longhaul.c:247: warning: expecting prototype for longhaul_set_cpu_frequency(). Prototype was for longhaul_setstate() instead
>> drivers/gpu/drm/i915/gem/i915_gem_create.c:571:37: warning: 'prelim_create_extensions' defined but not used [-Wunused-const-variable=]
571 | static const i915_user_extension_fn prelim_create_extensions[] = {
| ^~~~~~~~~~~~~~~~~~~~~~~~
fs/ext4/ioctl.c:31: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Swap memory between @a and @b for @len bytes.
fs/ext4/ioctl.c:52: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Swap i_data and associated attributes between @inode1 and @inode2.
fs/ext4/ioctl.c:106: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Swap the information from the given @inode and the inode
drivers/gpu/drm/i915/gem/i915_gem_create.c:578: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Creates a new mm object and returns a handle to it.
drivers/gpu/drm/i915/gem/i915_gem_create.c:769: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Creates a new mm object and returns a handle to it.
fs/coda/file.c: In function 'coda_release':
fs/coda/file.c:241:13: warning: variable 'err' set but not used [-Wunused-but-set-variable]
241 | int err;
| ^~~
fs/coda/upcall.c: In function 'venus_setattr':
fs/coda/upcall.c:115:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
115 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_close':
fs/coda/upcall.c:164:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
164 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_rename':
fs/coda/upcall.c:238:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
238 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_rmdir':
fs/coda/upcall.c:306:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
306 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_remove':
fs/coda/upcall.c:329:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
329 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_link':
fs/coda/upcall.c:383:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
383 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_symlink':
fs/coda/upcall.c:410:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
410 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_fsync':
fs/coda/upcall.c:443:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
443 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_access':
fs/coda/upcall.c:459:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
459 | union outputArgs *outp;
| ^~~~
fs/coda/upcall.c: In function 'venus_access_intent':
fs/coda/upcall.c:577:27: warning: variable 'outp' set but not used [-Wunused-but-set-variable]
577 | union outputArgs *outp;
| ^~~~
drivers/gpu/drm/i915/gt/intel_workarounds.c:2027: warning: Function parameter or member 'wal' not described in 'wa_find_addr'
drivers/gpu/drm/i915/gt/intel_workarounds.c:2027: warning: Function parameter or member 'test_addr' not described in 'wa_find_addr'
drivers/gpu/drm/i915/gt/intel_workarounds.c:2095: warning: Function parameter or member 'uncore' not described in 'xehpsdv_wa_1607720814'
drivers/gpu/drm/i915/gt/intel_workarounds.c:2095: warning: Function parameter or member 'wal' not described in 'xehpsdv_wa_1607720814'
drivers/cpufreq/cpufreq-nforce2.c:135: warning: Function parameter or member 'bootfsb' not described in 'nforce2_fsb_read'
drivers/gpu/drm/i915/gem/i915_gem_dmabuf.c:62: warning: Function parameter or member 'attrs' not described in 'dmabuf_map_addr'
drivers/gpu/drm/i915/gem/i915_gem_domain.c:96: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Moves a single object to the WC read, and possibly write domain.
drivers/gpu/drm/i915/gem/i915_gem_domain.c:157: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Moves a single object to the GTT read, and possibly write domain.
drivers/gpu/drm/i915/gem/i915_gem_domain.c:244: warning: expecting prototype for Changes the cache(). Prototype was for i915_gem_object_set_cache_level() instead
drivers/gpu/drm/i915/gem/i915_gem_domain.c:462: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Moves a single object to the CPU read, and possibly write domain.
drivers/gpu/drm/i915/gem/i915_gem_domain.c:506: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Called when user space prepares to use an object with the CPU, either
fs/fat/dir.c:282: warning: Function parameter or member 'dir' not described in 'fat_parse_long'
fs/fat/dir.c:282: warning: Function parameter or member 'pos' not described in 'fat_parse_long'
fs/fat/dir.c:282: warning: Function parameter or member 'bh' not described in 'fat_parse_long'
fs/fat/dir.c:282: warning: Function parameter or member 'de' not described in 'fat_parse_long'
fs/fat/dir.c:282: warning: Function parameter or member 'unicode' not described in 'fat_parse_long'
fs/fat/dir.c:282: warning: Function parameter or member 'nr_slots' not described in 'fat_parse_long'
lib/errname.c:16:67: warning: initialized field overwritten [-Woverride-init]
16 | #define E(err) [err + BUILD_BUG_ON_ZERO(err <= 0 || err > 300)] = "-" #err
| ^~~
lib/errname.c:173:9: note: in expansion of macro 'E'
173 | E(EDEADLK), /* EDEADLOCK */
| ^
lib/errname.c:16:67: note: (near initialization for 'names_0[35]')
16 | #define E(err) [err + BUILD_BUG_ON_ZERO(err <= 0 || err > 300)] = "-" #err
| ^~~
lib/errname.c:173:9: note: in expansion of macro 'E'
173 | E(EDEADLK), /* EDEADLOCK */
| ^
drivers/gpu/drm/i915/gem/i915_gem_object.c:129: warning: This comment starts with '/**', but isn't a kernel-doc comment. Refer Documentation/doc-guide/kernel-doc.rst
* Mark up the object's coherency levels for a given cache_level
drivers/gpu/drm/i915/gem/i915_gem_object.c:1073: warning: Function parameter or member 'ww' not described in 'i915_gem_object_migrate_to_smem'
drivers/firmware/efi/efi.c:166:16: warning: no previous prototype for 'efi_attr_is_visible' [-Wmissing-prototypes]
166 | umode_t __weak efi_attr_is_visible(struct kobject *kobj, struct attribute *attr,
| ^~~~~~~~~~~~~~~~~~~
lib/nlattr.c:648: warning: Function parameter or member 'p' not described in 'nla_policy_len'
lib/nlattr.c:648: warning: Excess function parameter 'policy' description in 'nla_policy_len'
fs/hfsplus/inode.c: In function 'hfsplus_cat_read_inode':
fs/hfsplus/inode.c:513:37: warning: suggest braces around empty body in an 'if' statement [-Wempty-body]
513 | /* panic? */;


vim +/prelim_create_extensions +571 drivers/gpu/drm/i915/gem/i915_gem_create.c

dcaccaf0e83a97 Matthew Auld 2021-01-14 1 // SPDX-License-Identifier: MIT
dcaccaf0e83a97 Matthew Auld 2021-01-14 2 /*
dcaccaf0e83a97 Matthew Auld 2021-01-14 3 * Copyright © 2020 Intel Corporation
dcaccaf0e83a97 Matthew Auld 2021-01-14 4 */
dcaccaf0e83a97 Matthew Auld 2021-01-14 5
dcaccaf0e83a97 Matthew Auld 2021-01-14 6 #include "gem/i915_gem_ioctls.h"
dcaccaf0e83a97 Matthew Auld 2021-01-14 7 #include "gem/i915_gem_region.h"
dcaccaf0e83a97 Matthew Auld 2021-01-14 8
dcaccaf0e83a97 Matthew Auld 2021-01-14 9 #include "i915_drv.h"
dcaccaf0e83a97 Matthew Auld 2021-01-14 10
dcaccaf0e83a97 Matthew Auld 2021-01-14 11 static int
dcaccaf0e83a97 Matthew Auld 2021-01-14 12 i915_gem_create(struct drm_file *file,
dcaccaf0e83a97 Matthew Auld 2021-01-14 13 struct intel_memory_region *mr,
dcaccaf0e83a97 Matthew Auld 2021-01-14 14 u64 *size_p,
dcaccaf0e83a97 Matthew Auld 2021-01-14 15 u32 *handle_p)
dcaccaf0e83a97 Matthew Auld 2021-01-14 16 {
dcaccaf0e83a97 Matthew Auld 2021-01-14 17 struct drm_i915_gem_object *obj;
dcaccaf0e83a97 Matthew Auld 2021-01-14 18 u32 handle;
dcaccaf0e83a97 Matthew Auld 2021-01-14 19 u64 size;
dcaccaf0e83a97 Matthew Auld 2021-01-14 20 int ret;
dcaccaf0e83a97 Matthew Auld 2021-01-14 21
dcaccaf0e83a97 Matthew Auld 2021-01-14 22 GEM_BUG_ON(!is_power_of_2(mr->min_page_size));
dcaccaf0e83a97 Matthew Auld 2021-01-14 23 size = round_up(*size_p, mr->min_page_size);
dcaccaf0e83a97 Matthew Auld 2021-01-14 24 if (size == 0)
dcaccaf0e83a97 Matthew Auld 2021-01-14 25 return -EINVAL;
dcaccaf0e83a97 Matthew Auld 2021-01-14 26
dcaccaf0e83a97 Matthew Auld 2021-01-14 27 /* For most of the ABI (e.g. mmap) we think in system pages */
dcaccaf0e83a97 Matthew Auld 2021-01-14 28 GEM_BUG_ON(!IS_ALIGNED(size, PAGE_SIZE));
dcaccaf0e83a97 Matthew Auld 2021-01-14 29
dcaccaf0e83a97 Matthew Auld 2021-01-14 30 /* Allocate the new object */
dcaccaf0e83a97 Matthew Auld 2021-01-14 31 obj = i915_gem_object_create_region(mr, size, 0);
dcaccaf0e83a97 Matthew Auld 2021-01-14 32 if (IS_ERR(obj))
dcaccaf0e83a97 Matthew Auld 2021-01-14 33 return PTR_ERR(obj);
dcaccaf0e83a97 Matthew Auld 2021-01-14 34
dcaccaf0e83a97 Matthew Auld 2021-01-14 35 ret = drm_gem_handle_create(file, &obj->base, &handle);
dcaccaf0e83a97 Matthew Auld 2021-01-14 36 /* drop reference from allocate - handle holds it now */
dcaccaf0e83a97 Matthew Auld 2021-01-14 37 i915_gem_object_put(obj);
dcaccaf0e83a97 Matthew Auld 2021-01-14 38 if (ret)
dcaccaf0e83a97 Matthew Auld 2021-01-14 39 return ret;
dcaccaf0e83a97 Matthew Auld 2021-01-14 40
dcaccaf0e83a97 Matthew Auld 2021-01-14 41 *handle_p = handle;
dcaccaf0e83a97 Matthew Auld 2021-01-14 42 *size_p = size;
dcaccaf0e83a97 Matthew Auld 2021-01-14 43 return 0;
dcaccaf0e83a97 Matthew Auld 2021-01-14 44 }
dcaccaf0e83a97 Matthew Auld 2021-01-14 45
dcaccaf0e83a97 Matthew Auld 2021-01-14 46 int
dcaccaf0e83a97 Matthew Auld 2021-01-14 47 i915_gem_dumb_create(struct drm_file *file,
dcaccaf0e83a97 Matthew Auld 2021-01-14 48 struct drm_device *dev,
dcaccaf0e83a97 Matthew Auld 2021-01-14 49 struct drm_mode_create_dumb *args)
dcaccaf0e83a97 Matthew Auld 2021-01-14 50 {
dcaccaf0e83a97 Matthew Auld 2021-01-14 51 enum intel_memory_type mem_type;
dcaccaf0e83a97 Matthew Auld 2021-01-14 52 int cpp = DIV_ROUND_UP(args->bpp, 8);
dcaccaf0e83a97 Matthew Auld 2021-01-14 53 u32 format;
dcaccaf0e83a97 Matthew Auld 2021-01-14 54
dcaccaf0e83a97 Matthew Auld 2021-01-14 55 switch (cpp) {
dcaccaf0e83a97 Matthew Auld 2021-01-14 56 case 1:
dcaccaf0e83a97 Matthew Auld 2021-01-14 57 format = DRM_FORMAT_C8;
dcaccaf0e83a97 Matthew Auld 2021-01-14 58 break;
dcaccaf0e83a97 Matthew Auld 2021-01-14 59 case 2:
dcaccaf0e83a97 Matthew Auld 2021-01-14 60 format = DRM_FORMAT_RGB565;
dcaccaf0e83a97 Matthew Auld 2021-01-14 61 break;
dcaccaf0e83a97 Matthew Auld 2021-01-14 62 case 4:
dcaccaf0e83a97 Matthew Auld 2021-01-14 63 format = DRM_FORMAT_XRGB8888;
dcaccaf0e83a97 Matthew Auld 2021-01-14 64 break;
dcaccaf0e83a97 Matthew Auld 2021-01-14 65 default:
dcaccaf0e83a97 Matthew Auld 2021-01-14 66 return -EINVAL;
dcaccaf0e83a97 Matthew Auld 2021-01-14 67 }
dcaccaf0e83a97 Matthew Auld 2021-01-14 68
dcaccaf0e83a97 Matthew Auld 2021-01-14 69 /* have to work out size/pitch and return them */
dcaccaf0e83a97 Matthew Auld 2021-01-14 70 args->pitch = ALIGN(args->width * cpp, 64);
dcaccaf0e83a97 Matthew Auld 2021-01-14 71
dcaccaf0e83a97 Matthew Auld 2021-01-14 72 /* align stride to page size so that we can remap */
dcaccaf0e83a97 Matthew Auld 2021-01-14 73 if (args->pitch > intel_plane_fb_max_stride(to_i915(dev), format,
dcaccaf0e83a97 Matthew Auld 2021-01-14 74 DRM_FORMAT_MOD_LINEAR))
dcaccaf0e83a97 Matthew Auld 2021-01-14 75 args->pitch = ALIGN(args->pitch, 4096);
dcaccaf0e83a97 Matthew Auld 2021-01-14 76
dcaccaf0e83a97 Matthew Auld 2021-01-14 77 if (args->pitch < args->width)
dcaccaf0e83a97 Matthew Auld 2021-01-14 78 return -EINVAL;
dcaccaf0e83a97 Matthew Auld 2021-01-14 79
dcaccaf0e83a97 Matthew Auld 2021-01-14 80 args->size = mul_u32_u32(args->pitch, args->height);
dcaccaf0e83a97 Matthew Auld 2021-01-14 81
dcaccaf0e83a97 Matthew Auld 2021-01-14 82 mem_type = INTEL_MEMORY_SYSTEM;
dcaccaf0e83a97 Matthew Auld 2021-01-14 83 if (HAS_LMEM(to_i915(dev)))
dcaccaf0e83a97 Matthew Auld 2021-01-14 84 mem_type = INTEL_MEMORY_LOCAL;
dcaccaf0e83a97 Matthew Auld 2021-01-14 85
dcaccaf0e83a97 Matthew Auld 2021-01-14 86 return i915_gem_create(file,
dcaccaf0e83a97 Matthew Auld 2021-01-14 87 intel_memory_region_by_type(to_i915(dev),
dcaccaf0e83a97 Matthew Auld 2021-01-14 88 mem_type),
dcaccaf0e83a97 Matthew Auld 2021-01-14 89 &args->size, &args->handle);
dcaccaf0e83a97 Matthew Auld 2021-01-14 90 }
dcaccaf0e83a97 Matthew Auld 2021-01-14 91
dcaccaf0e83a97 Matthew Auld 2021-01-14 92 /**
dcaccaf0e83a97 Matthew Auld 2021-01-14 93 * Creates a new mm object and returns a handle to it.
dcaccaf0e83a97 Matthew Auld 2021-01-14 94 * @dev: drm device pointer
dcaccaf0e83a97 Matthew Auld 2021-01-14 95 * @data: ioctl data blob
dcaccaf0e83a97 Matthew Auld 2021-01-14 96 * @file: drm file pointer
dcaccaf0e83a97 Matthew Auld 2021-01-14 97 */
dcaccaf0e83a97 Matthew Auld 2021-01-14 98 int
dcaccaf0e83a97 Matthew Auld 2021-01-14 99 i915_gem_create_ioctl(struct drm_device *dev, void *data,
dcaccaf0e83a97 Matthew Auld 2021-01-14 100 struct drm_file *file)
dcaccaf0e83a97 Matthew Auld 2021-01-14 101 {
dcaccaf0e83a97 Matthew Auld 2021-01-14 102 struct drm_i915_private *i915 = to_i915(dev);
dcaccaf0e83a97 Matthew Auld 2021-01-14 103 struct drm_i915_gem_create *args = data;
dcaccaf0e83a97 Matthew Auld 2021-01-14 104
dcaccaf0e83a97 Matthew Auld 2021-01-14 105 i915_gem_flush_free_objects(i915);
dcaccaf0e83a97 Matthew Auld 2021-01-14 106
dcaccaf0e83a97 Matthew Auld 2021-01-14 107 return i915_gem_create(file,
dcaccaf0e83a97 Matthew Auld 2021-01-14 108 intel_memory_region_by_type(i915,
dcaccaf0e83a97 Matthew Auld 2021-01-14 109 INTEL_MEMORY_SYSTEM),
dcaccaf0e83a97 Matthew Auld 2021-01-14 110 &args->size, &args->handle);
dcaccaf0e83a97 Matthew Auld 2021-01-14 111 }

--
0-DAY CI Kernel Test Service
https://01.org/lkp