All of lore.kernel.org
 help / color / mirror / Atom feed
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 --]

  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.