[PATCH 2/3] powerpc/mce: Add debugfs interface to inject MCE

kernel test robot lkp at intel.com
Thu Sep 17 18:24:51 AEST 2020


Hi Ganesh,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on powerpc/next]
[also build test ERROR on v5.9-rc5 next-20200916]
[cannot apply to scottwood/next mpe/next]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Ganesh-Goudar/powerpc-mce-Fix-mce-handler-and-add-selftest/20200917-092355
base:   https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git next
config: powerpc-randconfig-r021-20200917 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=powerpc 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   arch/powerpc/sysdev/mce_error_inject.c: In function 'get_slb_index':
>> arch/powerpc/sysdev/mce_error_inject.c:17:10: error: implicit declaration of function 'get_paca' [-Werror=implicit-function-declaration]
      17 |  index = get_paca()->stab_rr;
         |          ^~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:17:20: error: invalid type argument of '->' (have 'int')
      17 |  index = get_paca()->stab_rr;
         |                    ^~
>> arch/powerpc/sysdev/mce_error_inject.c:22:15: error: 'mmu_slb_size' undeclared (first use in this function)
      22 |  if (index < (mmu_slb_size - 1))
         |               ^~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:22:15: note: each undeclared identifier is reported only once for each function it appears in
>> arch/powerpc/sysdev/mce_error_inject.c:25:11: error: 'SLB_NUM_BOLTED' undeclared (first use in this function)
      25 |   index = SLB_NUM_BOLTED;
         |           ^~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:26:12: error: invalid type argument of '->' (have 'int')
      26 |  get_paca()->stab_rr = index;
         |            ^~
   arch/powerpc/sysdev/mce_error_inject.c: In function 'mk_esid_data':
>> arch/powerpc/sysdev/mce_error_inject.c:31:15: error: 'MMU_SEGSIZE_256M' undeclared (first use in this function); did you mean 'MMU_PAGE_256M'?
      31 |  (((ssize) == MMU_SEGSIZE_256M) ? ESID_MASK : ESID_MASK_1T)
         |               ^~~~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:36:15: note: in expansion of macro 'slb_esid_mask'
      36 |  return (ea & slb_esid_mask(ssize)) | SLB_ESID_V | slot;
         |               ^~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:31:35: error: 'ESID_MASK' undeclared (first use in this function); did you mean 'NMI_MASK'?
      31 |  (((ssize) == MMU_SEGSIZE_256M) ? ESID_MASK : ESID_MASK_1T)
         |                                   ^~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:36:15: note: in expansion of macro 'slb_esid_mask'
      36 |  return (ea & slb_esid_mask(ssize)) | SLB_ESID_V | slot;
         |               ^~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:31:47: error: 'ESID_MASK_1T' undeclared (first use in this function)
      31 |  (((ssize) == MMU_SEGSIZE_256M) ? ESID_MASK : ESID_MASK_1T)
         |                                               ^~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:36:15: note: in expansion of macro 'slb_esid_mask'
      36 |  return (ea & slb_esid_mask(ssize)) | SLB_ESID_V | slot;
         |               ^~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:36:39: error: 'SLB_ESID_V' undeclared (first use in this function)
      36 |  return (ea & slb_esid_mask(ssize)) | SLB_ESID_V | slot;
         |                                       ^~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c: In function 'mk_vsid_data':
>> arch/powerpc/sysdev/mce_error_inject.c:45:10: error: implicit declaration of function 'get_kernel_vsid' [-Werror=implicit-function-declaration]
      45 |  return (get_kernel_vsid(ea, ssize) << slb_vsid_shift(ssize)) | flags |
         |          ^~~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:40:14: error: 'MMU_SEGSIZE_256M' undeclared (first use in this function); did you mean 'MMU_PAGE_256M'?
      40 |  ((ssize) == MMU_SEGSIZE_256M ? SLB_VSID_SHIFT : SLB_VSID_SHIFT_1T)
         |              ^~~~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:45:40: note: in expansion of macro 'slb_vsid_shift'
      45 |  return (get_kernel_vsid(ea, ssize) << slb_vsid_shift(ssize)) | flags |
         |                                        ^~~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:40:33: error: 'SLB_VSID_SHIFT' undeclared (first use in this function)
      40 |  ((ssize) == MMU_SEGSIZE_256M ? SLB_VSID_SHIFT : SLB_VSID_SHIFT_1T)
         |                                 ^~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:45:40: note: in expansion of macro 'slb_vsid_shift'
      45 |  return (get_kernel_vsid(ea, ssize) << slb_vsid_shift(ssize)) | flags |
         |                                        ^~~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:40:50: error: 'SLB_VSID_SHIFT_1T' undeclared (first use in this function)
      40 |  ((ssize) == MMU_SEGSIZE_256M ? SLB_VSID_SHIFT : SLB_VSID_SHIFT_1T)
         |                                                  ^~~~~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c:45:40: note: in expansion of macro 'slb_vsid_shift'
      45 |  return (get_kernel_vsid(ea, ssize) << slb_vsid_shift(ssize)) | flags |
         |                                        ^~~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:46:28: error: 'SLB_VSID_SSIZE_SHIFT' undeclared (first use in this function)
      46 |   ((unsigned long)ssize << SLB_VSID_SSIZE_SHIFT);
         |                            ^~~~~~~~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c: In function 'insert_slb_entry':
