From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH] sparse: use static inline for __chk_{user, io}_ptr()
Date: Wed, 02 Sep 2020 09:12:38 +0800 [thread overview]
Message-ID: <202009020955.cun2o9FJ%lkp@intel.com> (raw)
In-Reply-To: <20200828085301.78423-1-luc.vanoostenryck@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 31581 bytes --]
Hi Luc,
I love your patch! Perhaps something to improve:
[auto build test WARNING on 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5]
url: https://github.com/0day-ci/linux/commits/Luc-Van-Oostenryck/sparse-use-static-inline-for-__chk_-user-io-_ptr/20200828-165431
base: 9123e3a74ec7b934a4a099e98af6a61c2f80bbf5
config: sparc-randconfig-s032-20200901 (attached as .config)
compiler: sparc64-linux-gcc (GCC) 9.3.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.2-191-g10164920-dirty
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' ARCH=sparc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:138:17: sparse: sparse: incorrect type in initializer (different base types) @@ expected restricted __poll_t ( *poll )( ... ) @@ got unsigned int ( * )( ... ) @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:138:17: sparse: expected restricted __poll_t ( *poll )( ... )
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:138:17: sparse: got unsigned int ( * )( ... )
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:261:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:263:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:263:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:263:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:263:29: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:263:29: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:263:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:263:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:354:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:412:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:412:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:412:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:412:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:412:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:412:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:412:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:473:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:531:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:531:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:531:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:531:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:531:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:531:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:531:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:592:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:650:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:650:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:650:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:650:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:650:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:650:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:650:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:747:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: cast removes address space '__user' of expression
>> drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got signed int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: got signed int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:825:29: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:911:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1004:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1054:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1054:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1054:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1054:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1054:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1054:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1054:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void const volatile [noderef] __user *ptr @@ got unsigned int [usertype] * @@
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: expected void const volatile [noderef] __user *ptr
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: got unsigned int [usertype] *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1108:21: sparse: sparse: cast removes address space '__user' of expression
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1357:25: sparse: sparse: incompatible types in comparison expression (different address spaces):
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1357:25: sparse: struct dma_fence [noderef] __rcu *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1357:25: sparse: struct dma_fence *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1358:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1358:17: sparse: struct dma_fence [noderef] __rcu *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1358:17: sparse: struct dma_fence *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1409:23: sparse: sparse: cast to restricted __le32
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1409:23: sparse: sparse: too many warnings
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1417:17: sparse: sparse: incompatible types in comparison expression (different address spaces):
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1417:17: sparse: struct dma_fence [noderef] __rcu *
drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c:1417:17: sparse: struct dma_fence *
# https://github.com/0day-ci/linux/commit/7d01c91ac34a64f0177bc6d058cc50e805f59102
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Luc-Van-Oostenryck/sparse-use-static-inline-for-__chk_-user-io-_ptr/20200828-165431
git checkout 7d01c91ac34a64f0177bc6d058cc50e805f59102
vim +825 drivers/gpu/drm/amd/amdgpu/amdgpu_debugfs.c
75758255dc0fae Alex Deucher 2017-12-14 672
7e4237dbe494f9 Tom St Denis 2018-05-02 673 /**
7e4237dbe494f9 Tom St Denis 2018-05-02 674 * amdgpu_debugfs_gca_config_read - Read from gfx config data
7e4237dbe494f9 Tom St Denis 2018-05-02 675 *
7e4237dbe494f9 Tom St Denis 2018-05-02 676 * @f: open file handle
7e4237dbe494f9 Tom St Denis 2018-05-02 677 * @buf: User buffer to store read data in
7e4237dbe494f9 Tom St Denis 2018-05-02 678 * @size: Number of bytes to read
7e4237dbe494f9 Tom St Denis 2018-05-02 679 * @pos: Offset to seek to
7e4237dbe494f9 Tom St Denis 2018-05-02 680 *
7e4237dbe494f9 Tom St Denis 2018-05-02 681 * This file is used to access configuration data in a somewhat
7e4237dbe494f9 Tom St Denis 2018-05-02 682 * stable fashion. The format is a series of DWORDs with the first
7e4237dbe494f9 Tom St Denis 2018-05-02 683 * indicating which revision it is. New content is appended to the
7e4237dbe494f9 Tom St Denis 2018-05-02 684 * end so that older software can still read the data.
7e4237dbe494f9 Tom St Denis 2018-05-02 685 */
7e4237dbe494f9 Tom St Denis 2018-05-02 686
75758255dc0fae Alex Deucher 2017-12-14 687 static ssize_t amdgpu_debugfs_gca_config_read(struct file *f, char __user *buf,
75758255dc0fae Alex Deucher 2017-12-14 688 size_t size, loff_t *pos)
75758255dc0fae Alex Deucher 2017-12-14 689 {
75758255dc0fae Alex Deucher 2017-12-14 690 struct amdgpu_device *adev = file_inode(f)->i_private;
75758255dc0fae Alex Deucher 2017-12-14 691 ssize_t result = 0;
75758255dc0fae Alex Deucher 2017-12-14 692 int r;
75758255dc0fae Alex Deucher 2017-12-14 693 uint32_t *config, no_regs = 0;
75758255dc0fae Alex Deucher 2017-12-14 694
75758255dc0fae Alex Deucher 2017-12-14 695 if (size & 0x3 || *pos & 0x3)
75758255dc0fae Alex Deucher 2017-12-14 696 return -EINVAL;
75758255dc0fae Alex Deucher 2017-12-14 697
75758255dc0fae Alex Deucher 2017-12-14 698 config = kmalloc_array(256, sizeof(*config), GFP_KERNEL);
75758255dc0fae Alex Deucher 2017-12-14 699 if (!config)
75758255dc0fae Alex Deucher 2017-12-14 700 return -ENOMEM;
75758255dc0fae Alex Deucher 2017-12-14 701
75758255dc0fae Alex Deucher 2017-12-14 702 /* version, increment each time something is added */
75758255dc0fae Alex Deucher 2017-12-14 703 config[no_regs++] = 3;
75758255dc0fae Alex Deucher 2017-12-14 704 config[no_regs++] = adev->gfx.config.max_shader_engines;
75758255dc0fae Alex Deucher 2017-12-14 705 config[no_regs++] = adev->gfx.config.max_tile_pipes;
75758255dc0fae Alex Deucher 2017-12-14 706 config[no_regs++] = adev->gfx.config.max_cu_per_sh;
75758255dc0fae Alex Deucher 2017-12-14 707 config[no_regs++] = adev->gfx.config.max_sh_per_se;
75758255dc0fae Alex Deucher 2017-12-14 708 config[no_regs++] = adev->gfx.config.max_backends_per_se;
75758255dc0fae Alex Deucher 2017-12-14 709 config[no_regs++] = adev->gfx.config.max_texture_channel_caches;
75758255dc0fae Alex Deucher 2017-12-14 710 config[no_regs++] = adev->gfx.config.max_gprs;
75758255dc0fae Alex Deucher 2017-12-14 711 config[no_regs++] = adev->gfx.config.max_gs_threads;
75758255dc0fae Alex Deucher 2017-12-14 712 config[no_regs++] = adev->gfx.config.max_hw_contexts;
75758255dc0fae Alex Deucher 2017-12-14 713 config[no_regs++] = adev->gfx.config.sc_prim_fifo_size_frontend;
75758255dc0fae Alex Deucher 2017-12-14 714 config[no_regs++] = adev->gfx.config.sc_prim_fifo_size_backend;
75758255dc0fae Alex Deucher 2017-12-14 715 config[no_regs++] = adev->gfx.config.sc_hiz_tile_fifo_size;
75758255dc0fae Alex Deucher 2017-12-14 716 config[no_regs++] = adev->gfx.config.sc_earlyz_tile_fifo_size;
75758255dc0fae Alex Deucher 2017-12-14 717 config[no_regs++] = adev->gfx.config.num_tile_pipes;
75758255dc0fae Alex Deucher 2017-12-14 718 config[no_regs++] = adev->gfx.config.backend_enable_mask;
75758255dc0fae Alex Deucher 2017-12-14 719 config[no_regs++] = adev->gfx.config.mem_max_burst_length_bytes;
75758255dc0fae Alex Deucher 2017-12-14 720 config[no_regs++] = adev->gfx.config.mem_row_size_in_kb;
75758255dc0fae Alex Deucher 2017-12-14 721 config[no_regs++] = adev->gfx.config.shader_engine_tile_size;
75758255dc0fae Alex Deucher 2017-12-14 722 config[no_regs++] = adev->gfx.config.num_gpus;
75758255dc0fae Alex Deucher 2017-12-14 723 config[no_regs++] = adev->gfx.config.multi_gpu_tile_size;
75758255dc0fae Alex Deucher 2017-12-14 724 config[no_regs++] = adev->gfx.config.mc_arb_ramcfg;
75758255dc0fae Alex Deucher 2017-12-14 725 config[no_regs++] = adev->gfx.config.gb_addr_config;
75758255dc0fae Alex Deucher 2017-12-14 726 config[no_regs++] = adev->gfx.config.num_rbs;
75758255dc0fae Alex Deucher 2017-12-14 727
75758255dc0fae Alex Deucher 2017-12-14 728 /* rev==1 */
75758255dc0fae Alex Deucher 2017-12-14 729 config[no_regs++] = adev->rev_id;
75758255dc0fae Alex Deucher 2017-12-14 730 config[no_regs++] = adev->pg_flags;
75758255dc0fae Alex Deucher 2017-12-14 731 config[no_regs++] = adev->cg_flags;
75758255dc0fae Alex Deucher 2017-12-14 732
75758255dc0fae Alex Deucher 2017-12-14 733 /* rev==2 */
75758255dc0fae Alex Deucher 2017-12-14 734 config[no_regs++] = adev->family;
75758255dc0fae Alex Deucher 2017-12-14 735 config[no_regs++] = adev->external_rev_id;
75758255dc0fae Alex Deucher 2017-12-14 736
75758255dc0fae Alex Deucher 2017-12-14 737 /* rev==3 */
75758255dc0fae Alex Deucher 2017-12-14 738 config[no_regs++] = adev->pdev->device;
75758255dc0fae Alex Deucher 2017-12-14 739 config[no_regs++] = adev->pdev->revision;
75758255dc0fae Alex Deucher 2017-12-14 740 config[no_regs++] = adev->pdev->subsystem_device;
75758255dc0fae Alex Deucher 2017-12-14 741 config[no_regs++] = adev->pdev->subsystem_vendor;
75758255dc0fae Alex Deucher 2017-12-14 742
75758255dc0fae Alex Deucher 2017-12-14 743 while (size && (*pos < no_regs * 4)) {
75758255dc0fae Alex Deucher 2017-12-14 744 uint32_t value;
75758255dc0fae Alex Deucher 2017-12-14 745
75758255dc0fae Alex Deucher 2017-12-14 746 value = config[*pos >> 2];
75758255dc0fae Alex Deucher 2017-12-14 @747 r = put_user(value, (uint32_t *)buf);
75758255dc0fae Alex Deucher 2017-12-14 748 if (r) {
75758255dc0fae Alex Deucher 2017-12-14 749 kfree(config);
75758255dc0fae Alex Deucher 2017-12-14 750 return r;
75758255dc0fae Alex Deucher 2017-12-14 751 }
75758255dc0fae Alex Deucher 2017-12-14 752
75758255dc0fae Alex Deucher 2017-12-14 753 result += 4;
75758255dc0fae Alex Deucher 2017-12-14 754 buf += 4;
75758255dc0fae Alex Deucher 2017-12-14 755 *pos += 4;
75758255dc0fae Alex Deucher 2017-12-14 756 size -= 4;
75758255dc0fae Alex Deucher 2017-12-14 757 }
75758255dc0fae Alex Deucher 2017-12-14 758
75758255dc0fae Alex Deucher 2017-12-14 759 kfree(config);
75758255dc0fae Alex Deucher 2017-12-14 760 return result;
75758255dc0fae Alex Deucher 2017-12-14 761 }
75758255dc0fae Alex Deucher 2017-12-14 762
7e4237dbe494f9 Tom St Denis 2018-05-02 763 /**
7e4237dbe494f9 Tom St Denis 2018-05-02 764 * amdgpu_debugfs_sensor_read - Read from the powerplay sensors
7e4237dbe494f9 Tom St Denis 2018-05-02 765 *
7e4237dbe494f9 Tom St Denis 2018-05-02 766 * @f: open file handle
7e4237dbe494f9 Tom St Denis 2018-05-02 767 * @buf: User buffer to store read data in
7e4237dbe494f9 Tom St Denis 2018-05-02 768 * @size: Number of bytes to read
7e4237dbe494f9 Tom St Denis 2018-05-02 769 * @pos: Offset to seek to
7e4237dbe494f9 Tom St Denis 2018-05-02 770 *
7e4237dbe494f9 Tom St Denis 2018-05-02 771 * The offset is treated as the BYTE address of one of the sensors
7e4237dbe494f9 Tom St Denis 2018-05-02 772 * enumerated in amd/include/kgd_pp_interface.h under the
7e4237dbe494f9 Tom St Denis 2018-05-02 773 * 'amd_pp_sensors' enumeration. For instance to read the UVD VCLK
7e4237dbe494f9 Tom St Denis 2018-05-02 774 * you would use the offset 3 * 4 = 12.
7e4237dbe494f9 Tom St Denis 2018-05-02 775 */
75758255dc0fae Alex Deucher 2017-12-14 776 static ssize_t amdgpu_debugfs_sensor_read(struct file *f, char __user *buf,
75758255dc0fae Alex Deucher 2017-12-14 777 size_t size, loff_t *pos)
75758255dc0fae Alex Deucher 2017-12-14 778 {
75758255dc0fae Alex Deucher 2017-12-14 779 struct amdgpu_device *adev = file_inode(f)->i_private;
75758255dc0fae Alex Deucher 2017-12-14 780 int idx, x, outsize, r, valuesize;
75758255dc0fae Alex Deucher 2017-12-14 781 uint32_t values[16];
75758255dc0fae Alex Deucher 2017-12-14 782
75758255dc0fae Alex Deucher 2017-12-14 783 if (size & 3 || *pos & 0x3)
75758255dc0fae Alex Deucher 2017-12-14 784 return -EINVAL;
75758255dc0fae Alex Deucher 2017-12-14 785
b13aa1091fb200 Rex Zhu 2018-03-26 786 if (!adev->pm.dpm_enabled)
75758255dc0fae Alex Deucher 2017-12-14 787 return -EINVAL;
75758255dc0fae Alex Deucher 2017-12-14 788
75758255dc0fae Alex Deucher 2017-12-14 789 /* convert offset to sensor number */
75758255dc0fae Alex Deucher 2017-12-14 790 idx = *pos >> 2;
75758255dc0fae Alex Deucher 2017-12-14 791
75758255dc0fae Alex Deucher 2017-12-14 792 valuesize = sizeof(values);
a9ffe2a9833835 Alex Deucher 2020-01-10 793
a9ffe2a9833835 Alex Deucher 2020-01-10 794 r = pm_runtime_get_sync(adev->ddev->dev);
9eee152aab56d3 Alex Deucher 2020-06-17 795 if (r < 0) {
9eee152aab56d3 Alex Deucher 2020-06-17 796 pm_runtime_put_autosuspend(adev->ddev->dev);
a9ffe2a9833835 Alex Deucher 2020-01-10 797 return r;
9eee152aab56d3 Alex Deucher 2020-06-17 798 }
a9ffe2a9833835 Alex Deucher 2020-01-10 799
95a2f917387a23 Yintian Tao 2020-04-07 800 r = amdgpu_virt_enable_access_debugfs(adev);
9eee152aab56d3 Alex Deucher 2020-06-17 801 if (r < 0) {
9eee152aab56d3 Alex Deucher 2020-06-17 802 pm_runtime_put_autosuspend(adev->ddev->dev);
95a2f917387a23 Yintian Tao 2020-04-07 803 return r;
9eee152aab56d3 Alex Deucher 2020-06-17 804 }
95a2f917387a23 Yintian Tao 2020-04-07 805
75758255dc0fae Alex Deucher 2017-12-14 806 r = amdgpu_dpm_read_sensor(adev, idx, &values[0], &valuesize);
a9ffe2a9833835 Alex Deucher 2020-01-10 807
a9ffe2a9833835 Alex Deucher 2020-01-10 808 pm_runtime_mark_last_busy(adev->ddev->dev);
a9ffe2a9833835 Alex Deucher 2020-01-10 809 pm_runtime_put_autosuspend(adev->ddev->dev);
a9ffe2a9833835 Alex Deucher 2020-01-10 810
95a2f917387a23 Yintian Tao 2020-04-07 811 if (r) {
95a2f917387a23 Yintian Tao 2020-04-07 812 amdgpu_virt_disable_access_debugfs(adev);
4a5a2de66686e3 Kevin Wang 2019-01-11 813 return r;
95a2f917387a23 Yintian Tao 2020-04-07 814 }
75758255dc0fae Alex Deucher 2017-12-14 815
95a2f917387a23 Yintian Tao 2020-04-07 816 if (size > valuesize) {
95a2f917387a23 Yintian Tao 2020-04-07 817 amdgpu_virt_disable_access_debugfs(adev);
75758255dc0fae Alex Deucher 2017-12-14 818 return -EINVAL;
95a2f917387a23 Yintian Tao 2020-04-07 819 }
75758255dc0fae Alex Deucher 2017-12-14 820
75758255dc0fae Alex Deucher 2017-12-14 821 outsize = 0;
75758255dc0fae Alex Deucher 2017-12-14 822 x = 0;
75758255dc0fae Alex Deucher 2017-12-14 823 if (!r) {
75758255dc0fae Alex Deucher 2017-12-14 824 while (size) {
75758255dc0fae Alex Deucher 2017-12-14 @825 r = put_user(values[x++], (int32_t *)buf);
75758255dc0fae Alex Deucher 2017-12-14 826 buf += 4;
75758255dc0fae Alex Deucher 2017-12-14 827 size -= 4;
75758255dc0fae Alex Deucher 2017-12-14 828 outsize += 4;
75758255dc0fae Alex Deucher 2017-12-14 829 }
75758255dc0fae Alex Deucher 2017-12-14 830 }
75758255dc0fae Alex Deucher 2017-12-14 831
95a2f917387a23 Yintian Tao 2020-04-07 832 amdgpu_virt_disable_access_debugfs(adev);
75758255dc0fae Alex Deucher 2017-12-14 833 return !r ? outsize : r;
75758255dc0fae Alex Deucher 2017-12-14 834 }
75758255dc0fae Alex Deucher 2017-12-14 835
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 30519 bytes --]
next prev parent reply other threads:[~2020-09-02 1:12 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-28 8:53 [PATCH] sparse: use static inline for __chk_{user,io}_ptr() Luc Van Oostenryck
2020-08-28 11:15 ` kernel test robot
2020-08-28 11:15 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-08-28 11:37 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() kernel test robot
2020-08-28 11:37 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-08-28 12:20 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() kernel test robot
2020-08-28 12:20 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-08-28 14:21 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() kernel test robot
2020-08-28 14:21 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-08-28 15:11 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() kernel test robot
2020-08-28 15:11 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-08-28 19:04 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() Miguel Ojeda
2020-08-28 20:15 ` Luc Van Oostenryck
2020-08-29 7:33 ` Miguel Ojeda
2020-09-01 0:57 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-09-01 5:33 ` kernel test robot
2020-09-01 21:37 ` kernel test robot
2020-09-02 1:12 ` kernel test robot [this message]
2020-09-03 2:56 ` kernel test robot
2020-09-03 4:06 ` kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2020-06-28 7:20 [PATCH] sparse: use static inline for __chk_{user,io}_ptr() Luc Van Oostenryck
2020-06-29 17:12 ` kernel test robot
2020-06-29 17:12 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-06-29 18:08 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() kernel test robot
2020-06-29 18:08 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-06-29 18:37 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() Luc Van Oostenryck
2020-06-29 18:37 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() Luc Van Oostenryck
2020-06-30 0:31 ` Rong Chen
2020-06-30 11:58 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() kernel test robot
2020-06-30 11:58 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
2020-07-01 18:35 ` [PATCH] sparse: use static inline for __chk_{user,io}_ptr() kernel test robot
2020-07-01 18:35 ` [PATCH] sparse: use static inline for __chk_{user, io}_ptr() kernel test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202009020955.cun2o9FJ%lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild-all@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.