All of lore.kernel.org
 help / color / mirror / Atom feed
* [drm-xe:drm-xe-next 2/2] drivers/gpu/drm/xe/xe_guc.c:630:6: error: variable 'count' is uninitialized when used here
@ 2024-05-24 17:42 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2024-05-24 17:42 UTC (permalink / raw)
  To: John Harrison; +Cc: llvm, oe-kbuild-all, intel-xe, Lucas De Marchi

tree:   https://gitlab.freedesktop.org/drm/xe/kernel.git drm-xe-next
head:   5cef84939723f96352d7087b0ea596a65fb972c6
commit: b0ac1b42dbdcc990ad32d6f8107a1d5214c33e67 [2/2] drm/xe/guc: Port over the slow GuC loading support from i915
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20240525/202405250151.IbH0l8FG-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 7aa382fd7257d9bd4f7fc50bb7078a3c26a1628c)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240525/202405250151.IbH0l8FG-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202405250151.IbH0l8FG-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from include/linux/kgdb.h:19:
   In file included from include/linux/kprobes.h:28:
   In file included from include/linux/ftrace.h:13:
   In file included from include/linux/kallsyms.h:13:
   In file included from include/linux/mm.h:2210:
   include/linux/vmstat.h:508:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     508 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     509 |                            item];
         |                            ~~~~
   include/linux/vmstat.h:515:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     515 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     516 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:522:36: error: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Werror,-Wenum-enum-conversion]
     522 |         return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
         |                               ~~~~~~~~~~~ ^ ~~~
   include/linux/vmstat.h:527:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     527 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     528 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   include/linux/vmstat.h:536:43: error: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Werror,-Wenum-enum-conversion]
     536 |         return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~ ^
     537 |                            NR_VM_NUMA_EVENT_ITEMS +
         |                            ~~~~~~~~~~~~~~~~~~~~~~
   In file included from drivers/gpu/drm/xe/xe_guc.c:6:
   In file included from drivers/gpu/drm/xe/xe_guc.h:9:
   In file included from drivers/gpu/drm/xe/xe_gt.h:11:
   In file included from drivers/gpu/drm/xe/xe_device.h:11:
   In file included from drivers/gpu/drm/xe/xe_device_types.h:9:
   In file included from include/linux/pci.h:39:
   In file included from include/linux/io.h:13:
   In file included from arch/s390/include/asm/io.h:78:
   include/asm-generic/io.h:547:31: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     547 |         val = __raw_readb(PCI_IOBASE + addr);
         |                           ~~~~~~~~~~ ^
   include/asm-generic/io.h:560:61: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     560 |         val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
      37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
         |                                                           ^
   include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
     102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
         |                                                      ^
   In file included from drivers/gpu/drm/xe/xe_guc.c:6:
   In file included from drivers/gpu/drm/xe/xe_guc.h:9:
   In file included from drivers/gpu/drm/xe/xe_gt.h:11:
   In file included from drivers/gpu/drm/xe/xe_device.h:11:
   In file included from drivers/gpu/drm/xe/xe_device_types.h:9:
   In file included from include/linux/pci.h:39:
   In file included from include/linux/io.h:13:
   In file included from arch/s390/include/asm/io.h:78:
   include/asm-generic/io.h:573:61: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     573 |         val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
         |                                                         ~~~~~~~~~~ ^
   include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
      35 | #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
         |                                                           ^
   include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
     115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
         |                                                      ^
   In file included from drivers/gpu/drm/xe/xe_guc.c:6:
   In file included from drivers/gpu/drm/xe/xe_guc.h:9:
   In file included from drivers/gpu/drm/xe/xe_gt.h:11:
   In file included from drivers/gpu/drm/xe/xe_device.h:11:
   In file included from drivers/gpu/drm/xe/xe_device_types.h:9:
   In file included from include/linux/pci.h:39:
   In file included from include/linux/io.h:13:
   In file included from arch/s390/include/asm/io.h:78:
   include/asm-generic/io.h:584:33: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     584 |         __raw_writeb(value, PCI_IOBASE + addr);
         |                             ~~~~~~~~~~ ^
   include/asm-generic/io.h:594:59: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     594 |         __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:604:59: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     604 |         __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
         |                                                       ~~~~~~~~~~ ^
   include/asm-generic/io.h:692:20: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     692 |         readsb(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:700:20: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     700 |         readsw(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:708:20: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     708 |         readsl(PCI_IOBASE + addr, buffer, count);
         |                ~~~~~~~~~~ ^
   include/asm-generic/io.h:717:21: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     717 |         writesb(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:726:21: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     726 |         writesw(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
   include/asm-generic/io.h:735:21: error: performing pointer arithmetic on a null pointer has undefined behavior [-Werror,-Wnull-pointer-arithmetic]
     735 |         writesl(PCI_IOBASE + addr, buffer, count);
         |                 ~~~~~~~~~~ ^
>> drivers/gpu/drm/xe/xe_guc.c:630:6: error: variable 'count' is uninitialized when used here [-Werror,-Wuninitialized]
     630 |                           count, xe_guc_pc_get_act_freq(guc_pc),
         |                           ^~~~~
   drivers/gpu/drm/xe/xe_gt_printk.h:29:35: note: expanded from macro 'xe_gt_dbg'
      29 |         xe_gt_printk((_gt), dbg, _fmt, ##__VA_ARGS__)
         |                                          ^~~~~~~~~~~
   drivers/gpu/drm/xe/xe_gt_printk.h:14:69: note: expanded from macro 'xe_gt_printk'
      14 |         drm_##_level(&gt_to_xe(_gt)->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
         |                                                                            ^~~~~~~~~~~
   include/drm/drm_print.h:522:59: note: expanded from macro 'drm_dbg'
     522 | #define drm_dbg(drm, fmt, ...)  drm_dbg_driver(drm, fmt, ##__VA_ARGS__)
         |                                                            ^~~~~~~~~~~
   include/drm/drm_print.h:504:63: note: expanded from macro 'drm_dbg_driver'
     504 |         drm_dev_dbg((drm) ? (drm)->dev : NULL, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
         |                                                                      ^~~~~~~~~~~
   include/drm/drm_print.h:422:39: note: expanded from macro 'drm_dev_dbg'
     422 |         __drm_dev_dbg(NULL, dev, cat, fmt, ##__VA_ARGS__)
         |                                              ^~~~~~~~~~~
   drivers/gpu/drm/xe/xe_guc.c:594:11: note: initialize the variable 'count' to silence this warning
     594 |         int count;
         |                  ^
         |                   = 0
   18 errors generated.


vim +/count +630 drivers/gpu/drm/xe/xe_guc.c

   586	
   587	static void guc_wait_ucode(struct xe_guc *guc)
   588	{
   589		struct xe_gt *gt = guc_to_gt(guc);
   590		struct xe_guc_pc *guc_pc = &gt->uc.guc.pc;
   591		ktime_t before, after, delta;
   592		int load_done;
   593		u32 status = 0;
   594		int count;
   595		u64 delta_ms;
   596		u32 before_freq;
   597	
   598		before_freq = xe_guc_pc_get_act_freq(guc_pc);
   599		before = ktime_get();
   600		/*
   601		 * Note, can't use any kind of timing information from the call to xe_mmio_wait.
   602		 * It could return a thousand intermediate stages at random times. Instead, must
   603		 * manually track the total time taken and locally implement the timeout.
   604		 */
   605		do {
   606			u32 last_status = status & (GS_UKERNEL_MASK | GS_BOOTROM_MASK);
   607	
   608			/*
   609			 * Wait for any change (intermediate or terminal) in the status register.
   610			 * Note, the return value is a don't care. The only failure code is timeout
   611			 * but the timeouts need to be accumulated over all the intermediate partial
   612			 * timeouts rather than allowing a huge timeout each time. So basically, need
   613			 * to treat a timeout no different to a value change.
   614			 */
   615			xe_mmio_wait32_not(gt, GUC_STATUS, GS_UKERNEL_MASK | GS_BOOTROM_MASK,
   616					   last_status, 1000 * 1000, &status, false);
   617	
   618			after = ktime_get();
   619			delta = ktime_sub(after, before);
   620			delta_ms = ktime_to_ms(delta);
   621	
   622			load_done = guc_load_done(status);
   623			if (load_done != 0)
   624				break;
   625	
   626			if (delta_ms >= (GUC_LOAD_RETRY_LIMIT * 1000))
   627				break;
   628	
   629			xe_gt_dbg(gt, "load still in progress, count = %d, freq = %dMHz (req %dMHz), status = 0x%08X [0x%02X/%02X]\n",
 > 630				  count, xe_guc_pc_get_act_freq(guc_pc),
   631				  guc_pc_get_cur_freq(guc_pc), status,
   632				  REG_FIELD_GET(GS_BOOTROM_MASK, status),
   633				  REG_FIELD_GET(GS_UKERNEL_MASK, status));
   634		} while (1);
   635	
   636		if (load_done != 1) {
   637			u32 ukernel = REG_FIELD_GET(GS_UKERNEL_MASK, status);
   638			u32 bootrom = REG_FIELD_GET(GS_BOOTROM_MASK, status);
   639	
   640			xe_gt_err(gt, "load failed: status = 0x%08X, time = %lldms, freq = %dMHz (req %dMHz), done = %d\n",
   641				  status, delta_ms, xe_guc_pc_get_act_freq(guc_pc),
   642				  guc_pc_get_cur_freq(guc_pc), load_done);
   643			xe_gt_err(gt, "load failed: status: Reset = %d, BootROM = 0x%02X, UKernel = 0x%02X, MIA = 0x%02X, Auth = 0x%02X\n",
   644				  REG_FIELD_GET(GS_MIA_IN_RESET, status),
   645				  bootrom, ukernel,
   646				  REG_FIELD_GET(GS_MIA_MASK, status),
   647				  REG_FIELD_GET(GS_AUTH_STATUS_MASK, status));
   648	
   649			switch (bootrom) {
   650			case XE_BOOTROM_STATUS_NO_KEY_FOUND:
   651				xe_gt_err(gt, "invalid key requested, header = 0x%08X\n",
   652					  xe_mmio_read32(gt, GUC_HEADER_INFO));
   653				break;
   654	
   655			case XE_BOOTROM_STATUS_RSA_FAILED:
   656				xe_gt_err(gt, "firmware signature verification failed\n");
   657				break;
   658	
   659			case XE_BOOTROM_STATUS_PROD_KEY_CHECK_FAILURE:
   660				xe_gt_err(gt, "firmware production part check failure\n");
   661				break;
   662			}
   663	
   664			switch (ukernel) {
   665			case XE_GUC_LOAD_STATUS_EXCEPTION:
   666				xe_gt_err(gt, "firmware exception. EIP: %#x\n",
   667					  xe_mmio_read32(gt, SOFT_SCRATCH(13)));
   668				break;
   669	
   670			case XE_GUC_LOAD_STATUS_INIT_MMIO_SAVE_RESTORE_INVALID:
   671				xe_gt_err(gt, "illegal register in save/restore workaround list\n");
   672				break;
   673	
   674			case XE_GUC_LOAD_STATUS_HWCONFIG_START:
   675				xe_gt_err(gt, "still extracting hwconfig table.\n");
   676				break;
   677			}
   678	
   679			xe_device_declare_wedged(gt_to_xe(gt));
   680		} else if (delta_ms > GUC_LOAD_TIME_WARN_MS) {
   681			xe_gt_warn(gt, "excessive init time: %lldms! [status = 0x%08X, count = %d]\n",
   682				   delta_ms, status, count);
   683			xe_gt_warn(gt, "excessive init time: [freq = %dMHz (req = %dMHz), before = %dMHz, perf_limit_reasons = 0x%08X]\n",
   684				   xe_guc_pc_get_act_freq(guc_pc), guc_pc_get_cur_freq(guc_pc),
   685				   before_freq, xe_gt_throttle_get_limit_reasons(gt));
   686		} else {
   687			xe_gt_dbg(gt, "init took %lldms, freq = %dMHz (req = %dMHz), before = %dMHz, status = 0x%08X, count = %d\n",
   688				  delta_ms, xe_guc_pc_get_act_freq(guc_pc), guc_pc_get_cur_freq(guc_pc),
   689				  before_freq, status, count);
   690		}
   691	}
   692	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-05-24 17:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-05-24 17:42 [drm-xe:drm-xe-next 2/2] drivers/gpu/drm/xe/xe_guc.c:630:6: error: variable 'count' is uninitialized when used here kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.