>> arch/powerpc/sysdev/mce_error_inject.c:54:10: error: 'SLB_VSID_KERNEL' undeclared (first use in this function)
      54 |  flags = SLB_VSID_KERNEL | mmu_psize_defs[MMU_PAGE_64K].sllp;
         |          ^~~~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:54:28: error: 'mmu_psize_defs' undeclared (first use in this function)
      54 |  flags = SLB_VSID_KERNEL | mmu_psize_defs[MMU_PAGE_64K].sllp;
         |                            ^~~~~~~~~~~~~~
>> arch/powerpc/sysdev/mce_error_inject.c:58:7: error: assignment to 'struct paca_struct *' from 'int' makes pointer from integer without a cast [-Werror=int-conversion]
      58 |  paca = get_paca();
         |       ^
>> arch/powerpc/sysdev/mce_error_inject.c:52:22: error: variable 'paca' set but not used [-Werror=unused-but-set-variable]
      52 |  struct paca_struct *paca;
         |                      ^~~~
   arch/powerpc/sysdev/mce_error_inject.c: In function 'inject_vmalloc_slb_multihit':
>> arch/powerpc/sysdev/mce_error_inject.c:83:22: error: 'MMU_SEGSIZE_1T' undeclared (first use in this function)
      83 |  insert_slb_entry(p, MMU_SEGSIZE_1T);
         |                      ^~~~~~~~~~~~~~
   arch/powerpc/sysdev/mce_error_inject.c: In function 'inject_kmalloc_slb_multihit':
   arch/powerpc/sysdev/mce_error_inject.c:95:22: error: 'MMU_SEGSIZE_1T' undeclared (first use in this function)
      95 |  insert_slb_entry(p, MMU_SEGSIZE_1T);
         |                      ^~~~~~~~~~~~~~
   cc1: all warnings being treated as errors

# https://github.com/0day-ci/linux/commit/4ab1196e8e542fdf0e7cda8638dfb0e5771fd98e
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review Ganesh-Goudar/powerpc-mce-Fix-mce-handler-and-add-selftest/20200917-092355
git checkout 4ab1196e8e542fdf0e7cda8638dfb0e5771fd98e
vim +/get_paca +17 arch/powerpc/sysdev/mce_error_inject.c

    12	
    13	static inline unsigned long get_slb_index(void)
    14	{
    15		unsigned long index;
    16	
  > 17		index = get_paca()->stab_rr;
    18	
    19		/*
    20		 * simple round-robin replacement of slb starting at SLB_NUM_BOLTED.
    21		 */
  > 22		if (index < (mmu_slb_size - 1))
    23			index++;
    24		else
  > 25			index = SLB_NUM_BOLTED;
    26		get_paca()->stab_rr = index;
    27		return index;
    28	}
    29	
    30	#define slb_esid_mask(ssize)	\
  > 31		(((ssize) == MMU_SEGSIZE_256M) ? ESID_MASK : ESID_MASK_1T)
    32	
    33	static inline unsigned long mk_esid_data(unsigned long ea, int ssize,
    34						 unsigned long slot)
    35	{
  > 36		return (ea & slb_esid_mask(ssize)) | SLB_ESID_V | slot;
    37	}
    38	
    39	#define slb_vsid_shift(ssize)	\
  > 40		((ssize) == MMU_SEGSIZE_256M ? SLB_VSID_SHIFT : SLB_VSID_SHIFT_1T)
    41	
    42	static inline unsigned long mk_vsid_data(unsigned long ea, int ssize,
    43						 unsigned long flags)
    44	{
  > 45		return (get_kernel_vsid(ea, ssize) << slb_vsid_shift(ssize)) | flags |
  > 46			((unsigned long)ssize << SLB_VSID_SSIZE_SHIFT);
    47	}
    48	
    49	static void insert_slb_entry(char *p, int ssize)
    50	{
    51		unsigned long flags, entry;
  > 52		struct paca_struct *paca;
    53	
  > 54		flags = SLB_VSID_KERNEL | mmu_psize_defs[MMU_PAGE_64K].sllp;
    55	
    56		preempt_disable();
    57	
  > 58		paca = get_paca();
    59	
    60		entry = get_slb_index();
    61		asm volatile("slbmte %0,%1" :
    62				: "r" (mk_vsid_data((unsigned long)p, ssize, flags)),
    63				  "r" (mk_esid_data((unsigned long)p, ssize, entry))
    64				: "memory");
    65	
    66		entry = get_slb_index();
    67		asm volatile("slbmte %0,%1" :
    68				: "r" (mk_vsid_data((unsigned long)p, ssize, flags)),
    69				  "r" (mk_esid_data((unsigned long)p, ssize, entry))
    70				: "memory");
    71		preempt_enable();
    72		p[0] = '!';
    73	}
    74	
    75	static void inject_vmalloc_slb_multihit(void)
    76	{
    77		char *p;
    78	
    79		p = vmalloc(2048);
    80		if (!p)
    81			return;
    82	
  > 83		insert_slb_entry(p, MMU_SEGSIZE_1T);
    84		vfree(p);
    85	}
    86	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 32054 bytes
Desc: not available
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20200917/57b4a926/attachment-0001.gz>


More information about the Linuxppc-dev mailing list