[Intel-gfx] [PATCH v9 13/13] drm/i915/guc: Print the GuC error capture output register list.
Teres Alexis, Alan Previn
alan.previn.teres.alexis at intel.com
Wed Mar 16 01:04:40 UTC 2022
This is an actual bug I missed - will fix this - would cause a
compilation error when enabling "CONFIG_DRM_I915_DEBUG_GUC"
On 3/14/2022 7:26 PM, kernel test robot wrote:
> Hi Alan,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on drm-tip/drm-tip]
> [cannot apply to drm-intel/for-linux-next drm-exynos/exynos-drm-next drm/drm-next tegra-drm/drm/tegra/for-next v5.17-rc8 next-20220310]
> [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/Alan-Previn/Add-GuC-Error-Capture-Support/20220315-010958
> base: git://anongit.freedesktop.org/drm/drm-tip drm-tip
> config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20220315/202203151007.mYugtWwO-lkp@intel.com/config)
> compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 3e4950d7fa78ac83f33bbf1658e2f49a73719236)
> 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
> # https://github.com/0day-ci/linux/commit/90c08c10562cba1ebf8b31788e7a9550c7637838
> git remote add linux-review https://github.com/0day-ci/linux
> git fetch --no-tags linux-review Alan-Previn/Add-GuC-Error-Capture-Support/20220315-010958
> git checkout 90c08c10562cba1ebf8b31788e7a9550c7637838
> # save the config file to linux build tree
> mkdir build_dir
> COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash
>
> 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 >>):
>
>>> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1497:2: error: no member named 'drm' in 'struct drm_i915_error_state_buf'
> __out(ebuf, "global --- GuC Error Capture on %s command stream:\n",
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1442:19: note: expanded from macro '__out'
> drm_warn((&(a)->drm), __VA_ARGS__); \
> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:435:16: note: expanded from macro 'drm_warn'
> __drm_printk((drm), warn,, fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:425:21: note: expanded from macro '__drm_printk'
> dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:146:49: note: expanded from macro 'dev_warn'
> dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
> _p_func(dev, fmt, ##__VA_ARGS__); \
> ^~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1502:3: error: no member named 'drm' in 'struct drm_i915_error_state_buf'
> __out(ebuf, " No matching ee-node\n");
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1442:19: note: expanded from macro '__out'
> drm_warn((&(a)->drm), __VA_ARGS__); \
> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:435:16: note: expanded from macro 'drm_warn'
> __drm_printk((drm), warn,, fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:425:21: note: expanded from macro '__drm_printk'
> dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:146:49: note: expanded from macro 'dev_warn'
> dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
> _p_func(dev, fmt, ##__VA_ARGS__); \
> ^~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1506:2: error: no member named 'drm' in 'struct drm_i915_error_state_buf'
> __out(ebuf, "Coverage: %s\n", grptype[node->is_partial]);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1442:19: note: expanded from macro '__out'
> drm_warn((&(a)->drm), __VA_ARGS__); \
> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:435:16: note: expanded from macro 'drm_warn'
> __drm_printk((drm), warn,, fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:425:21: note: expanded from macro '__drm_printk'
> dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:146:49: note: expanded from macro 'dev_warn'
> dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
> _p_func(dev, fmt, ##__VA_ARGS__); \
> ^~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1509:3: error: no member named 'drm' in 'struct drm_i915_error_state_buf'
> __out(ebuf, " RegListType: %s\n",
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1442:19: note: expanded from macro '__out'
> drm_warn((&(a)->drm), __VA_ARGS__); \
> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:435:16: note: expanded from macro 'drm_warn'
> __drm_printk((drm), warn,, fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:425:21: note: expanded from macro '__drm_printk'
> dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:146:49: note: expanded from macro 'dev_warn'
> dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
> _p_func(dev, fmt, ##__VA_ARGS__); \
> ^~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1511:3: error: no member named 'drm' in 'struct drm_i915_error_state_buf'
> __out(ebuf, " Owner-Id: %d\n", node->reginfo[i].vfid);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1442:19: note: expanded from macro '__out'
> drm_warn((&(a)->drm), __VA_ARGS__); \
> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:435:16: note: expanded from macro 'drm_warn'
> __drm_printk((drm), warn,, fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:425:21: note: expanded from macro '__drm_printk'
> dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:146:49: note: expanded from macro 'dev_warn'
> dev_printk_index_wrap(_dev_warn, KERN_WARNING, dev, dev_fmt(fmt), ##__VA_ARGS__)
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/linux/dev_printk.h:110:11: note: expanded from macro 'dev_printk_index_wrap'
> _p_func(dev, fmt, ##__VA_ARGS__); \
> ^~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1518:4: error: no member named 'drm' in 'struct drm_i915_error_state_buf'
> __out(ebuf, " GuC-Eng-Class: %d\n", node->eng_class);
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c:1442:19: note: expanded from macro '__out'
> drm_warn((&(a)->drm), __VA_ARGS__); \
> ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:435:16: note: expanded from macro 'drm_warn'
> __drm_printk((drm), warn,, fmt, ##__VA_ARGS__)
> ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> include/drm/drm_print.h:425:21: note: expanded from macro '__drm_printk'
> dev_##level##type((drm)->dev, "[drm] " fmt, ##__VA_ARGS__)
>
>
> vim +1497 drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
>
> 1449
> 1450 #define GCAP_PRINT_INTEL_ENG_INFO(ebuf, eng) \
> 1451 do { \
> 1452 __out(ebuf, " i915-Eng-Name: %s command stream\n", \
> 1453 (eng)->name); \
> 1454 __out(ebuf, " i915-Eng-Inst-Class: 0x%02x\n", (eng)->class); \
> 1455 __out(ebuf, " i915-Eng-Inst-Id: 0x%02x\n", (eng)->instance); \
> 1456 __out(ebuf, " i915-Eng-LogicalMask: 0x%08x\n", \
> 1457 (eng)->logical_mask); \
> 1458 } while (0)
> 1459
> 1460 #define GCAP_PRINT_GUC_INST_INFO(ebuf, node) \
> 1461 do { \
> 1462 __out(ebuf, " GuC-Engine-Inst-Id: 0x%08x\n", \
> 1463 (node)->eng_inst); \
> 1464 __out(ebuf, " GuC-Context-Id: 0x%08x\n", (node)->guc_id); \
> 1465 __out(ebuf, " LRCA: 0x%08x\n", (node)->lrca); \
> 1466 } while (0)
> 1467
> 1468 int intel_guc_capture_print_engine_node(struct drm_i915_error_state_buf *ebuf,
> 1469 const struct intel_engine_coredump *ee)
> 1470 {
> 1471 const char *grptype[GUC_STATE_CAPTURE_GROUP_TYPE_MAX] = {
> 1472 "full-capture",
> 1473 "partial-capture"
> 1474 };
> 1475 const char *datatype[GUC_CAPTURE_LIST_TYPE_MAX] = {
> 1476 "Global",
> 1477 "Engine-Class",
> 1478 "Engine-Instance"
> 1479 };
> 1480 struct intel_guc_state_capture *cap;
> 1481 struct __guc_capture_parsed_output *node;
> 1482 struct intel_engine_cs *eng;
> 1483 struct guc_mmio_reg *regs;
> 1484 struct intel_guc *guc;
> 1485 const char *str;
> 1486 int numregs, i, j;
> 1487 u32 is_ext;
> 1488
> 1489 if (!ebuf || !ee)
> 1490 return -EINVAL;
> 1491 cap = ee->capture;
> 1492 if (!cap || !ee->engine)
> 1493 return -ENODEV;
> 1494
> 1495 guc = &ee->engine->gt->uc.guc;
> 1496
>> 1497 __out(ebuf, "global --- GuC Error Capture on %s command stream:\n",
> 1498 ee->engine->name);
> 1499
> 1500 node = ee->guc_capture_node;
> 1501 if (!node) {
> 1502 __out(ebuf, " No matching ee-node\n");
> 1503 return 0;
> 1504 }
> 1505
> 1506 __out(ebuf, "Coverage: %s\n", grptype[node->is_partial]);
> 1507
> 1508 for (i = GUC_CAPTURE_LIST_TYPE_GLOBAL; i < GUC_CAPTURE_LIST_TYPE_MAX; ++i) {
> 1509 __out(ebuf, " RegListType: %s\n",
> 1510 datatype[i % GUC_CAPTURE_LIST_TYPE_MAX]);
> 1511 __out(ebuf, " Owner-Id: %d\n", node->reginfo[i].vfid);
> 1512
> 1513 switch (i) {
> 1514 case GUC_CAPTURE_LIST_TYPE_GLOBAL:
> 1515 default:
> 1516 break;
> 1517 case GUC_CAPTURE_LIST_TYPE_ENGINE_CLASS:
> 1518 __out(ebuf, " GuC-Eng-Class: %d\n", node->eng_class);
> 1519 __out(ebuf, " i915-Eng-Class: %d\n",
> 1520 guc_class_to_engine_class(node->eng_class));
> 1521 break;
> 1522 case GUC_CAPTURE_LIST_TYPE_ENGINE_INSTANCE:
> 1523 eng = intel_guc_lookup_engine(guc, node->eng_class, node->eng_inst);
> 1524 if (eng)
> 1525 GCAP_PRINT_INTEL_ENG_INFO(ebuf, eng);
> 1526 else
> 1527 __out(ebuf, " i915-Eng-Lookup Fail!\n");
> 1528 GCAP_PRINT_GUC_INST_INFO(ebuf, node);
> 1529 break;
> 1530 }
> 1531
> 1532 numregs = node->reginfo[i].num_regs;
> 1533 __out(ebuf, " NumRegs: %d\n", numregs);
> 1534 j = 0;
> 1535 while (numregs--) {
> 1536 regs = node->reginfo[i].regs;
> 1537 str = guc_capture_reg_to_str(guc, GUC_CAPTURE_LIST_INDEX_PF, i,
> 1538 node->eng_class, 0, regs[j].offset, &is_ext);
> 1539 if (!str)
> 1540 __out(ebuf, " REG-0x%08x", regs[j].offset);
> 1541 else
> 1542 __out(ebuf, " %s", str);
> 1543 if (is_ext)
> 1544 __out(ebuf, "[%ld][%ld]",
> 1545 FIELD_GET(GUC_REGSET_STEERING_GROUP, regs[j].flags),
> 1546 FIELD_GET(GUC_REGSET_STEERING_INSTANCE, regs[j].flags));
> 1547 __out(ebuf, ": 0x%08x\n", regs[j].value);
> 1548 ++j;
> 1549 }
> 1550 }
> 1551 return 0;
> 1552 }
> 1553
>
> ---
> 0-DAY CI Kernel Test Service
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
More information about the Intel-gfx
mailing list