* [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes
@ 2023-02-03 0:11 John.C.Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware John.C.Harrison
` (7 more replies)
0 siblings, 8 replies; 18+ messages in thread
From: John.C.Harrison @ 2023-02-03 0:11 UTC (permalink / raw)
To: Intel-GFX; +Cc: DRI-Devel
From: John Harrison <John.C.Harrison@Intel.com>
Update more print messages to the new scheme.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
John Harrison (6):
drm/i915/guc: More debug print updates - UC firmware
drm/i915/guc: More debug print updates - GSC firmware
drm/i915/guc: More debug print updates - GuC reg capture
drm/i915/guc: More debug print updates - GuC selftests
drm/i915/guc: More debug print updates - GuC SLPC
drm/i915/guc: More debug print updates - GuC logging
drivers/gpu/drm/i915/gt/intel_gt_print.h | 3 +
drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c | 8 +-
drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c | 7 +-
.../gpu/drm/i915/gt/uc/intel_guc_capture.c | 51 ++++----
drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 3 +-
drivers/gpu/drm/i915/gt/uc/intel_guc_print.h | 3 +
drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c | 8 +-
drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 60 ++++-----
drivers/gpu/drm/i915/gt/uc/intel_uc.c | 42 +++----
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 116 +++++++++---------
drivers/gpu/drm/i915/gt/uc/selftest_guc.c | 35 +++---
.../drm/i915/gt/uc/selftest_guc_hangcheck.c | 23 ++--
.../drm/i915/gt/uc/selftest_guc_multi_lrc.c | 11 +-
13 files changed, 169 insertions(+), 201 deletions(-)
--
2.39.1
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
@ 2023-02-03 0:11 ` John.C.Harrison
2023-02-03 9:39 ` Michal Wajdeczko
2023-02-03 0:11 ` [Intel-gfx] [PATCH 2/6] drm/i915/guc: More debug print updates - GSC firmware John.C.Harrison
` (6 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: John.C.Harrison @ 2023-02-03 0:11 UTC (permalink / raw)
To: Intel-GFX; +Cc: DRI-Devel
From: John Harrison <John.C.Harrison@Intel.com>
Update a bunch more debug prints to use the new GT based scheme.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
---
drivers/gpu/drm/i915/gt/uc/intel_uc.c | 42 ++++----
drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 116 +++++++++++------------
2 files changed, 73 insertions(+), 85 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
index de7f987cf6111..6648691bd6450 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
@@ -83,15 +83,15 @@ static int __intel_uc_reset_hw(struct intel_uc *uc)
static void __confirm_options(struct intel_uc *uc)
{
- struct drm_i915_private *i915 = uc_to_gt(uc)->i915;
+ struct intel_gt *gt = uc_to_gt(uc);
+ struct drm_i915_private *i915 = gt->i915;
- drm_dbg(&i915->drm,
- "enable_guc=%d (guc:%s submission:%s huc:%s slpc:%s)\n",
- i915->params.enable_guc,
- str_yes_no(intel_uc_wants_guc(uc)),
- str_yes_no(intel_uc_wants_guc_submission(uc)),
- str_yes_no(intel_uc_wants_huc(uc)),
- str_yes_no(intel_uc_wants_guc_slpc(uc)));
+ gt_dbg(gt, "enable_guc=%d (guc:%s submission:%s huc:%s slpc:%s)\n",
+ i915->params.enable_guc,
+ str_yes_no(intel_uc_wants_guc(uc)),
+ str_yes_no(intel_uc_wants_guc_submission(uc)),
+ str_yes_no(intel_uc_wants_huc(uc)),
+ str_yes_no(intel_uc_wants_guc_slpc(uc)));
if (i915->params.enable_guc == 0) {
GEM_BUG_ON(intel_uc_wants_guc(uc));
@@ -102,26 +102,22 @@ static void __confirm_options(struct intel_uc *uc)
}
if (!intel_uc_supports_guc(uc))
- drm_info(&i915->drm,
- "Incompatible option enable_guc=%d - %s\n",
- i915->params.enable_guc, "GuC is not supported!");
+ gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
+ i915->params.enable_guc, "GuC is not supported!");
if (i915->params.enable_guc & ENABLE_GUC_LOAD_HUC &&
!intel_uc_supports_huc(uc))
- drm_info(&i915->drm,
- "Incompatible option enable_guc=%d - %s\n",
- i915->params.enable_guc, "HuC is not supported!");
+ gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
+ i915->params.enable_guc, "HuC is not supported!");
if (i915->params.enable_guc & ENABLE_GUC_SUBMISSION &&
!intel_uc_supports_guc_submission(uc))
- drm_info(&i915->drm,
- "Incompatible option enable_guc=%d - %s\n",
- i915->params.enable_guc, "GuC submission is N/A");
+ gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
+ i915->params.enable_guc, "GuC submission is N/A");
if (i915->params.enable_guc & ~ENABLE_GUC_MASK)
- drm_info(&i915->drm,
- "Incompatible option enable_guc=%d - %s\n",
- i915->params.enable_guc, "undocumented flag");
+ gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
+ i915->params.enable_guc, "undocumented flag");
}
void intel_uc_init_early(struct intel_uc *uc)
@@ -549,10 +545,8 @@ static int __uc_init_hw(struct intel_uc *uc)
intel_gsc_uc_load_start(&uc->gsc);
- gt_info(gt, "GuC submission %s\n",
- str_enabled_disabled(intel_uc_uses_guc_submission(uc)));
- gt_info(gt, "GuC SLPC %s\n",
- str_enabled_disabled(intel_uc_uses_guc_slpc(uc)));
+ guc_info(guc, "submission %s\n", str_enabled_disabled(intel_uc_uses_guc_submission(uc)));
+ guc_info(guc, "SLPC %s\n", str_enabled_disabled(intel_uc_uses_guc_slpc(uc)));
return 0;
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
index 65672ff826054..7d2558d53e972 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
@@ -11,6 +11,7 @@
#include <drm/drm_print.h>
#include "gem/i915_gem_lmem.h"
+#include "gt/intel_gt_print.h"
#include "intel_uc_fw.h"
#include "intel_uc_fw_abi.h"
#include "i915_drv.h"
@@ -44,11 +45,10 @@ void intel_uc_fw_change_status(struct intel_uc_fw *uc_fw,
enum intel_uc_fw_status status)
{
uc_fw->__status = status;
- drm_dbg(&__uc_fw_to_gt(uc_fw)->i915->drm,
- "%s firmware -> %s\n",
- intel_uc_fw_type_repr(uc_fw->type),
- status == INTEL_UC_FIRMWARE_SELECTED ?
- uc_fw->file_selected.path : intel_uc_fw_status_repr(status));
+ gt_dbg(__uc_fw_to_gt(uc_fw), "%s firmware -> %s\n",
+ intel_uc_fw_type_repr(uc_fw->type),
+ status == INTEL_UC_FIRMWARE_SELECTED ?
+ uc_fw->file_selected.path : intel_uc_fw_status_repr(status));
}
#endif
@@ -562,15 +562,14 @@ static int check_ccs_header(struct intel_gt *gt,
const struct firmware *fw,
struct intel_uc_fw *uc_fw)
{
- struct drm_i915_private *i915 = gt->i915;
struct uc_css_header *css;
size_t size;
/* Check the size of the blob before examining buffer contents */
if (unlikely(fw->size < sizeof(struct uc_css_header))) {
- drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu < %zu\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
- fw->size, sizeof(struct uc_css_header));
+ gt_warn(gt, "%s firmware %s: invalid size: %zu < %zu\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
+ fw->size, sizeof(struct uc_css_header));
return -ENODATA;
}
@@ -580,10 +579,9 @@ static int check_ccs_header(struct intel_gt *gt,
size = (css->header_size_dw - css->key_size_dw - css->modulus_size_dw -
css->exponent_size_dw) * sizeof(u32);
if (unlikely(size != sizeof(struct uc_css_header))) {
- drm_warn(&i915->drm,
- "%s firmware %s: unexpected header size: %zu != %zu\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
- fw->size, sizeof(struct uc_css_header));
+ gt_warn(gt, "%s firmware %s: unexpected header size: %zu != %zu\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
+ fw->size, sizeof(struct uc_css_header));
return -EPROTO;
}
@@ -596,18 +594,18 @@ static int check_ccs_header(struct intel_gt *gt,
/* At least, it should have header, uCode and RSA. Size of all three. */
size = sizeof(struct uc_css_header) + uc_fw->ucode_size + uc_fw->rsa_size;
if (unlikely(fw->size < size)) {
- drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu < %zu\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
- fw->size, size);
+ gt_warn(gt, "%s firmware %s: invalid size: %zu < %zu\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
+ fw->size, size);
return -ENOEXEC;
}
/* Sanity check whether this fw is not larger than whole WOPCM memory */
size = __intel_uc_fw_get_upload_size(uc_fw);
if (unlikely(size >= gt->wopcm.size)) {
- drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu > %zu\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
- size, (size_t)gt->wopcm.size);
+ gt_warn(gt, "%s firmware %s: invalid size: %zu > %zu\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
+ size, (size_t)gt->wopcm.size);
return -E2BIG;
}
@@ -635,20 +633,20 @@ static bool guc_check_version_range(struct intel_uc_fw *uc_fw)
*/
if (!is_ver_8bit(&uc_fw->file_selected.ver)) {
- drm_warn(&__uc_fw_to_gt(uc_fw)->i915->drm, "%s firmware: invalid file version: 0x%02X:%02X:%02X\n",
- intel_uc_fw_type_repr(uc_fw->type),
- uc_fw->file_selected.ver.major,
- uc_fw->file_selected.ver.minor,
- uc_fw->file_selected.ver.patch);
+ gt_warn(__uc_fw_to_gt(uc_fw), "%s firmware: invalid file version: 0x%02X:%02X:%02X\n",
+ intel_uc_fw_type_repr(uc_fw->type),
+ uc_fw->file_selected.ver.major,
+ uc_fw->file_selected.ver.minor,
+ uc_fw->file_selected.ver.patch);
return false;
}
if (!is_ver_8bit(&guc->submission_version)) {
- drm_warn(&__uc_fw_to_gt(uc_fw)->i915->drm, "%s firmware: invalid submit version: 0x%02X:%02X:%02X\n",
- intel_uc_fw_type_repr(uc_fw->type),
- guc->submission_version.major,
- guc->submission_version.minor,
- guc->submission_version.patch);
+ gt_warn(__uc_fw_to_gt(uc_fw), "%s firmware: invalid submit version: 0x%02X:%02X:%02X\n",
+ intel_uc_fw_type_repr(uc_fw->type),
+ guc->submission_version.major,
+ guc->submission_version.minor,
+ guc->submission_version.patch);
return false;
}
@@ -687,10 +685,9 @@ static int try_firmware_load(struct intel_uc_fw *uc_fw, const struct firmware **
return err;
if ((*fw)->size > INTEL_UC_RSVD_GGTT_PER_FW) {
- drm_err(>->i915->drm,
- "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
- (*fw)->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
+ gt_err(gt, "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
+ (*fw)->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
/* try to find another blob to load */
release_firmware(*fw);
@@ -768,10 +765,10 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
if (uc_fw->file_wanted.ver.major && uc_fw->file_selected.ver.major) {
/* Check the file's major version was as it claimed */
if (uc_fw->file_selected.ver.major != uc_fw->file_wanted.ver.major) {
- drm_notice(&i915->drm, "%s firmware %s: unexpected version: %u.%u != %u.%u\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
- uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor,
- uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor);
+ gt_notice(gt, "%s firmware %s: unexpected version: %u.%u != %u.%u\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
+ uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor,
+ uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor);
if (!intel_uc_fw_is_overridden(uc_fw)) {
err = -ENOEXEC;
goto fail;
@@ -786,16 +783,14 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
/* Preserve the version that was really wanted */
memcpy(&uc_fw->file_wanted, &file_ideal, sizeof(uc_fw->file_wanted));
- drm_notice(&i915->drm,
- "%s firmware %s (%d.%d) is recommended, but only %s (%d.%d) was found\n",
- intel_uc_fw_type_repr(uc_fw->type),
- uc_fw->file_wanted.path,
- uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor,
- uc_fw->file_selected.path,
- uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor);
- drm_info(&i915->drm,
- "Consider updating your linux-firmware pkg or downloading from %s\n",
- INTEL_UC_FIRMWARE_URL);
+ gt_notice(gt, "%s firmware %s (%d.%d) is recommended, but only %s (%d.%d) was found\n",
+ intel_uc_fw_type_repr(uc_fw->type),
+ uc_fw->file_wanted.path,
+ uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor,
+ uc_fw->file_selected.path,
+ uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor);
+ gt_info(gt, "Consider updating your linux-firmware pkg or downloading from %s\n",
+ INTEL_UC_FIRMWARE_URL);
}
if (HAS_LMEM(i915)) {
@@ -823,10 +818,10 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
INTEL_UC_FIRMWARE_MISSING :
INTEL_UC_FIRMWARE_ERROR);
- i915_probe_error(i915, "%s firmware %s: fetch failed with error %d\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
- drm_info(&i915->drm, "%s firmware(s) can be downloaded from %s\n",
- intel_uc_fw_type_repr(uc_fw->type), INTEL_UC_FIRMWARE_URL);
+ gt_probe_error(gt, "%s firmware %s: fetch failed with error %d\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
+ gt_info(gt, "%s firmware(s) can be downloaded from %s\n",
+ intel_uc_fw_type_repr(uc_fw->type), INTEL_UC_FIRMWARE_URL);
release_firmware(fw); /* OK even if fw is NULL */
return err;
@@ -932,9 +927,9 @@ static int uc_fw_xfer(struct intel_uc_fw *uc_fw, u32 dst_offset, u32 dma_flags)
/* Wait for DMA to finish */
ret = intel_wait_for_register_fw(uncore, DMA_CTRL, START_DMA, 0, 100);
if (ret)
- drm_err(>->i915->drm, "DMA for %s fw failed, DMA_CTRL=%u\n",
- intel_uc_fw_type_repr(uc_fw->type),
- intel_uncore_read_fw(uncore, DMA_CTRL));
+ gt_err(gt, "DMA for %s fw failed, DMA_CTRL=%u\n",
+ intel_uc_fw_type_repr(uc_fw->type),
+ intel_uncore_read_fw(uncore, DMA_CTRL));
/* Disable the bits once DMA is over */
intel_uncore_write_fw(uncore, DMA_CTRL, _MASKED_BIT_DISABLE(dma_flags));
@@ -950,9 +945,8 @@ int intel_uc_fw_mark_load_failed(struct intel_uc_fw *uc_fw, int err)
GEM_BUG_ON(!intel_uc_fw_is_loadable(uc_fw));
- i915_probe_error(gt->i915, "Failed to load %s firmware %s (%d)\n",
- intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
- err);
+ gt_probe_error(gt, "Failed to load %s firmware %s (%d)\n",
+ intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
intel_uc_fw_change_status(uc_fw, INTEL_UC_FIRMWARE_LOAD_FAIL);
return err;
@@ -1078,15 +1072,15 @@ int intel_uc_fw_init(struct intel_uc_fw *uc_fw)
err = i915_gem_object_pin_pages_unlocked(uc_fw->obj);
if (err) {
- DRM_DEBUG_DRIVER("%s fw pin-pages err=%d\n",
- intel_uc_fw_type_repr(uc_fw->type), err);
+ gt_dbg(__uc_fw_to_gt(uc_fw), "%s fw pin-pages err=%d\n",
+ intel_uc_fw_type_repr(uc_fw->type), err);
goto out;
}
err = uc_fw_rsa_data_create(uc_fw);
if (err) {
- DRM_DEBUG_DRIVER("%s fw rsa data creation failed, err=%d\n",
- intel_uc_fw_type_repr(uc_fw->type), err);
+ gt_dbg(__uc_fw_to_gt(uc_fw), "%s fw rsa data creation failed, err=%d\n",
+ intel_uc_fw_type_repr(uc_fw->type), err);
goto out_unpin;
}
--
2.39.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 2/6] drm/i915/guc: More debug print updates - GSC firmware
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware John.C.Harrison
@ 2023-02-03 0:11 ` John.C.Harrison
2023-02-03 9:43 ` Michal Wajdeczko
2023-02-03 0:11 ` [Intel-gfx] [PATCH 3/6] drm/i915/guc: More debug print updates - GuC reg capture John.C.Harrison
` (5 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: John.C.Harrison @ 2023-02-03 0:11 UTC (permalink / raw)
To: Intel-GFX; +Cc: DRI-Devel
From: John Harrison <John.C.Harrison@Intel.com>
Update a bunch more debug prints to use the new GT based scheme.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
---
drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c | 8 +++-----
drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c | 7 +++----
2 files changed, 6 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c
index e73d4440c5e82..8e0c736fa4e94 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c
@@ -6,6 +6,7 @@
#include "gt/intel_engine_pm.h"
#include "gt/intel_gpu_commands.h"
#include "gt/intel_gt.h"
+#include "gt/intel_gt_print.h"
#include "gt/intel_ring.h"
#include "intel_gsc_fw.h"
@@ -88,9 +89,7 @@ static int gsc_fw_load(struct intel_gsc_uc *gsc)
i915_request_put(rq);
if (err)
- drm_err(&gsc_uc_to_gt(gsc)->i915->drm,
- "Request submission for GSC load failed (%d)\n",
- err);
+ gt_err(gsc_uc_to_gt(gsc), "Request submission for GSC load failed (%d)\n", err);
return err;
}
@@ -200,8 +199,7 @@ int intel_gsc_uc_fw_upload(struct intel_gsc_uc *gsc)
/* FW is not fully operational until we enable SW proxy */
intel_uc_fw_change_status(gsc_fw, INTEL_UC_FIRMWARE_TRANSFERRED);
- drm_info(>->i915->drm, "Loaded GSC firmware %s\n",
- gsc_fw->file_selected.path);
+ gt_info(gt, "Loaded GSC firmware %s\n", gsc_fw->file_selected.path);
return 0;
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
index fd21dbd2663be..6e7d5aa4dcf5e 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
@@ -6,6 +6,7 @@
#include <linux/types.h>
#include "gt/intel_gt.h"
+#include "gt/intel_gt_print.h"
#include "intel_gsc_uc.h"
#include "intel_gsc_fw.h"
#include "i915_drv.h"
@@ -59,7 +60,6 @@ int intel_gsc_uc_init(struct intel_gsc_uc *gsc)
{
static struct lock_class_key gsc_lock;
struct intel_gt *gt = gsc_uc_to_gt(gsc);
- struct drm_i915_private *i915 = gt->i915;
struct intel_engine_cs *engine = gt->engine[GSC0];
struct intel_context *ce;
struct i915_vma *vma;
@@ -81,8 +81,7 @@ int intel_gsc_uc_init(struct intel_gsc_uc *gsc)
I915_GEM_HWS_GSC_ADDR,
&gsc_lock, "gsc_context");
if (IS_ERR(ce)) {
- drm_err(>->i915->drm,
- "failed to create GSC CS ctx for FW communication\n");
+ gt_err(gt, "failed to create GSC CS ctx for FW communication\n");
err = PTR_ERR(ce);
goto out_vma;
}
@@ -98,7 +97,7 @@ int intel_gsc_uc_init(struct intel_gsc_uc *gsc)
out_fw:
intel_uc_fw_fini(&gsc->fw);
out:
- i915_probe_error(i915, "failed with %d\n", err);
+ gt_probe_error(gt, "GSC init failed with %d\n", err);
return err;
}
--
2.39.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 3/6] drm/i915/guc: More debug print updates - GuC reg capture
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware John.C.Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 2/6] drm/i915/guc: More debug print updates - GSC firmware John.C.Harrison
@ 2023-02-03 0:11 ` John.C.Harrison
2023-02-04 8:19 ` Teres Alexis, Alan Previn
2023-02-03 0:11 ` [Intel-gfx] [PATCH 4/6] drm/i915/guc: More debug print updates - GuC selftests John.C.Harrison
` (4 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: John.C.Harrison @ 2023-02-03 0:11 UTC (permalink / raw)
To: Intel-GFX; +Cc: DRI-Devel
From: John Harrison <John.C.Harrison@Intel.com>
Update a bunch more debug prints to use the new GT based scheme.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
---
.../gpu/drm/i915/gt/uc/intel_guc_capture.c | 51 ++++++++-----------
1 file changed, 21 insertions(+), 30 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
index fc3b994626a4f..5f6e3594dda62 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
@@ -15,6 +15,7 @@
#include "guc_capture_fwif.h"
#include "intel_guc_capture.h"
#include "intel_guc_fwif.h"
+#include "intel_guc_print.h"
#include "i915_drv.h"
#include "i915_gpu_error.h"
#include "i915_irq.h"
@@ -353,7 +354,6 @@ guc_capture_alloc_steered_lists_xe_hpg(struct intel_guc *guc,
u32 ipver)
{
struct intel_gt *gt = guc_to_gt(guc);
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
struct sseu_dev_info *sseu;
int slice, subslice, i, iter, num_steer_regs, num_tot_regs = 0;
const struct __guc_mmio_reg_descr_group *list;
@@ -402,7 +402,7 @@ guc_capture_alloc_steered_lists_xe_hpg(struct intel_guc *guc,
}
}
- drm_dbg(&i915->drm, "GuC-capture found %d-ext-regs.\n", num_tot_regs);
+ guc_dbg(guc, "capture found %d ext-regs.\n", num_tot_regs);
guc->capture->extlists = extlists;
}
@@ -477,7 +477,6 @@ guc_capture_list_init(struct intel_guc *guc, u32 owner, u32 type, u32 classid,
struct guc_mmio_reg *ptr, u16 num_entries)
{
u32 i = 0, j = 0;
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
const struct __guc_mmio_reg_descr_group *reglists = guc->capture->reglists;
struct __guc_mmio_reg_descr_group *extlists = guc->capture->extlists;
const struct __guc_mmio_reg_descr_group *match;
@@ -509,8 +508,7 @@ guc_capture_list_init(struct intel_guc *guc, u32 owner, u32 type, u32 classid,
}
}
if (i < num_entries)
- drm_dbg(&i915->drm, "GuC-capture: Init reglist short %d out %d.\n",
- (int)i, (int)num_entries);
+ guc_dbg(guc, "Got short capture reglist init: %d out %d.\n", i, num_entries);
return 0;
}
@@ -540,12 +538,11 @@ guc_capture_getlistsize(struct intel_guc *guc, u32 owner, u32 type, u32 classid,
size_t *size, bool is_purpose_est)
{
struct intel_guc_state_capture *gc = guc->capture;
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
struct __guc_capture_ads_cache *cache = &gc->ads_cache[owner][type][classid];
int num_regs;
if (!gc->reglists) {
- drm_warn(&i915->drm, "GuC-capture: No reglist on this device\n");
+ guc_warn(guc, "No capture reglist for this device\n");
return -ENODEV;
}
@@ -557,9 +554,9 @@ guc_capture_getlistsize(struct intel_guc *guc, u32 owner, u32 type, u32 classid,
if (!is_purpose_est && owner == GUC_CAPTURE_LIST_INDEX_PF &&
!guc_capture_get_one_list(gc->reglists, owner, type, classid)) {
if (type == GUC_CAPTURE_LIST_TYPE_GLOBAL)
- drm_warn(&i915->drm, "Missing GuC-Err-Cap reglist Global!\n");
+ guc_warn(guc, "Missing capture reglist: global!\n");
else
- drm_warn(&i915->drm, "Missing GuC-Err-Cap reglist %s(%u):%s(%u)!\n",
+ guc_warn(guc, "Missing capture reglist: %s(%u):%s(%u)!\n",
__stringify_type(type), type,
__stringify_engclass(classid), classid);
return -ENODATA;
@@ -592,7 +589,6 @@ intel_guc_capture_getlist(struct intel_guc *guc, u32 owner, u32 type, u32 classi
{
struct intel_guc_state_capture *gc = guc->capture;
struct __guc_capture_ads_cache *cache = &gc->ads_cache[owner][type][classid];
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
struct guc_debug_capture_list *listnode;
int ret, num_regs;
u8 *caplist, *tmp;
@@ -623,7 +619,7 @@ intel_guc_capture_getlist(struct intel_guc *guc, u32 owner, u32 type, u32 classi
caplist = kzalloc(size, GFP_KERNEL);
if (!caplist) {
- drm_dbg(&i915->drm, "GuC-capture: failed to alloc cached caplist");
+ guc_dbg(guc, "Failed to alloc cached register capture list");
return -ENOMEM;
}
@@ -653,7 +649,6 @@ intel_guc_capture_getnullheader(struct intel_guc *guc,
void **outptr, size_t *size)
{
struct intel_guc_state_capture *gc = guc->capture;
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
int tmp = sizeof(u32) * 4;
void *null_header;
@@ -665,7 +660,7 @@ intel_guc_capture_getnullheader(struct intel_guc *guc,
null_header = kzalloc(tmp, GFP_KERNEL);
if (!null_header) {
- drm_dbg(&i915->drm, "GuC-capture: failed to alloc cached nulllist");
+ guc_dbg(guc, "Failed to alloc cached register capture null list");
return -ENOMEM;
}
@@ -727,7 +722,6 @@ guc_capture_output_min_size_est(struct intel_guc *guc)
static void check_guc_capture_size(struct intel_guc *guc)
{
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
int min_size = guc_capture_output_min_size_est(guc);
int spare_size = min_size * GUC_CAPTURE_OVERBUFFER_MULTIPLIER;
u32 buffer_size = intel_guc_log_section_size_capture(&guc->log);
@@ -741,13 +735,13 @@ static void check_guc_capture_size(struct intel_guc *guc)
* INTEL_GUC_STATE_CAPTURE_EVENT_STATUS_NOSPACE.
*/
if (min_size < 0)
- drm_warn(&i915->drm, "Failed to calculate GuC error state capture buffer minimum size: %d!\n",
+ guc_warn(guc, "Failed to calculate error state capture buffer minimum size: %d!\n",
min_size);
else if (min_size > buffer_size)
- drm_warn(&i915->drm, "GuC error state capture buffer maybe small: %d < %d\n",
+ guc_warn(guc, "Error state capture buffer maybe small: %d < %d\n",
buffer_size, min_size);
else if (spare_size > buffer_size)
- drm_dbg(&i915->drm, "GuC error state capture buffer lacks spare size: %d < %d (min = %d)\n",
+ guc_dbg(guc, "Error state capture buffer lacks spare size: %d < %d (min = %d)\n",
buffer_size, spare_size, min_size);
}
@@ -848,7 +842,6 @@ static int
guc_capture_log_remove_dw(struct intel_guc *guc, struct __guc_capture_bufstate *buf,
u32 *dw)
{
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
int tries = 2;
int avail = 0;
u32 *src_data;
@@ -865,7 +858,7 @@ guc_capture_log_remove_dw(struct intel_guc *guc, struct __guc_capture_bufstate *
return 4;
}
if (avail)
- drm_dbg(&i915->drm, "GuC-Cap-Logs not dword aligned, skipping.\n");
+ guc_dbg(guc, "Register capture log not dword aligned, skipping.\n");
buf->rd = 0;
}
@@ -1118,13 +1111,12 @@ static void
__guc_capture_create_prealloc_nodes(struct intel_guc *guc)
{
struct __guc_capture_parsed_output *node = NULL;
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
int i;
for (i = 0; i < PREALLOC_NODES_MAX_COUNT; ++i) {
node = guc_capture_alloc_one_node(guc);
if (!node) {
- drm_warn(&i915->drm, "GuC Capture pre-alloc-cache failure\n");
+ guc_warn(guc, "Register capture pre-alloc-cache failure\n");
/* dont free the priors, use what we got and cleanup at shutdown */
return;
}
@@ -1169,7 +1161,6 @@ guc_capture_create_prealloc_nodes(struct intel_guc *guc)
static int
guc_capture_extract_reglists(struct intel_guc *guc, struct __guc_capture_bufstate *buf)
{
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
struct guc_state_capture_group_header_t ghdr = {0};
struct guc_state_capture_header_t hdr = {0};
struct __guc_capture_parsed_output *node = NULL;
@@ -1183,7 +1174,7 @@ guc_capture_extract_reglists(struct intel_guc *guc, struct __guc_capture_bufstat
if (!i)
return -ENODATA;
if (i % sizeof(u32)) {
- drm_warn(&i915->drm, "GuC Capture new entries unaligned\n");
+ guc_warn(guc, "Got mis-aligned register capture entries\n");
ret = -EIO;
goto bailout;
}
@@ -1301,7 +1292,7 @@ guc_capture_extract_reglists(struct intel_guc *guc, struct __guc_capture_bufstat
break;
}
if (datatype != GUC_CAPTURE_LIST_TYPE_GLOBAL)
- drm_dbg(&i915->drm, "GuC Capture missing global dump: %08x!\n",
+ guc_dbg(guc, "Register capture missing global dump: %08x!\n",
datatype);
}
node->is_partial = is_partial;
@@ -1322,7 +1313,7 @@ guc_capture_extract_reglists(struct intel_guc *guc, struct __guc_capture_bufstat
numregs = FIELD_GET(CAP_HDR_NUM_MMIOS, hdr.num_mmios);
if (numregs > guc->capture->max_mmio_per_node) {
- drm_dbg(&i915->drm, "GuC Capture list extraction clipped by prealloc!\n");
+ guc_dbg(guc, "Register capture list extraction clipped by prealloc!\n");
numregs = guc->capture->max_mmio_per_node;
}
node->reginfo[datatype].num_regs = numregs;
@@ -1367,7 +1358,6 @@ static void __guc_capture_process_output(struct intel_guc *guc)
{
unsigned int buffer_size, read_offset, write_offset, full_count;
struct intel_uc *uc = container_of(guc, typeof(*uc), guc);
- struct drm_i915_private *i915 = guc_to_gt(guc)->i915;
struct guc_log_buffer_state log_buf_state_local;
struct guc_log_buffer_state *log_buf_state;
struct __guc_capture_bufstate buf;
@@ -1403,7 +1393,8 @@ static void __guc_capture_process_output(struct intel_guc *guc)
write_offset = buffer_size;
} else if (unlikely((read_offset > buffer_size) ||
(write_offset > buffer_size))) {
- drm_err(&i915->drm, "invalid GuC log capture buffer state!\n");
+ guc_err(guc, "Register capture buffer in invalid state: read = 0x%X, size = 0x%X!\n",
+ read_offset, buffer_size);
/* copy whole buffer as offsets are unreliable */
read_offset = 0;
write_offset = buffer_size;
@@ -1586,13 +1577,11 @@ void intel_guc_capture_get_matching_node(struct intel_gt *gt,
struct intel_context *ce)
{
struct __guc_capture_parsed_output *n, *ntmp;
- struct drm_i915_private *i915;
struct intel_guc *guc;
if (!gt || !ee || !ce)
return;
- i915 = gt->i915;
guc = >->uc.guc;
if (!guc->capture)
return;
@@ -1615,7 +1604,9 @@ void intel_guc_capture_get_matching_node(struct intel_gt *gt,
return;
}
}
- drm_dbg(&i915->drm, "GuC capture can't match ee to node\n");
+
+ guc_dbg(guc, "No register capture node found for 0x%04X / 0x%08X\n",
+ ce->guc_id.id, ce->lrc.lrca);
}
void intel_guc_capture_process(struct intel_guc *guc)
--
2.39.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 4/6] drm/i915/guc: More debug print updates - GuC selftests
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
` (2 preceding siblings ...)
2023-02-03 0:11 ` [Intel-gfx] [PATCH 3/6] drm/i915/guc: More debug print updates - GuC reg capture John.C.Harrison
@ 2023-02-03 0:11 ` John.C.Harrison
2023-02-03 9:54 ` Michal Wajdeczko
2023-02-03 0:11 ` [Intel-gfx] [PATCH 5/6] drm/i915/guc: More debug print updates - GuC SLPC John.C.Harrison
` (3 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: John.C.Harrison @ 2023-02-03 0:11 UTC (permalink / raw)
To: Intel-GFX; +Cc: DRI-Devel
From: John Harrison <John.C.Harrison@Intel.com>
Update a bunch more debug prints to use the new GT based scheme.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
---
drivers/gpu/drm/i915/gt/uc/selftest_guc.c | 35 ++++++++++---------
.../drm/i915/gt/uc/selftest_guc_hangcheck.c | 23 ++++++------
.../drm/i915/gt/uc/selftest_guc_multi_lrc.c | 11 +++---
3 files changed, 36 insertions(+), 33 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
index e28518fe8b908..6cc1e9c7a47d6 100644
--- a/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
+++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
@@ -3,6 +3,7 @@
* Copyright �� 2021 Intel Corporation
*/
+#include "intel_guc_print.h"
#include "selftests/igt_spinner.h"
#include "selftests/intel_scheduler_helpers.h"
@@ -65,7 +66,7 @@ static int intel_guc_scrub_ctbs(void *arg)
ce = intel_context_create(engine);
if (IS_ERR(ce)) {
ret = PTR_ERR(ce);
- drm_err(>->i915->drm, "Failed to create context, %d: %d\n", i, ret);
+ gt_err(gt, "Failed to create context, %d: %d\n", i, ret);
goto err;
}
@@ -86,7 +87,7 @@ static int intel_guc_scrub_ctbs(void *arg)
if (IS_ERR(rq)) {
ret = PTR_ERR(rq);
- drm_err(>->i915->drm, "Failed to create request, %d: %d\n", i, ret);
+ gt_err(gt, "Failed to create request, %d: %d\n", i, ret);
goto err;
}
@@ -96,7 +97,7 @@ static int intel_guc_scrub_ctbs(void *arg)
for (i = 0; i < 3; ++i) {
ret = i915_request_wait(last[i], 0, HZ);
if (ret < 0) {
- drm_err(>->i915->drm, "Last request failed to complete: %d\n", ret);
+ gt_err(gt, "Last request failed to complete: %d\n", ret);
goto err;
}
i915_request_put(last[i]);
@@ -113,7 +114,7 @@ static int intel_guc_scrub_ctbs(void *arg)
/* GT will not idle if G2H are lost */
ret = intel_gt_wait_for_idle(gt, HZ);
if (ret < 0) {
- drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
+ gt_err(gt, "GT failed to idle: %d\n", ret);
goto err;
}
@@ -153,7 +154,7 @@ static int intel_guc_steal_guc_ids(void *arg)
ce = kcalloc(GUC_MAX_CONTEXT_ID, sizeof(*ce), GFP_KERNEL);
if (!ce) {
- drm_err(>->i915->drm, "Context array allocation failed\n");
+ guc_err(guc, "Context array allocation failed\n");
return -ENOMEM;
}
@@ -167,24 +168,24 @@ static int intel_guc_steal_guc_ids(void *arg)
if (IS_ERR(ce[context_index])) {
ret = PTR_ERR(ce[context_index]);
ce[context_index] = NULL;
- drm_err(>->i915->drm, "Failed to create context: %d\n", ret);
+ guc_err(guc, "Failed to create context: %d\n", ret);
goto err_wakeref;
}
ret = igt_spinner_init(&spin, engine->gt);
if (ret) {
- drm_err(>->i915->drm, "Failed to create spinner: %d\n", ret);
+ guc_err(guc, "Failed to create spinner: %d\n", ret);
goto err_contexts;
}
spin_rq = igt_spinner_create_request(&spin, ce[context_index],
MI_ARB_CHECK);
if (IS_ERR(spin_rq)) {
ret = PTR_ERR(spin_rq);
- drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
+ guc_err(guc, "Failed to create spinner request: %d\n", ret);
goto err_contexts;
}
ret = request_add_spin(spin_rq, &spin);
if (ret) {
- drm_err(>->i915->drm, "Failed to add Spinner request: %d\n", ret);
+ guc_err(guc, "Failed to add Spinner request: %d\n", ret);
goto err_spin_rq;
}
@@ -194,7 +195,7 @@ static int intel_guc_steal_guc_ids(void *arg)
if (IS_ERR(ce[context_index])) {
ret = PTR_ERR(ce[context_index--]);
ce[context_index] = NULL;
- drm_err(>->i915->drm, "Failed to create context: %d\n", ret);
+ guc_err(guc, "Failed to create context: %d\n", ret);
goto err_spin_rq;
}
@@ -203,7 +204,7 @@ static int intel_guc_steal_guc_ids(void *arg)
ret = PTR_ERR(rq);
rq = NULL;
if (ret != -EAGAIN) {
- drm_err(>->i915->drm, "Failed to create request, %d: %d\n",
+ guc_err(guc, "Failed to create request, %d: %d\n",
context_index, ret);
goto err_spin_rq;
}
@@ -218,7 +219,7 @@ static int intel_guc_steal_guc_ids(void *arg)
igt_spinner_end(&spin);
ret = intel_selftest_wait_for_rq(spin_rq);
if (ret) {
- drm_err(>->i915->drm, "Spin request failed to complete: %d\n", ret);
+ guc_err(guc, "Spin request failed to complete: %d\n", ret);
i915_request_put(last);
goto err_spin_rq;
}
@@ -230,7 +231,7 @@ static int intel_guc_steal_guc_ids(void *arg)
ret = i915_request_wait(last, 0, HZ * 30);
i915_request_put(last);
if (ret < 0) {
- drm_err(>->i915->drm, "Last request failed to complete: %d\n", ret);
+ guc_err(guc, "Last request failed to complete: %d\n", ret);
goto err_spin_rq;
}
@@ -238,7 +239,7 @@ static int intel_guc_steal_guc_ids(void *arg)
rq = nop_user_request(ce[context_index], NULL);
if (IS_ERR(rq)) {
ret = PTR_ERR(rq);
- drm_err(>->i915->drm, "Failed to steal guc_id, %d: %d\n", context_index, ret);
+ guc_err(guc, "Failed to steal guc_id, %d: %d\n", context_index, ret);
goto err_spin_rq;
}
@@ -246,20 +247,20 @@ static int intel_guc_steal_guc_ids(void *arg)
ret = i915_request_wait(rq, 0, HZ);
i915_request_put(rq);
if (ret < 0) {
- drm_err(>->i915->drm, "Request with stolen guc_id failed to complete: %d\n", ret);
+ guc_err(guc, "Request with stolen guc_id failed to complete: %d\n", ret);
goto err_spin_rq;
}
/* Wait for idle */
ret = intel_gt_wait_for_idle(gt, HZ * 30);
if (ret < 0) {
- drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
+ guc_err(guc, "GT failed to idle: %d\n", ret);
goto err_spin_rq;
}
/* Verify a guc_id was stolen */
if (guc->number_guc_id_stolen == number_guc_id_stolen) {
- drm_err(>->i915->drm, "No guc_id was stolen");
+ guc_err(guc, "No guc_id was stolen");
ret = -EINVAL;
} else {
ret = 0;
diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
index d91b58f704039..fffe95ac15c4e 100644
--- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
+++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
@@ -3,6 +3,7 @@
* Copyright © 2022 Intel Corporation
*/
+#include "intel_guc_print.h"
#include "selftests/igt_spinner.h"
#include "selftests/igt_reset.h"
#include "selftests/intel_scheduler_helpers.h"
@@ -45,7 +46,7 @@ static int intel_hang_guc(void *arg)
ctx = kernel_context(gt->i915, NULL);
if (IS_ERR(ctx)) {
- drm_err(>->i915->drm, "Failed get kernel context: %ld\n", PTR_ERR(ctx));
+ gt_err(gt, "Failed get kernel context: %ld\n", PTR_ERR(ctx));
return PTR_ERR(ctx);
}
@@ -54,7 +55,7 @@ static int intel_hang_guc(void *arg)
ce = intel_context_create(engine);
if (IS_ERR(ce)) {
ret = PTR_ERR(ce);
- drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
+ gt_err(gt, "Failed to create spinner request: %d\n", ret);
goto err;
}
@@ -63,13 +64,13 @@ static int intel_hang_guc(void *arg)
old_beat = engine->props.heartbeat_interval_ms;
ret = intel_engine_set_heartbeat(engine, BEAT_INTERVAL);
if (ret) {
- drm_err(>->i915->drm, "Failed to boost heatbeat interval: %d\n", ret);
+ gt_err(gt, "Failed to boost heatbeat interval: %d\n", ret);
goto err;
}
ret = igt_spinner_init(&spin, engine->gt);
if (ret) {
- drm_err(>->i915->drm, "Failed to create spinner: %d\n", ret);
+ gt_err(gt, "Failed to create spinner: %d\n", ret);
goto err;
}
@@ -77,28 +78,28 @@ static int intel_hang_guc(void *arg)
intel_context_put(ce);
if (IS_ERR(rq)) {
ret = PTR_ERR(rq);
- drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
+ gt_err(gt, "Failed to create spinner request: %d\n", ret);
goto err_spin;
}
ret = request_add_spin(rq, &spin);
if (ret) {
i915_request_put(rq);
- drm_err(>->i915->drm, "Failed to add Spinner request: %d\n", ret);
+ gt_err(gt, "Failed to add Spinner request: %d\n", ret);
goto err_spin;
}
ret = intel_reset_guc(gt);
if (ret) {
i915_request_put(rq);
- drm_err(>->i915->drm, "Failed to reset GuC, ret = %d\n", ret);
+ gt_err(gt, "Failed to reset GuC, ret = %d\n", ret);
goto err_spin;
}
guc_status = intel_uncore_read(gt->uncore, GUC_STATUS);
if (!(guc_status & GS_MIA_IN_RESET)) {
i915_request_put(rq);
- drm_err(>->i915->drm, "GuC failed to reset: status = 0x%08X\n", guc_status);
+ gt_err(gt, "Failed to reset GuC: status = 0x%08X\n", guc_status);
ret = -EIO;
goto err_spin;
}
@@ -107,12 +108,12 @@ static int intel_hang_guc(void *arg)
ret = intel_selftest_wait_for_rq(rq);
i915_request_put(rq);
if (ret) {
- drm_err(>->i915->drm, "Request failed to complete: %d\n", ret);
+ gt_err(gt, "Request failed to complete: %d\n", ret);
goto err_spin;
}
if (i915_reset_count(global) == reset_count) {
- drm_err(>->i915->drm, "Failed to record a GPU reset\n");
+ gt_err(gt, "Failed to record a GPU reset\n");
ret = -EINVAL;
goto err_spin;
}
@@ -132,7 +133,7 @@ static int intel_hang_guc(void *arg)
ret = intel_selftest_wait_for_rq(rq);
i915_request_put(rq);
if (ret) {
- drm_err(>->i915->drm, "No-op failed to complete: %d\n", ret);
+ gt_err(gt, "No-op failed to complete: %d\n", ret);
goto err;
}
}
diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
index d17982c36d256..0e64be0918ae5 100644
--- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
+++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
@@ -3,6 +3,7 @@
* Copyright �� 2019 Intel Corporation
*/
+#include "intel_guc_print.h"
#include "selftests/igt_spinner.h"
#include "selftests/igt_reset.h"
#include "selftests/intel_scheduler_helpers.h"
@@ -115,30 +116,30 @@ static int __intel_guc_multi_lrc_basic(struct intel_gt *gt, unsigned int class)
parent = multi_lrc_create_parent(gt, class, 0);
if (IS_ERR(parent)) {
- drm_err(>->i915->drm, "Failed creating contexts: %ld", PTR_ERR(parent));
+ gt_err(gt, "Failed creating contexts: %ld\n", PTR_ERR(parent));
return PTR_ERR(parent);
} else if (!parent) {
- drm_dbg(>->i915->drm, "Not enough engines in class: %d", class);
+ gt_dbg(gt, "Not enough engines in class: %d\n", class);
return 0;
}
rq = multi_lrc_nop_request(parent);
if (IS_ERR(rq)) {
ret = PTR_ERR(rq);
- drm_err(>->i915->drm, "Failed creating requests: %d", ret);
+ gt_err(gt, "Failed creating requests: %d\n", ret);
goto out;
}
ret = intel_selftest_wait_for_rq(rq);
if (ret)
- drm_err(>->i915->drm, "Failed waiting on request: %d", ret);
+ gt_err(gt, "Failed waiting on request: %d\n", ret);
i915_request_put(rq);
if (ret >= 0) {
ret = intel_gt_wait_for_idle(gt, HZ * 5);
if (ret < 0)
- drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
+ gt_err(gt, "GT failed to idle: %d\n", ret);
}
out:
--
2.39.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 5/6] drm/i915/guc: More debug print updates - GuC SLPC
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
` (3 preceding siblings ...)
2023-02-03 0:11 ` [Intel-gfx] [PATCH 4/6] drm/i915/guc: More debug print updates - GuC selftests John.C.Harrison
@ 2023-02-03 0:11 ` John.C.Harrison
2023-02-03 10:00 ` Michal Wajdeczko
2023-02-03 0:11 ` [Intel-gfx] [PATCH 6/6] drm/i915/guc: More debug print updates - GuC logging John.C.Harrison
` (2 subsequent siblings)
7 siblings, 1 reply; 18+ messages in thread
From: John.C.Harrison @ 2023-02-03 0:11 UTC (permalink / raw)
To: Intel-GFX; +Cc: DRI-Devel
From: John Harrison <John.C.Harrison@Intel.com>
Update a bunch more debug prints to use the new GT based scheme.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
---
drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c | 8 +--
drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 60 ++++++++-------------
2 files changed, 26 insertions(+), 42 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
index b5855091cf6a9..23b287cefb943 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
@@ -6,6 +6,7 @@
#include <linux/string_helpers.h>
#include "intel_guc_rc.h"
+#include "intel_guc_print.h"
#include "gt/intel_gt.h"
#include "i915_drv.h"
@@ -70,13 +71,12 @@ static int __guc_rc_control(struct intel_guc *guc, bool enable)
ret = guc_action_control_gucrc(guc, enable);
if (ret) {
- i915_probe_error(guc_to_gt(guc)->i915, "Failed to %s GuC RC (%pe)\n",
- str_enable_disable(enable), ERR_PTR(ret));
+ guc_probe_error(guc, "Failed to %s RC (%pe)\n",
+ str_enable_disable(enable), ERR_PTR(ret));
return ret;
}
- drm_info(>->i915->drm, "GuC RC: %s\n",
- str_enabled_disabled(enable));
+ guc_info(guc, "RC: %s\n", str_enabled_disabled(enable));
return 0;
}
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c
index 63464933cbceb..91f4fa499cec4 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c
@@ -9,6 +9,7 @@
#include "i915_drv.h"
#include "i915_reg.h"
#include "intel_guc_slpc.h"
+#include "intel_guc_print.h"
#include "intel_mchbar_regs.h"
#include "gt/intel_gt.h"
#include "gt/intel_gt_regs.h"
@@ -171,14 +172,13 @@ static int guc_action_slpc_query(struct intel_guc *guc, u32 offset)
static int slpc_query_task_state(struct intel_guc_slpc *slpc)
{
struct intel_guc *guc = slpc_to_guc(slpc);
- struct drm_i915_private *i915 = slpc_to_i915(slpc);
u32 offset = intel_guc_ggtt_offset(guc, slpc->vma);
int ret;
ret = guc_action_slpc_query(guc, offset);
if (unlikely(ret))
- i915_probe_error(i915, "Failed to query task state (%pe)\n",
- ERR_PTR(ret));
+ guc_probe_error(guc, "Failed to query task state (%pe)\n",
+ ERR_PTR(ret));
drm_clflush_virt_range(slpc->vaddr, SLPC_PAGE_SIZE_BYTES);
@@ -188,15 +188,14 @@ static int slpc_query_task_state(struct intel_guc_slpc *slpc)
static int slpc_set_param(struct intel_guc_slpc *slpc, u8 id, u32 value)
{
struct intel_guc *guc = slpc_to_guc(slpc);
- struct drm_i915_private *i915 = slpc_to_i915(slpc);
int ret;
GEM_BUG_ON(id >= SLPC_MAX_PARAM);
ret = guc_action_slpc_set_param(guc, id, value);
if (ret)
- i915_probe_error(i915, "Failed to set param %d to %u (%pe)\n",
- id, value, ERR_PTR(ret));
+ guc_probe_error(guc, "Failed to set param %d to %u (%pe)\n",
+ id, value, ERR_PTR(ret));
return ret;
}
@@ -212,8 +211,8 @@ static int slpc_unset_param(struct intel_guc_slpc *slpc, u8 id)
static int slpc_force_min_freq(struct intel_guc_slpc *slpc, u32 freq)
{
- struct drm_i915_private *i915 = slpc_to_i915(slpc);
struct intel_guc *guc = slpc_to_guc(slpc);
+ struct drm_i915_private *i915 = slpc_to_i915(slpc);
intel_wakeref_t wakeref;
int ret = 0;
@@ -236,8 +235,7 @@ static int slpc_force_min_freq(struct intel_guc_slpc *slpc, u32 freq)
SLPC_PARAM_GLOBAL_MIN_GT_UNSLICE_FREQ_MHZ,
freq);
if (ret)
- drm_notice(&i915->drm,
- "Failed to send set_param for min freq(%d): (%d)\n",
+ guc_notice(guc, "Failed to send set_param for min freq(%d): (%d)\n",
freq, ret);
}
@@ -267,7 +265,6 @@ static void slpc_boost_work(struct work_struct *work)
int intel_guc_slpc_init(struct intel_guc_slpc *slpc)
{
struct intel_guc *guc = slpc_to_guc(slpc);
- struct drm_i915_private *i915 = slpc_to_i915(slpc);
u32 size = PAGE_ALIGN(sizeof(struct slpc_shared_data));
int err;
@@ -275,9 +272,7 @@ int intel_guc_slpc_init(struct intel_guc_slpc *slpc)
err = intel_guc_allocate_and_map_vma(guc, size, &slpc->vma, (void **)&slpc->vaddr);
if (unlikely(err)) {
- i915_probe_error(i915,
- "Failed to allocate SLPC struct (err=%pe)\n",
- ERR_PTR(err));
+ guc_probe_error(guc, "Failed to allocate SLPC struct (err=%pe)\n", ERR_PTR(err));
return err;
}
@@ -338,7 +333,6 @@ static int guc_action_slpc_reset(struct intel_guc *guc, u32 offset)
static int slpc_reset(struct intel_guc_slpc *slpc)
{
- struct drm_i915_private *i915 = slpc_to_i915(slpc);
struct intel_guc *guc = slpc_to_guc(slpc);
u32 offset = intel_guc_ggtt_offset(guc, slpc->vma);
int ret;
@@ -346,15 +340,15 @@ static int slpc_reset(struct intel_guc_slpc *slpc)
ret = guc_action_slpc_reset(guc, offset);
if (unlikely(ret < 0)) {
- i915_probe_error(i915, "SLPC reset action failed (%pe)\n",
- ERR_PTR(ret));
+ guc_probe_error(guc, "SLPC reset action failed (%pe)\n",
+ ERR_PTR(ret));
return ret;
}
if (!ret) {
if (wait_for(slpc_is_running(slpc), SLPC_RESET_TIMEOUT_MS)) {
- i915_probe_error(i915, "SLPC not enabled! State = %s\n",
- slpc_get_state_string(slpc));
+ guc_probe_error(guc, "SLPC not enabled! State = %s\n",
+ slpc_get_state_string(slpc));
return -EIO;
}
}
@@ -495,8 +489,8 @@ int intel_guc_slpc_set_min_freq(struct intel_guc_slpc *slpc, u32 val)
SLPC_PARAM_IGNORE_EFFICIENT_FREQUENCY,
val < slpc->rp1_freq);
if (ret) {
- i915_probe_error(i915, "Failed to toggle efficient freq (%pe)\n",
- ERR_PTR(ret));
+ guc_probe_error(slpc_to_guc(slpc), "Failed to toggle efficient freq (%pe)\n",
+ ERR_PTR(ret));
goto out;
}
@@ -611,15 +605,12 @@ static int slpc_set_softlimits(struct intel_guc_slpc *slpc)
static bool is_slpc_min_freq_rpmax(struct intel_guc_slpc *slpc)
{
- struct drm_i915_private *i915 = slpc_to_i915(slpc);
int slpc_min_freq;
int ret;
ret = intel_guc_slpc_get_min_freq(slpc, &slpc_min_freq);
if (ret) {
- drm_err(&i915->drm,
- "Failed to get min freq: (%d)\n",
- ret);
+ guc_err(slpc_to_guc(slpc), "Failed to get min freq: (%d)\n", ret);
return false;
}
@@ -685,9 +676,7 @@ int intel_guc_slpc_override_gucrc_mode(struct intel_guc_slpc *slpc, u32 mode)
with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
ret = slpc_set_param(slpc, SLPC_PARAM_PWRGATE_RC_MODE, mode);
if (ret)
- drm_err(&i915->drm,
- "Override gucrc mode %d failed %d\n",
- mode, ret);
+ guc_err(slpc_to_guc(slpc), "Override gucrc mode %d failed %d\n", mode, ret);
}
return ret;
@@ -702,9 +691,7 @@ int intel_guc_slpc_unset_gucrc_mode(struct intel_guc_slpc *slpc)
with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
ret = slpc_unset_param(slpc, SLPC_PARAM_PWRGATE_RC_MODE);
if (ret)
- drm_err(&i915->drm,
- "Unsetting gucrc mode failed %d\n",
- ret);
+ guc_err(slpc_to_guc(slpc), "Unsetting gucrc mode failed %d\n", ret);
}
return ret;
@@ -725,7 +712,7 @@ int intel_guc_slpc_unset_gucrc_mode(struct intel_guc_slpc *slpc)
*/
int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
{
- struct drm_i915_private *i915 = slpc_to_i915(slpc);
+ struct intel_guc *guc = slpc_to_guc(slpc);
int ret;
GEM_BUG_ON(!slpc->vma);
@@ -734,8 +721,7 @@ int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
ret = slpc_reset(slpc);
if (unlikely(ret < 0)) {
- i915_probe_error(i915, "SLPC Reset event returned (%pe)\n",
- ERR_PTR(ret));
+ guc_probe_error(guc, "SLPC Reset event returned (%pe)\n", ERR_PTR(ret));
return ret;
}
@@ -743,7 +729,7 @@ int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
if (unlikely(ret < 0))
return ret;
- intel_guc_pm_intrmsk_enable(to_gt(i915));
+ intel_guc_pm_intrmsk_enable(slpc_to_gt(slpc));
slpc_get_rp_values(slpc);
@@ -753,16 +739,14 @@ int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
/* Set SLPC max limit to RP0 */
ret = slpc_use_fused_rp0(slpc);
if (unlikely(ret)) {
- i915_probe_error(i915, "Failed to set SLPC max to RP0 (%pe)\n",
- ERR_PTR(ret));
+ guc_probe_error(guc, "Failed to set SLPC max to RP0 (%pe)\n", ERR_PTR(ret));
return ret;
}
/* Revert SLPC min/max to softlimits if necessary */
ret = slpc_set_softlimits(slpc);
if (unlikely(ret)) {
- i915_probe_error(i915, "Failed to set SLPC softlimits (%pe)\n",
- ERR_PTR(ret));
+ guc_probe_error(guc, "Failed to set SLPC softlimits (%pe)\n", ERR_PTR(ret));
return ret;
}
--
2.39.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] [PATCH 6/6] drm/i915/guc: More debug print updates - GuC logging
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
` (4 preceding siblings ...)
2023-02-03 0:11 ` [Intel-gfx] [PATCH 5/6] drm/i915/guc: More debug print updates - GuC SLPC John.C.Harrison
@ 2023-02-03 0:11 ` John.C.Harrison
2023-02-03 10:02 ` Michal Wajdeczko
2023-02-03 1:18 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for More drm_dbg to guc_dbg changes Patchwork
2023-02-03 12:24 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
7 siblings, 1 reply; 18+ messages in thread
From: John.C.Harrison @ 2023-02-03 0:11 UTC (permalink / raw)
To: Intel-GFX; +Cc: DRI-Devel
From: John Harrison <John.C.Harrison@Intel.com>
Update a bunch more debug prints to use the new GT based scheme.
Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
---
drivers/gpu/drm/i915/gt/intel_gt_print.h | 3 +++
drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 3 +--
drivers/gpu/drm/i915/gt/uc/intel_guc_print.h | 3 +++
3 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/gt/intel_gt_print.h b/drivers/gpu/drm/i915/gt/intel_gt_print.h
index 5d9da355ce242..55a336a9ff061 100644
--- a/drivers/gpu/drm/i915/gt/intel_gt_print.h
+++ b/drivers/gpu/drm/i915/gt/intel_gt_print.h
@@ -28,6 +28,9 @@
#define gt_err_ratelimited(_gt, _fmt, ...) \
drm_err_ratelimited(&(_gt)->i915->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
+#define gt_notice_ratelimited(_gt, _fmt, ...) \
+ dev_notice_ratelimited((_gt)->i915->drm.dev, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
+
#define gt_probe_error(_gt, _fmt, ...) \
do { \
if (i915_error_injected()) \
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
index c3792ddeec802..818e9e0e66a83 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
@@ -333,8 +333,7 @@ bool intel_guc_check_log_buf_overflow(struct intel_guc_log *log,
log->stats[type].sampled_overflow += 16;
}
- dev_notice_ratelimited(guc_to_gt(log_to_guc(log))->i915->drm.dev,
- "GuC log buffer overflow\n");
+ guc_notice_ratelimited(log_to_guc(log), "log buffer overflow\n");
}
return overflow;
diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h
index e75989d4ba067..2465d05638b40 100644
--- a/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h
+++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h
@@ -30,6 +30,9 @@
#define guc_err_ratelimited(_guc, _fmt, ...) \
guc_printk((_guc), err_ratelimited, _fmt, ##__VA_ARGS__)
+#define guc_notice_ratelimited(_guc, _fmt, ...) \
+ guc_printk((_guc), notice_ratelimited, _fmt, ##__VA_ARGS__)
+
#define guc_probe_error(_guc, _fmt, ...) \
guc_printk((_guc), probe_error, _fmt, ##__VA_ARGS__)
--
2.39.1
^ permalink raw reply related [flat|nested] 18+ messages in thread
* [Intel-gfx] ✗ Fi.CI.SPARSE: warning for More drm_dbg to guc_dbg changes
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
` (5 preceding siblings ...)
2023-02-03 0:11 ` [Intel-gfx] [PATCH 6/6] drm/i915/guc: More debug print updates - GuC logging John.C.Harrison
@ 2023-02-03 1:18 ` Patchwork
2023-02-03 12:24 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
7 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2023-02-03 1:18 UTC (permalink / raw)
To: john.c.harrison; +Cc: intel-gfx
== Series Details ==
Series: More drm_dbg to guc_dbg changes
URL : https://patchwork.freedesktop.org/series/113624/
State : warning
== Summary ==
Error: dim sparse failed
Sparse version: v0.6.2
Fast mode used, each commit won't be checked separately.
+./arch/x86/include/asm/bitops.h:117:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:117:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:117:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:117:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:117:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:117:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:148:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:148:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:148:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:148:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:148:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:148:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:150:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:150:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:150:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:150:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:150:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:150:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:154:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:154:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:154:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:154:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:154:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:154:26: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:156:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:156:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:156:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:156:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:156:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:156:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:174:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:174:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:174:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:174:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:174:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:174:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:176:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:176:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:176:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:176:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:176:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:176:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:180:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:180:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:180:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:180:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:180:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:180:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:182:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:182:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:182:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:182:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:182:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:182:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:186:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:186:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:186:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:186:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:186:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:186:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:188:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:188:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:188:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:188:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:188:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:188:9: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:192:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:192:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:192:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:192:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:192:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:192:35: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:16: warning: unreplaced symbol 'oldbit'
+./arch/x86/include/asm/bitops.h:195:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:195:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:195:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:195:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:195:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:195:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:237:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:237:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:237:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:237:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:237:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:237:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:239:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:239:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:239:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:239:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:239:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:239:9: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:66:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./arch/x86/include/asm/bitops.h:92:1: warning: unreplaced symbol 'return'
+./drivers/gpu/drm/i915/intel_uncore.h:346:1: warning: trying to copy expression type 31
+./drivers/gpu/drm/i915/intel_uncore.h:351:1: warning: trying to copy expression type 31
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:105:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:107:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:108:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:109:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:111:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:112:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:121:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:128:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:166:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:168:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:169:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:170:9: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:19: warning: unreplaced symbol 'val'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:25: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:172:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:28:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:30:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:31:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:33:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:37:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:39:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:40:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:42:16: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:55:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:57:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:58:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:60:15: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:73:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:75:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:76:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:77:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:79:20: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:17: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:23: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:80:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:93:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:95:9: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:96:9: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:97:9: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:10: warning: unreplaced symbol 'p'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:14: warning: unreplaced symbol 'old'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/generic-non-atomic.h:99:21: warning: unreplaced symbol 'mask'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:100:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:112:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:115:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:127:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:130:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:139:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:142:9: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:26:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:42:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:58:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
+./include/asm-generic/bitops/instrumented-non-atomic.h:97:1: warning: unreplaced symbol 'return'
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware
2023-02-03 0:11 ` [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware John.C.Harrison
@ 2023-02-03 9:39 ` Michal Wajdeczko
2023-02-03 17:35 ` John Harrison
0 siblings, 1 reply; 18+ messages in thread
From: Michal Wajdeczko @ 2023-02-03 9:39 UTC (permalink / raw)
To: intel-gfx
On 03.02.2023 01:11, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
>
> Update a bunch more debug prints to use the new GT based scheme.
>
> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> drivers/gpu/drm/i915/gt/uc/intel_uc.c | 42 ++++----
> drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 116 +++++++++++------------
> 2 files changed, 73 insertions(+), 85 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
> index de7f987cf6111..6648691bd6450 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
> @@ -83,15 +83,15 @@ static int __intel_uc_reset_hw(struct intel_uc *uc)
>
> static void __confirm_options(struct intel_uc *uc)
> {
> - struct drm_i915_private *i915 = uc_to_gt(uc)->i915;
> + struct intel_gt *gt = uc_to_gt(uc);
> + struct drm_i915_private *i915 = gt->i915;
>
> - drm_dbg(&i915->drm,
> - "enable_guc=%d (guc:%s submission:%s huc:%s slpc:%s)\n",
> - i915->params.enable_guc,
> - str_yes_no(intel_uc_wants_guc(uc)),
> - str_yes_no(intel_uc_wants_guc_submission(uc)),
> - str_yes_no(intel_uc_wants_huc(uc)),
> - str_yes_no(intel_uc_wants_guc_slpc(uc)));
> + gt_dbg(gt, "enable_guc=%d (guc:%s submission:%s huc:%s slpc:%s)\n",
> + i915->params.enable_guc,
> + str_yes_no(intel_uc_wants_guc(uc)),
> + str_yes_no(intel_uc_wants_guc_submission(uc)),
> + str_yes_no(intel_uc_wants_huc(uc)),
> + str_yes_no(intel_uc_wants_guc_slpc(uc)));
>
> if (i915->params.enable_guc == 0) {
> GEM_BUG_ON(intel_uc_wants_guc(uc));
> @@ -102,26 +102,22 @@ static void __confirm_options(struct intel_uc *uc)
> }
>
> if (!intel_uc_supports_guc(uc))
> - drm_info(&i915->drm,
> - "Incompatible option enable_guc=%d - %s\n",
> - i915->params.enable_guc, "GuC is not supported!");
> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
> + i915->params.enable_guc, "GuC is not supported!");
>
> if (i915->params.enable_guc & ENABLE_GUC_LOAD_HUC &&
> !intel_uc_supports_huc(uc))
> - drm_info(&i915->drm,
> - "Incompatible option enable_guc=%d - %s\n",
> - i915->params.enable_guc, "HuC is not supported!");
> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
> + i915->params.enable_guc, "HuC is not supported!");
>
> if (i915->params.enable_guc & ENABLE_GUC_SUBMISSION &&
> !intel_uc_supports_guc_submission(uc))
> - drm_info(&i915->drm,
> - "Incompatible option enable_guc=%d - %s\n",
> - i915->params.enable_guc, "GuC submission is N/A");
> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
> + i915->params.enable_guc, "GuC submission is N/A");
>
> if (i915->params.enable_guc & ~ENABLE_GUC_MASK)
> - drm_info(&i915->drm,
> - "Incompatible option enable_guc=%d - %s\n",
> - i915->params.enable_guc, "undocumented flag");
> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
> + i915->params.enable_guc, "undocumented flag");
all these above messages are about i915->params so IMHO using drm_info()
is still more applicable than gt_info() ...
> }
>
> void intel_uc_init_early(struct intel_uc *uc)
> @@ -549,10 +545,8 @@ static int __uc_init_hw(struct intel_uc *uc)
>
> intel_gsc_uc_load_start(&uc->gsc);
>
> - gt_info(gt, "GuC submission %s\n",
> - str_enabled_disabled(intel_uc_uses_guc_submission(uc)));
> - gt_info(gt, "GuC SLPC %s\n",
> - str_enabled_disabled(intel_uc_uses_guc_slpc(uc)));
> + guc_info(guc, "submission %s\n", str_enabled_disabled(intel_uc_uses_guc_submission(uc)));
> + guc_info(guc, "SLPC %s\n", str_enabled_disabled(intel_uc_uses_guc_slpc(uc)));
>
> return 0;
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> index 65672ff826054..7d2558d53e972 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
> @@ -11,6 +11,7 @@
> #include <drm/drm_print.h>
>
> #include "gem/i915_gem_lmem.h"
> +#include "gt/intel_gt_print.h"
> #include "intel_uc_fw.h"
> #include "intel_uc_fw_abi.h"
> #include "i915_drv.h"
> @@ -44,11 +45,10 @@ void intel_uc_fw_change_status(struct intel_uc_fw *uc_fw,
> enum intel_uc_fw_status status)
> {
> uc_fw->__status = status;
> - drm_dbg(&__uc_fw_to_gt(uc_fw)->i915->drm,
> - "%s firmware -> %s\n",
> - intel_uc_fw_type_repr(uc_fw->type),
> - status == INTEL_UC_FIRMWARE_SELECTED ?
> - uc_fw->file_selected.path : intel_uc_fw_status_repr(status));
> + gt_dbg(__uc_fw_to_gt(uc_fw), "%s firmware -> %s\n",
> + intel_uc_fw_type_repr(uc_fw->type),
> + status == INTEL_UC_FIRMWARE_SELECTED ?
> + uc_fw->file_selected.path : intel_uc_fw_status_repr(status));
> }
> #endif
>
> @@ -562,15 +562,14 @@ static int check_ccs_header(struct intel_gt *gt,
> const struct firmware *fw,
> struct intel_uc_fw *uc_fw)
> {
> - struct drm_i915_private *i915 = gt->i915;
> struct uc_css_header *css;
> size_t size;
>
> /* Check the size of the blob before examining buffer contents */
> if (unlikely(fw->size < sizeof(struct uc_css_header))) {
> - drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu < %zu\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> - fw->size, sizeof(struct uc_css_header));
> + gt_warn(gt, "%s firmware %s: invalid size: %zu < %zu\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> + fw->size, sizeof(struct uc_css_header));
> return -ENODATA;
> }
>
> @@ -580,10 +579,9 @@ static int check_ccs_header(struct intel_gt *gt,
> size = (css->header_size_dw - css->key_size_dw - css->modulus_size_dw -
> css->exponent_size_dw) * sizeof(u32);
> if (unlikely(size != sizeof(struct uc_css_header))) {
> - drm_warn(&i915->drm,
> - "%s firmware %s: unexpected header size: %zu != %zu\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> - fw->size, sizeof(struct uc_css_header));
> + gt_warn(gt, "%s firmware %s: unexpected header size: %zu != %zu\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> + fw->size, sizeof(struct uc_css_header));
> return -EPROTO;
> }
>
> @@ -596,18 +594,18 @@ static int check_ccs_header(struct intel_gt *gt,
> /* At least, it should have header, uCode and RSA. Size of all three. */
> size = sizeof(struct uc_css_header) + uc_fw->ucode_size + uc_fw->rsa_size;
> if (unlikely(fw->size < size)) {
> - drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu < %zu\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> - fw->size, size);
> + gt_warn(gt, "%s firmware %s: invalid size: %zu < %zu\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> + fw->size, size);
> return -ENOEXEC;
> }
>
> /* Sanity check whether this fw is not larger than whole WOPCM memory */
> size = __intel_uc_fw_get_upload_size(uc_fw);
> if (unlikely(size >= gt->wopcm.size)) {
> - drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu > %zu\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> - size, (size_t)gt->wopcm.size);
> + gt_warn(gt, "%s firmware %s: invalid size: %zu > %zu\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> + size, (size_t)gt->wopcm.size);
> return -E2BIG;
> }
>
> @@ -635,20 +633,20 @@ static bool guc_check_version_range(struct intel_uc_fw *uc_fw)
> */
>
this is GuC specific function, shouldn't we use guc_warn() instead ?
> if (!is_ver_8bit(&uc_fw->file_selected.ver)) {
> - drm_warn(&__uc_fw_to_gt(uc_fw)->i915->drm, "%s firmware: invalid file version: 0x%02X:%02X:%02X\n",
> - intel_uc_fw_type_repr(uc_fw->type),
> - uc_fw->file_selected.ver.major,
> - uc_fw->file_selected.ver.minor,
> - uc_fw->file_selected.ver.patch);
> + gt_warn(__uc_fw_to_gt(uc_fw), "%s firmware: invalid file version: 0x%02X:%02X:%02X\n",
> + intel_uc_fw_type_repr(uc_fw->type),
> + uc_fw->file_selected.ver.major,
> + uc_fw->file_selected.ver.minor,
> + uc_fw->file_selected.ver.patch);
> return false;
> }
>
> if (!is_ver_8bit(&guc->submission_version)) {
> - drm_warn(&__uc_fw_to_gt(uc_fw)->i915->drm, "%s firmware: invalid submit version: 0x%02X:%02X:%02X\n",
> - intel_uc_fw_type_repr(uc_fw->type),
> - guc->submission_version.major,
> - guc->submission_version.minor,
> - guc->submission_version.patch);
> + gt_warn(__uc_fw_to_gt(uc_fw), "%s firmware: invalid submit version: 0x%02X:%02X:%02X\n",
> + intel_uc_fw_type_repr(uc_fw->type),
> + guc->submission_version.major,
> + guc->submission_version.minor,
> + guc->submission_version.patch);
> return false;
> }
>
> @@ -687,10 +685,9 @@ static int try_firmware_load(struct intel_uc_fw *uc_fw, const struct firmware **
> return err;
>
> if ((*fw)->size > INTEL_UC_RSVD_GGTT_PER_FW) {
> - drm_err(>->i915->drm,
> - "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> - (*fw)->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
> + gt_err(gt, "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> + (*fw)->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
>
> /* try to find another blob to load */
> release_firmware(*fw);
> @@ -768,10 +765,10 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
> if (uc_fw->file_wanted.ver.major && uc_fw->file_selected.ver.major) {
> /* Check the file's major version was as it claimed */
> if (uc_fw->file_selected.ver.major != uc_fw->file_wanted.ver.major) {
> - drm_notice(&i915->drm, "%s firmware %s: unexpected version: %u.%u != %u.%u\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> - uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor,
> - uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor);
> + gt_notice(gt, "%s firmware %s: unexpected version: %u.%u != %u.%u\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> + uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor,
> + uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor);
> if (!intel_uc_fw_is_overridden(uc_fw)) {
> err = -ENOEXEC;
> goto fail;
> @@ -786,16 +783,14 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
> /* Preserve the version that was really wanted */
> memcpy(&uc_fw->file_wanted, &file_ideal, sizeof(uc_fw->file_wanted));
>
> - drm_notice(&i915->drm,
> - "%s firmware %s (%d.%d) is recommended, but only %s (%d.%d) was found\n",
> - intel_uc_fw_type_repr(uc_fw->type),
> - uc_fw->file_wanted.path,
> - uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor,
> - uc_fw->file_selected.path,
> - uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor);
> - drm_info(&i915->drm,
> - "Consider updating your linux-firmware pkg or downloading from %s\n",
> - INTEL_UC_FIRMWARE_URL);
> + gt_notice(gt, "%s firmware %s (%d.%d) is recommended, but only %s (%d.%d) was found\n",
> + intel_uc_fw_type_repr(uc_fw->type),
> + uc_fw->file_wanted.path,
> + uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor,
> + uc_fw->file_selected.path,
> + uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor);
> + gt_info(gt, "Consider updating your linux-firmware pkg or downloading from %s\n",
> + INTEL_UC_FIRMWARE_URL);
> }
>
> if (HAS_LMEM(i915)) {
> @@ -823,10 +818,10 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
> INTEL_UC_FIRMWARE_MISSING :
> INTEL_UC_FIRMWARE_ERROR);
>
> - i915_probe_error(i915, "%s firmware %s: fetch failed with error %d\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
> - drm_info(&i915->drm, "%s firmware(s) can be downloaded from %s\n",
> - intel_uc_fw_type_repr(uc_fw->type), INTEL_UC_FIRMWARE_URL);
> + gt_probe_error(gt, "%s firmware %s: fetch failed with error %d\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
> + gt_info(gt, "%s firmware(s) can be downloaded from %s\n",
> + intel_uc_fw_type_repr(uc_fw->type), INTEL_UC_FIRMWARE_URL);
>
> release_firmware(fw); /* OK even if fw is NULL */
> return err;
> @@ -932,9 +927,9 @@ static int uc_fw_xfer(struct intel_uc_fw *uc_fw, u32 dst_offset, u32 dma_flags)
> /* Wait for DMA to finish */
> ret = intel_wait_for_register_fw(uncore, DMA_CTRL, START_DMA, 0, 100);
> if (ret)
> - drm_err(>->i915->drm, "DMA for %s fw failed, DMA_CTRL=%u\n",
> - intel_uc_fw_type_repr(uc_fw->type),
> - intel_uncore_read_fw(uncore, DMA_CTRL));
> + gt_err(gt, "DMA for %s fw failed, DMA_CTRL=%u\n",
> + intel_uc_fw_type_repr(uc_fw->type),
> + intel_uncore_read_fw(uncore, DMA_CTRL));
>
> /* Disable the bits once DMA is over */
> intel_uncore_write_fw(uncore, DMA_CTRL, _MASKED_BIT_DISABLE(dma_flags));
> @@ -950,9 +945,8 @@ int intel_uc_fw_mark_load_failed(struct intel_uc_fw *uc_fw, int err)
>
> GEM_BUG_ON(!intel_uc_fw_is_loadable(uc_fw));
>
> - i915_probe_error(gt->i915, "Failed to load %s firmware %s (%d)\n",
> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
> - err);
> + gt_probe_error(gt, "Failed to load %s firmware %s (%d)\n",
> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
> intel_uc_fw_change_status(uc_fw, INTEL_UC_FIRMWARE_LOAD_FAIL);
>
> return err;
> @@ -1078,15 +1072,15 @@ int intel_uc_fw_init(struct intel_uc_fw *uc_fw)
>
> err = i915_gem_object_pin_pages_unlocked(uc_fw->obj);
> if (err) {
> - DRM_DEBUG_DRIVER("%s fw pin-pages err=%d\n",
> - intel_uc_fw_type_repr(uc_fw->type), err);
> + gt_dbg(__uc_fw_to_gt(uc_fw), "%s fw pin-pages err=%d\n",
> + intel_uc_fw_type_repr(uc_fw->type), err);
> goto out;
> }
>
> err = uc_fw_rsa_data_create(uc_fw);
> if (err) {
> - DRM_DEBUG_DRIVER("%s fw rsa data creation failed, err=%d\n",
> - intel_uc_fw_type_repr(uc_fw->type), err);
> + gt_dbg(__uc_fw_to_gt(uc_fw), "%s fw rsa data creation failed, err=%d\n",
> + intel_uc_fw_type_repr(uc_fw->type), err);
> goto out_unpin;
> }
>
rest of the patch LGTM except that since we are around and to be more
friendly I would use %pe to show error codes
Michal
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 2/6] drm/i915/guc: More debug print updates - GSC firmware
2023-02-03 0:11 ` [Intel-gfx] [PATCH 2/6] drm/i915/guc: More debug print updates - GSC firmware John.C.Harrison
@ 2023-02-03 9:43 ` Michal Wajdeczko
0 siblings, 0 replies; 18+ messages in thread
From: Michal Wajdeczko @ 2023-02-03 9:43 UTC (permalink / raw)
To: John.C.Harrison, Intel-GFX; +Cc: DRI-Devel
On 03.02.2023 01:11, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
>
> Update a bunch more debug prints to use the new GT based scheme.
>
> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c | 8 +++-----
> drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c | 7 +++----
> 2 files changed, 6 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c
> index e73d4440c5e82..8e0c736fa4e94 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_gsc_fw.c
> @@ -6,6 +6,7 @@
> #include "gt/intel_engine_pm.h"
> #include "gt/intel_gpu_commands.h"
> #include "gt/intel_gt.h"
> +#include "gt/intel_gt_print.h"
> #include "gt/intel_ring.h"
> #include "intel_gsc_fw.h"
>
> @@ -88,9 +89,7 @@ static int gsc_fw_load(struct intel_gsc_uc *gsc)
> i915_request_put(rq);
>
> if (err)
> - drm_err(&gsc_uc_to_gt(gsc)->i915->drm,
> - "Request submission for GSC load failed (%d)\n",
> - err);
> + gt_err(gsc_uc_to_gt(gsc), "Request submission for GSC load failed (%d)\n", err);
>
> return err;
> }
> @@ -200,8 +199,7 @@ int intel_gsc_uc_fw_upload(struct intel_gsc_uc *gsc)
> /* FW is not fully operational until we enable SW proxy */
> intel_uc_fw_change_status(gsc_fw, INTEL_UC_FIRMWARE_TRANSFERRED);
>
> - drm_info(>->i915->drm, "Loaded GSC firmware %s\n",
> - gsc_fw->file_selected.path);
> + gt_info(gt, "Loaded GSC firmware %s\n", gsc_fw->file_selected.path);
>
> return 0;
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
> index fd21dbd2663be..6e7d5aa4dcf5e 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_gsc_uc.c
> @@ -6,6 +6,7 @@
> #include <linux/types.h>
>
> #include "gt/intel_gt.h"
> +#include "gt/intel_gt_print.h"
> #include "intel_gsc_uc.h"
> #include "intel_gsc_fw.h"
> #include "i915_drv.h"
> @@ -59,7 +60,6 @@ int intel_gsc_uc_init(struct intel_gsc_uc *gsc)
> {
> static struct lock_class_key gsc_lock;
> struct intel_gt *gt = gsc_uc_to_gt(gsc);
> - struct drm_i915_private *i915 = gt->i915;
> struct intel_engine_cs *engine = gt->engine[GSC0];
> struct intel_context *ce;
> struct i915_vma *vma;
> @@ -81,8 +81,7 @@ int intel_gsc_uc_init(struct intel_gsc_uc *gsc)
> I915_GEM_HWS_GSC_ADDR,
> &gsc_lock, "gsc_context");
> if (IS_ERR(ce)) {
> - drm_err(>->i915->drm,
> - "failed to create GSC CS ctx for FW communication\n");
> + gt_err(gt, "failed to create GSC CS ctx for FW communication\n");
> err = PTR_ERR(ce);
> goto out_vma;
> }
> @@ -98,7 +97,7 @@ int intel_gsc_uc_init(struct intel_gsc_uc *gsc)
> out_fw:
> intel_uc_fw_fini(&gsc->fw);
> out:
> - i915_probe_error(i915, "failed with %d\n", err);
> + gt_probe_error(gt, "GSC init failed with %d\n", err);
> return err;
> }
>
Acked-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
but with %pe used for printing errors (where applicable) it would look
even better
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 4/6] drm/i915/guc: More debug print updates - GuC selftests
2023-02-03 0:11 ` [Intel-gfx] [PATCH 4/6] drm/i915/guc: More debug print updates - GuC selftests John.C.Harrison
@ 2023-02-03 9:54 ` Michal Wajdeczko
2023-02-03 17:43 ` John Harrison
0 siblings, 1 reply; 18+ messages in thread
From: Michal Wajdeczko @ 2023-02-03 9:54 UTC (permalink / raw)
To: John.C.Harrison, Intel-GFX; +Cc: DRI-Devel
On 03.02.2023 01:11, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
>
> Update a bunch more debug prints to use the new GT based scheme.
>
> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> drivers/gpu/drm/i915/gt/uc/selftest_guc.c | 35 ++++++++++---------
> .../drm/i915/gt/uc/selftest_guc_hangcheck.c | 23 ++++++------
> .../drm/i915/gt/uc/selftest_guc_multi_lrc.c | 11 +++---
> 3 files changed, 36 insertions(+), 33 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
> index e28518fe8b908..6cc1e9c7a47d6 100644
> --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
> @@ -3,6 +3,7 @@
> * Copyright �� 2021 Intel Corporation
> */
>
> +#include "intel_guc_print.h"
You've included right headers but then you mostly used gt_xxx() macros
instead of guc_xxx() ones which IMHO are way more appropriate as we are
in GuC selftests
Michal
> #include "selftests/igt_spinner.h"
> #include "selftests/intel_scheduler_helpers.h"
>
> @@ -65,7 +66,7 @@ static int intel_guc_scrub_ctbs(void *arg)
> ce = intel_context_create(engine);
> if (IS_ERR(ce)) {
> ret = PTR_ERR(ce);
> - drm_err(>->i915->drm, "Failed to create context, %d: %d\n", i, ret);
> + gt_err(gt, "Failed to create context, %d: %d\n", i, ret);
> goto err;
> }
>
> @@ -86,7 +87,7 @@ static int intel_guc_scrub_ctbs(void *arg)
>
> if (IS_ERR(rq)) {
> ret = PTR_ERR(rq);
> - drm_err(>->i915->drm, "Failed to create request, %d: %d\n", i, ret);
> + gt_err(gt, "Failed to create request, %d: %d\n", i, ret);
> goto err;
> }
>
> @@ -96,7 +97,7 @@ static int intel_guc_scrub_ctbs(void *arg)
> for (i = 0; i < 3; ++i) {
> ret = i915_request_wait(last[i], 0, HZ);
> if (ret < 0) {
> - drm_err(>->i915->drm, "Last request failed to complete: %d\n", ret);
> + gt_err(gt, "Last request failed to complete: %d\n", ret);
> goto err;
> }
> i915_request_put(last[i]);
> @@ -113,7 +114,7 @@ static int intel_guc_scrub_ctbs(void *arg)
> /* GT will not idle if G2H are lost */
> ret = intel_gt_wait_for_idle(gt, HZ);
> if (ret < 0) {
> - drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
> + gt_err(gt, "GT failed to idle: %d\n", ret);
> goto err;
> }
>
> @@ -153,7 +154,7 @@ static int intel_guc_steal_guc_ids(void *arg)
>
> ce = kcalloc(GUC_MAX_CONTEXT_ID, sizeof(*ce), GFP_KERNEL);
> if (!ce) {
> - drm_err(>->i915->drm, "Context array allocation failed\n");
> + guc_err(guc, "Context array allocation failed\n");
> return -ENOMEM;
> }
>
> @@ -167,24 +168,24 @@ static int intel_guc_steal_guc_ids(void *arg)
> if (IS_ERR(ce[context_index])) {
> ret = PTR_ERR(ce[context_index]);
> ce[context_index] = NULL;
> - drm_err(>->i915->drm, "Failed to create context: %d\n", ret);
> + guc_err(guc, "Failed to create context: %d\n", ret);
> goto err_wakeref;
> }
> ret = igt_spinner_init(&spin, engine->gt);
> if (ret) {
> - drm_err(>->i915->drm, "Failed to create spinner: %d\n", ret);
> + guc_err(guc, "Failed to create spinner: %d\n", ret);
> goto err_contexts;
> }
> spin_rq = igt_spinner_create_request(&spin, ce[context_index],
> MI_ARB_CHECK);
> if (IS_ERR(spin_rq)) {
> ret = PTR_ERR(spin_rq);
> - drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
> + guc_err(guc, "Failed to create spinner request: %d\n", ret);
> goto err_contexts;
> }
> ret = request_add_spin(spin_rq, &spin);
> if (ret) {
> - drm_err(>->i915->drm, "Failed to add Spinner request: %d\n", ret);
> + guc_err(guc, "Failed to add Spinner request: %d\n", ret);
> goto err_spin_rq;
> }
>
> @@ -194,7 +195,7 @@ static int intel_guc_steal_guc_ids(void *arg)
> if (IS_ERR(ce[context_index])) {
> ret = PTR_ERR(ce[context_index--]);
> ce[context_index] = NULL;
> - drm_err(>->i915->drm, "Failed to create context: %d\n", ret);
> + guc_err(guc, "Failed to create context: %d\n", ret);
> goto err_spin_rq;
> }
>
> @@ -203,7 +204,7 @@ static int intel_guc_steal_guc_ids(void *arg)
> ret = PTR_ERR(rq);
> rq = NULL;
> if (ret != -EAGAIN) {
> - drm_err(>->i915->drm, "Failed to create request, %d: %d\n",
> + guc_err(guc, "Failed to create request, %d: %d\n",
> context_index, ret);
> goto err_spin_rq;
> }
> @@ -218,7 +219,7 @@ static int intel_guc_steal_guc_ids(void *arg)
> igt_spinner_end(&spin);
> ret = intel_selftest_wait_for_rq(spin_rq);
> if (ret) {
> - drm_err(>->i915->drm, "Spin request failed to complete: %d\n", ret);
> + guc_err(guc, "Spin request failed to complete: %d\n", ret);
> i915_request_put(last);
> goto err_spin_rq;
> }
> @@ -230,7 +231,7 @@ static int intel_guc_steal_guc_ids(void *arg)
> ret = i915_request_wait(last, 0, HZ * 30);
> i915_request_put(last);
> if (ret < 0) {
> - drm_err(>->i915->drm, "Last request failed to complete: %d\n", ret);
> + guc_err(guc, "Last request failed to complete: %d\n", ret);
> goto err_spin_rq;
> }
>
> @@ -238,7 +239,7 @@ static int intel_guc_steal_guc_ids(void *arg)
> rq = nop_user_request(ce[context_index], NULL);
> if (IS_ERR(rq)) {
> ret = PTR_ERR(rq);
> - drm_err(>->i915->drm, "Failed to steal guc_id, %d: %d\n", context_index, ret);
> + guc_err(guc, "Failed to steal guc_id, %d: %d\n", context_index, ret);
> goto err_spin_rq;
> }
>
> @@ -246,20 +247,20 @@ static int intel_guc_steal_guc_ids(void *arg)
> ret = i915_request_wait(rq, 0, HZ);
> i915_request_put(rq);
> if (ret < 0) {
> - drm_err(>->i915->drm, "Request with stolen guc_id failed to complete: %d\n", ret);
> + guc_err(guc, "Request with stolen guc_id failed to complete: %d\n", ret);
> goto err_spin_rq;
> }
>
> /* Wait for idle */
> ret = intel_gt_wait_for_idle(gt, HZ * 30);
> if (ret < 0) {
> - drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
> + guc_err(guc, "GT failed to idle: %d\n", ret);
> goto err_spin_rq;
> }
>
> /* Verify a guc_id was stolen */
> if (guc->number_guc_id_stolen == number_guc_id_stolen) {
> - drm_err(>->i915->drm, "No guc_id was stolen");
> + guc_err(guc, "No guc_id was stolen");
> ret = -EINVAL;
> } else {
> ret = 0;
> diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
> index d91b58f704039..fffe95ac15c4e 100644
> --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
> +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
> @@ -3,6 +3,7 @@
> * Copyright © 2022 Intel Corporation
> */
>
> +#include "intel_guc_print.h"
> #include "selftests/igt_spinner.h"
> #include "selftests/igt_reset.h"
> #include "selftests/intel_scheduler_helpers.h"
> @@ -45,7 +46,7 @@ static int intel_hang_guc(void *arg)
>
> ctx = kernel_context(gt->i915, NULL);
> if (IS_ERR(ctx)) {
> - drm_err(>->i915->drm, "Failed get kernel context: %ld\n", PTR_ERR(ctx));
> + gt_err(gt, "Failed get kernel context: %ld\n", PTR_ERR(ctx));
> return PTR_ERR(ctx);
> }
>
> @@ -54,7 +55,7 @@ static int intel_hang_guc(void *arg)
> ce = intel_context_create(engine);
> if (IS_ERR(ce)) {
> ret = PTR_ERR(ce);
> - drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
> + gt_err(gt, "Failed to create spinner request: %d\n", ret);
> goto err;
> }
>
> @@ -63,13 +64,13 @@ static int intel_hang_guc(void *arg)
> old_beat = engine->props.heartbeat_interval_ms;
> ret = intel_engine_set_heartbeat(engine, BEAT_INTERVAL);
> if (ret) {
> - drm_err(>->i915->drm, "Failed to boost heatbeat interval: %d\n", ret);
> + gt_err(gt, "Failed to boost heatbeat interval: %d\n", ret);
> goto err;
> }
>
> ret = igt_spinner_init(&spin, engine->gt);
> if (ret) {
> - drm_err(>->i915->drm, "Failed to create spinner: %d\n", ret);
> + gt_err(gt, "Failed to create spinner: %d\n", ret);
> goto err;
> }
>
> @@ -77,28 +78,28 @@ static int intel_hang_guc(void *arg)
> intel_context_put(ce);
> if (IS_ERR(rq)) {
> ret = PTR_ERR(rq);
> - drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
> + gt_err(gt, "Failed to create spinner request: %d\n", ret);
> goto err_spin;
> }
>
> ret = request_add_spin(rq, &spin);
> if (ret) {
> i915_request_put(rq);
> - drm_err(>->i915->drm, "Failed to add Spinner request: %d\n", ret);
> + gt_err(gt, "Failed to add Spinner request: %d\n", ret);
> goto err_spin;
> }
>
> ret = intel_reset_guc(gt);
> if (ret) {
> i915_request_put(rq);
> - drm_err(>->i915->drm, "Failed to reset GuC, ret = %d\n", ret);
> + gt_err(gt, "Failed to reset GuC, ret = %d\n", ret);
> goto err_spin;
> }
>
> guc_status = intel_uncore_read(gt->uncore, GUC_STATUS);
> if (!(guc_status & GS_MIA_IN_RESET)) {
> i915_request_put(rq);
> - drm_err(>->i915->drm, "GuC failed to reset: status = 0x%08X\n", guc_status);
> + gt_err(gt, "Failed to reset GuC: status = 0x%08X\n", guc_status);
> ret = -EIO;
> goto err_spin;
> }
> @@ -107,12 +108,12 @@ static int intel_hang_guc(void *arg)
> ret = intel_selftest_wait_for_rq(rq);
> i915_request_put(rq);
> if (ret) {
> - drm_err(>->i915->drm, "Request failed to complete: %d\n", ret);
> + gt_err(gt, "Request failed to complete: %d\n", ret);
> goto err_spin;
> }
>
> if (i915_reset_count(global) == reset_count) {
> - drm_err(>->i915->drm, "Failed to record a GPU reset\n");
> + gt_err(gt, "Failed to record a GPU reset\n");
> ret = -EINVAL;
> goto err_spin;
> }
> @@ -132,7 +133,7 @@ static int intel_hang_guc(void *arg)
> ret = intel_selftest_wait_for_rq(rq);
> i915_request_put(rq);
> if (ret) {
> - drm_err(>->i915->drm, "No-op failed to complete: %d\n", ret);
> + gt_err(gt, "No-op failed to complete: %d\n", ret);
> goto err;
> }
> }
> diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
> index d17982c36d256..0e64be0918ae5 100644
> --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
> @@ -3,6 +3,7 @@
> * Copyright �� 2019 Intel Corporation
> */
>
> +#include "intel_guc_print.h"
> #include "selftests/igt_spinner.h"
> #include "selftests/igt_reset.h"
> #include "selftests/intel_scheduler_helpers.h"
> @@ -115,30 +116,30 @@ static int __intel_guc_multi_lrc_basic(struct intel_gt *gt, unsigned int class)
>
> parent = multi_lrc_create_parent(gt, class, 0);
> if (IS_ERR(parent)) {
> - drm_err(>->i915->drm, "Failed creating contexts: %ld", PTR_ERR(parent));
> + gt_err(gt, "Failed creating contexts: %ld\n", PTR_ERR(parent));
> return PTR_ERR(parent);
> } else if (!parent) {
> - drm_dbg(>->i915->drm, "Not enough engines in class: %d", class);
> + gt_dbg(gt, "Not enough engines in class: %d\n", class);
> return 0;
> }
>
> rq = multi_lrc_nop_request(parent);
> if (IS_ERR(rq)) {
> ret = PTR_ERR(rq);
> - drm_err(>->i915->drm, "Failed creating requests: %d", ret);
> + gt_err(gt, "Failed creating requests: %d\n", ret);
> goto out;
> }
>
> ret = intel_selftest_wait_for_rq(rq);
> if (ret)
> - drm_err(>->i915->drm, "Failed waiting on request: %d", ret);
> + gt_err(gt, "Failed waiting on request: %d\n", ret);
>
> i915_request_put(rq);
>
> if (ret >= 0) {
> ret = intel_gt_wait_for_idle(gt, HZ * 5);
> if (ret < 0)
> - drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
> + gt_err(gt, "GT failed to idle: %d\n", ret);
> }
>
> out:
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 5/6] drm/i915/guc: More debug print updates - GuC SLPC
2023-02-03 0:11 ` [Intel-gfx] [PATCH 5/6] drm/i915/guc: More debug print updates - GuC SLPC John.C.Harrison
@ 2023-02-03 10:00 ` Michal Wajdeczko
0 siblings, 0 replies; 18+ messages in thread
From: Michal Wajdeczko @ 2023-02-03 10:00 UTC (permalink / raw)
To: John.C.Harrison, Intel-GFX; +Cc: DRI-Devel
On 03.02.2023 01:11, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
>
> Update a bunch more debug prints to use the new GT based scheme.
>
> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c | 8 +--
> drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c | 60 ++++++++-------------
> 2 files changed, 26 insertions(+), 42 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
> index b5855091cf6a9..23b287cefb943 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_rc.c
> @@ -6,6 +6,7 @@
> #include <linux/string_helpers.h>
>
> #include "intel_guc_rc.h"
> +#include "intel_guc_print.h"
> #include "gt/intel_gt.h"
> #include "i915_drv.h"
>
> @@ -70,13 +71,12 @@ static int __guc_rc_control(struct intel_guc *guc, bool enable)
>
> ret = guc_action_control_gucrc(guc, enable);
> if (ret) {
> - i915_probe_error(guc_to_gt(guc)->i915, "Failed to %s GuC RC (%pe)\n",
> - str_enable_disable(enable), ERR_PTR(ret));
> + guc_probe_error(guc, "Failed to %s RC (%pe)\n",
> + str_enable_disable(enable), ERR_PTR(ret));
> return ret;
> }
>
> - drm_info(>->i915->drm, "GuC RC: %s\n",
> - str_enabled_disabled(enable));
> + guc_info(guc, "RC: %s\n", str_enabled_disabled(enable));
>
> return 0;
> }
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c
> index 63464933cbceb..91f4fa499cec4 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_slpc.c
> @@ -9,6 +9,7 @@
> #include "i915_drv.h"
> #include "i915_reg.h"
> #include "intel_guc_slpc.h"
> +#include "intel_guc_print.h"
> #include "intel_mchbar_regs.h"
> #include "gt/intel_gt.h"
> #include "gt/intel_gt_regs.h"
> @@ -171,14 +172,13 @@ static int guc_action_slpc_query(struct intel_guc *guc, u32 offset)
> static int slpc_query_task_state(struct intel_guc_slpc *slpc)
> {
> struct intel_guc *guc = slpc_to_guc(slpc);
> - struct drm_i915_private *i915 = slpc_to_i915(slpc);
> u32 offset = intel_guc_ggtt_offset(guc, slpc->vma);
> int ret;
>
> ret = guc_action_slpc_query(guc, offset);
> if (unlikely(ret))
> - i915_probe_error(i915, "Failed to query task state (%pe)\n",
> - ERR_PTR(ret));
> + guc_probe_error(guc, "Failed to query task state (%pe)\n",
> + ERR_PTR(ret));
>
> drm_clflush_virt_range(slpc->vaddr, SLPC_PAGE_SIZE_BYTES);
>
> @@ -188,15 +188,14 @@ static int slpc_query_task_state(struct intel_guc_slpc *slpc)
> static int slpc_set_param(struct intel_guc_slpc *slpc, u8 id, u32 value)
> {
> struct intel_guc *guc = slpc_to_guc(slpc);
> - struct drm_i915_private *i915 = slpc_to_i915(slpc);
> int ret;
>
> GEM_BUG_ON(id >= SLPC_MAX_PARAM);
>
> ret = guc_action_slpc_set_param(guc, id, value);
> if (ret)
> - i915_probe_error(i915, "Failed to set param %d to %u (%pe)\n",
> - id, value, ERR_PTR(ret));
> + guc_probe_error(guc, "Failed to set param %d to %u (%pe)\n",
> + id, value, ERR_PTR(ret));
>
> return ret;
> }
> @@ -212,8 +211,8 @@ static int slpc_unset_param(struct intel_guc_slpc *slpc, u8 id)
>
> static int slpc_force_min_freq(struct intel_guc_slpc *slpc, u32 freq)
> {
> - struct drm_i915_private *i915 = slpc_to_i915(slpc);
> struct intel_guc *guc = slpc_to_guc(slpc);
> + struct drm_i915_private *i915 = slpc_to_i915(slpc);
> intel_wakeref_t wakeref;
> int ret = 0;
>
> @@ -236,8 +235,7 @@ static int slpc_force_min_freq(struct intel_guc_slpc *slpc, u32 freq)
> SLPC_PARAM_GLOBAL_MIN_GT_UNSLICE_FREQ_MHZ,
> freq);
> if (ret)
> - drm_notice(&i915->drm,
> - "Failed to send set_param for min freq(%d): (%d)\n",
> + guc_notice(guc, "Failed to send set_param for min freq(%d): (%d)\n",
> freq, ret);
> }
>
> @@ -267,7 +265,6 @@ static void slpc_boost_work(struct work_struct *work)
> int intel_guc_slpc_init(struct intel_guc_slpc *slpc)
> {
> struct intel_guc *guc = slpc_to_guc(slpc);
> - struct drm_i915_private *i915 = slpc_to_i915(slpc);
> u32 size = PAGE_ALIGN(sizeof(struct slpc_shared_data));
> int err;
>
> @@ -275,9 +272,7 @@ int intel_guc_slpc_init(struct intel_guc_slpc *slpc)
>
> err = intel_guc_allocate_and_map_vma(guc, size, &slpc->vma, (void **)&slpc->vaddr);
> if (unlikely(err)) {
> - i915_probe_error(i915,
> - "Failed to allocate SLPC struct (err=%pe)\n",
> - ERR_PTR(err));
> + guc_probe_error(guc, "Failed to allocate SLPC struct (err=%pe)\n", ERR_PTR(err));
> return err;
> }
>
> @@ -338,7 +333,6 @@ static int guc_action_slpc_reset(struct intel_guc *guc, u32 offset)
>
> static int slpc_reset(struct intel_guc_slpc *slpc)
> {
> - struct drm_i915_private *i915 = slpc_to_i915(slpc);
> struct intel_guc *guc = slpc_to_guc(slpc);
> u32 offset = intel_guc_ggtt_offset(guc, slpc->vma);
> int ret;
> @@ -346,15 +340,15 @@ static int slpc_reset(struct intel_guc_slpc *slpc)
> ret = guc_action_slpc_reset(guc, offset);
>
> if (unlikely(ret < 0)) {
> - i915_probe_error(i915, "SLPC reset action failed (%pe)\n",
> - ERR_PTR(ret));
> + guc_probe_error(guc, "SLPC reset action failed (%pe)\n",
> + ERR_PTR(ret));
> return ret;
> }
>
> if (!ret) {
> if (wait_for(slpc_is_running(slpc), SLPC_RESET_TIMEOUT_MS)) {
> - i915_probe_error(i915, "SLPC not enabled! State = %s\n",
> - slpc_get_state_string(slpc));
> + guc_probe_error(guc, "SLPC not enabled! State = %s\n",
> + slpc_get_state_string(slpc));
> return -EIO;
> }
> }
> @@ -495,8 +489,8 @@ int intel_guc_slpc_set_min_freq(struct intel_guc_slpc *slpc, u32 val)
> SLPC_PARAM_IGNORE_EFFICIENT_FREQUENCY,
> val < slpc->rp1_freq);
> if (ret) {
> - i915_probe_error(i915, "Failed to toggle efficient freq (%pe)\n",
> - ERR_PTR(ret));
> + guc_probe_error(slpc_to_guc(slpc), "Failed to toggle efficient freq (%pe)\n",
> + ERR_PTR(ret));
> goto out;
> }
>
> @@ -611,15 +605,12 @@ static int slpc_set_softlimits(struct intel_guc_slpc *slpc)
>
> static bool is_slpc_min_freq_rpmax(struct intel_guc_slpc *slpc)
> {
> - struct drm_i915_private *i915 = slpc_to_i915(slpc);
> int slpc_min_freq;
> int ret;
>
> ret = intel_guc_slpc_get_min_freq(slpc, &slpc_min_freq);
> if (ret) {
> - drm_err(&i915->drm,
> - "Failed to get min freq: (%d)\n",
> - ret);
> + guc_err(slpc_to_guc(slpc), "Failed to get min freq: (%d)\n", ret);
> return false;
> }
>
> @@ -685,9 +676,7 @@ int intel_guc_slpc_override_gucrc_mode(struct intel_guc_slpc *slpc, u32 mode)
> with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
> ret = slpc_set_param(slpc, SLPC_PARAM_PWRGATE_RC_MODE, mode);
> if (ret)
> - drm_err(&i915->drm,
> - "Override gucrc mode %d failed %d\n",
> - mode, ret);
> + guc_err(slpc_to_guc(slpc), "Override gucrc mode %d failed %d\n", mode, ret);
nit: in other message this is named as "RC" not "gucrc"
> }
>
> return ret;
> @@ -702,9 +691,7 @@ int intel_guc_slpc_unset_gucrc_mode(struct intel_guc_slpc *slpc)
> with_intel_runtime_pm(&i915->runtime_pm, wakeref) {
> ret = slpc_unset_param(slpc, SLPC_PARAM_PWRGATE_RC_MODE);
> if (ret)
> - drm_err(&i915->drm,
> - "Unsetting gucrc mode failed %d\n",
> - ret);
> + guc_err(slpc_to_guc(slpc), "Unsetting gucrc mode failed %d\n", ret);
> }
>
> return ret;
> @@ -725,7 +712,7 @@ int intel_guc_slpc_unset_gucrc_mode(struct intel_guc_slpc *slpc)
> */
> int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
> {
> - struct drm_i915_private *i915 = slpc_to_i915(slpc);
> + struct intel_guc *guc = slpc_to_guc(slpc);
> int ret;
>
> GEM_BUG_ON(!slpc->vma);
> @@ -734,8 +721,7 @@ int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
>
> ret = slpc_reset(slpc);
> if (unlikely(ret < 0)) {
> - i915_probe_error(i915, "SLPC Reset event returned (%pe)\n",
> - ERR_PTR(ret));
> + guc_probe_error(guc, "SLPC Reset event returned (%pe)\n", ERR_PTR(ret));
> return ret;
> }
>
> @@ -743,7 +729,7 @@ int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
> if (unlikely(ret < 0))
> return ret;
>
> - intel_guc_pm_intrmsk_enable(to_gt(i915));
> + intel_guc_pm_intrmsk_enable(slpc_to_gt(slpc));
>
> slpc_get_rp_values(slpc);
>
> @@ -753,16 +739,14 @@ int intel_guc_slpc_enable(struct intel_guc_slpc *slpc)
> /* Set SLPC max limit to RP0 */
> ret = slpc_use_fused_rp0(slpc);
> if (unlikely(ret)) {
> - i915_probe_error(i915, "Failed to set SLPC max to RP0 (%pe)\n",
> - ERR_PTR(ret));
> + guc_probe_error(guc, "Failed to set SLPC max to RP0 (%pe)\n", ERR_PTR(ret));
> return ret;
> }
>
> /* Revert SLPC min/max to softlimits if necessary */
> ret = slpc_set_softlimits(slpc);
> if (unlikely(ret)) {
> - i915_probe_error(i915, "Failed to set SLPC softlimits (%pe)\n",
> - ERR_PTR(ret));
> + guc_probe_error(guc, "Failed to set SLPC softlimits (%pe)\n", ERR_PTR(ret));
> return ret;
> }
>
Acked-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
but better if we should be more consistent when printing error codes and
maybe while around worth to update all to %pe ?
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 6/6] drm/i915/guc: More debug print updates - GuC logging
2023-02-03 0:11 ` [Intel-gfx] [PATCH 6/6] drm/i915/guc: More debug print updates - GuC logging John.C.Harrison
@ 2023-02-03 10:02 ` Michal Wajdeczko
0 siblings, 0 replies; 18+ messages in thread
From: Michal Wajdeczko @ 2023-02-03 10:02 UTC (permalink / raw)
To: John.C.Harrison, Intel-GFX; +Cc: DRI-Devel
On 03.02.2023 01:11, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
>
> Update a bunch more debug prints to use the new GT based scheme.
>
> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> drivers/gpu/drm/i915/gt/intel_gt_print.h | 3 +++
> drivers/gpu/drm/i915/gt/uc/intel_guc_log.c | 3 +--
> drivers/gpu/drm/i915/gt/uc/intel_guc_print.h | 3 +++
> 3 files changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/intel_gt_print.h b/drivers/gpu/drm/i915/gt/intel_gt_print.h
> index 5d9da355ce242..55a336a9ff061 100644
> --- a/drivers/gpu/drm/i915/gt/intel_gt_print.h
> +++ b/drivers/gpu/drm/i915/gt/intel_gt_print.h
> @@ -28,6 +28,9 @@
> #define gt_err_ratelimited(_gt, _fmt, ...) \
> drm_err_ratelimited(&(_gt)->i915->drm, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
>
> +#define gt_notice_ratelimited(_gt, _fmt, ...) \
> + dev_notice_ratelimited((_gt)->i915->drm.dev, "GT%u: " _fmt, (_gt)->info.id, ##__VA_ARGS__)
> +
> #define gt_probe_error(_gt, _fmt, ...) \
> do { \
> if (i915_error_injected()) \
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> index c3792ddeec802..818e9e0e66a83 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_log.c
> @@ -333,8 +333,7 @@ bool intel_guc_check_log_buf_overflow(struct intel_guc_log *log,
> log->stats[type].sampled_overflow += 16;
> }
>
> - dev_notice_ratelimited(guc_to_gt(log_to_guc(log))->i915->drm.dev,
> - "GuC log buffer overflow\n");
> + guc_notice_ratelimited(log_to_guc(log), "log buffer overflow\n");
> }
>
> return overflow;
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h b/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h
> index e75989d4ba067..2465d05638b40 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_print.h
> @@ -30,6 +30,9 @@
> #define guc_err_ratelimited(_guc, _fmt, ...) \
> guc_printk((_guc), err_ratelimited, _fmt, ##__VA_ARGS__)
>
> +#define guc_notice_ratelimited(_guc, _fmt, ...) \
> + guc_printk((_guc), notice_ratelimited, _fmt, ##__VA_ARGS__)
> +
> #define guc_probe_error(_guc, _fmt, ...) \
> guc_printk((_guc), probe_error, _fmt, ##__VA_ARGS__)
>
Reviewed-by: Michal Wajdeczko <michal.wajdeczko@intel.com>
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Intel-gfx] ✗ Fi.CI.BAT: failure for More drm_dbg to guc_dbg changes
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
` (6 preceding siblings ...)
2023-02-03 1:18 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for More drm_dbg to guc_dbg changes Patchwork
@ 2023-02-03 12:24 ` Patchwork
7 siblings, 0 replies; 18+ messages in thread
From: Patchwork @ 2023-02-03 12:24 UTC (permalink / raw)
To: john.c.harrison; +Cc: intel-gfx
[-- Attachment #1: Type: text/plain, Size: 4265 bytes --]
== Series Details ==
Series: More drm_dbg to guc_dbg changes
URL : https://patchwork.freedesktop.org/series/113624/
State : failure
== Summary ==
CI Bug Log - changes from CI_DRM_12687 -> Patchwork_113624v1
====================================================
Summary
-------
**FAILURE**
Serious unknown changes coming with Patchwork_113624v1 absolutely need to be
verified manually.
If you think the reported changes have nothing to do with the changes
introduced in Patchwork_113624v1, please notify your bug team to allow them
to document this new failure mode, which will reduce false positives in CI.
External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113624v1/index.html
Participating hosts (26 -> 25)
------------------------------
Missing (1): fi-snb-2520m
Possible new issues
-------------------
Here are the unknown changes that may have been introduced in Patchwork_113624v1:
### IGT changes ###
#### Possible regressions ####
* igt@dmabuf@all-tests@dma_fence:
- fi-blb-e6850: [PASS][1] -> [ABORT][2]
[1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12687/fi-blb-e6850/igt@dmabuf@all-tests@dma_fence.html
[2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113624v1/fi-blb-e6850/igt@dmabuf@all-tests@dma_fence.html
* igt@dmabuf@all-tests@dma_fence_chain:
- fi-blb-e6850: [PASS][3] -> [DMESG-FAIL][4]
[3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12687/fi-blb-e6850/igt@dmabuf@all-tests@dma_fence_chain.html
[4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113624v1/fi-blb-e6850/igt@dmabuf@all-tests@dma_fence_chain.html
Known issues
------------
Here are the changes found in Patchwork_113624v1 that come from known issues:
### IGT changes ###
#### Issues hit ####
* igt@i915_selftest@live@gt_heartbeat:
- fi-apl-guc: [PASS][5] -> [DMESG-FAIL][6] ([i915#5334])
[5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12687/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
[6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113624v1/fi-apl-guc/igt@i915_selftest@live@gt_heartbeat.html
#### Possible fixes ####
* igt@gem_exec_suspend@basic-s3@smem:
- {bat-adlp-9}: [DMESG-WARN][7] -> [PASS][8]
[7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12687/bat-adlp-9/igt@gem_exec_suspend@basic-s3@smem.html
[8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113624v1/bat-adlp-9/igt@gem_exec_suspend@basic-s3@smem.html
* igt@i915_selftest@live@slpc:
- {bat-rpls-1}: [DMESG-FAIL][9] ([i915#6367]) -> [PASS][10]
[9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_12687/bat-rpls-1/igt@i915_selftest@live@slpc.html
[10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113624v1/bat-rpls-1/igt@i915_selftest@live@slpc.html
{name}: This element is suppressed. This means it is ignored when computing
the status of the difference (SUCCESS, WARNING, or FAILURE).
[i915#4983]: https://gitlab.freedesktop.org/drm/intel/issues/4983
[i915#5334]: https://gitlab.freedesktop.org/drm/intel/issues/5334
[i915#6311]: https://gitlab.freedesktop.org/drm/intel/issues/6311
[i915#6367]: https://gitlab.freedesktop.org/drm/intel/issues/6367
[i915#7359]: https://gitlab.freedesktop.org/drm/intel/issues/7359
Build changes
-------------
* Linux: CI_DRM_12687 -> Patchwork_113624v1
CI-20190529: 20190529
CI_DRM_12687: ff418364c6746ffa6863f147e587eeb792181fe5 @ git://anongit.freedesktop.org/gfx-ci/linux
IGT_7144: cda71bf809b981a646270963d6b1ccee4fd4643b @ https://gitlab.freedesktop.org/drm/igt-gpu-tools.git
Patchwork_113624v1: ff418364c6746ffa6863f147e587eeb792181fe5 @ git://anongit.freedesktop.org/gfx-ci/linux
### Linux commits
f579b179515c drm/i915/guc: More debug print updates - GuC logging
c30ef198d572 drm/i915/guc: More debug print updates - GuC SLPC
eea45b2018ca drm/i915/guc: More debug print updates - GuC selftests
b692dea8ba11 drm/i915/guc: More debug print updates - GuC reg capture
4f32a59e7e26 drm/i915/guc: More debug print updates - GSC firmware
e629ac729886 drm/i915/guc: More debug print updates - UC firmware
== Logs ==
For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_113624v1/index.html
[-- Attachment #2: Type: text/html, Size: 4843 bytes --]
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware
2023-02-03 9:39 ` Michal Wajdeczko
@ 2023-02-03 17:35 ` John Harrison
0 siblings, 0 replies; 18+ messages in thread
From: John Harrison @ 2023-02-03 17:35 UTC (permalink / raw)
To: Michal Wajdeczko, intel-gfx
On 2/3/2023 01:39, Michal Wajdeczko wrote:
> On 03.02.2023 01:11, John.C.Harrison@Intel.com wrote:
>> From: John Harrison <John.C.Harrison@Intel.com>
>>
>> Update a bunch more debug prints to use the new GT based scheme.
>>
>> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
>> ---
>> drivers/gpu/drm/i915/gt/uc/intel_uc.c | 42 ++++----
>> drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c | 116 +++++++++++------------
>> 2 files changed, 73 insertions(+), 85 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc.c b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
>> index de7f987cf6111..6648691bd6450 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc.c
>> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc.c
>> @@ -83,15 +83,15 @@ static int __intel_uc_reset_hw(struct intel_uc *uc)
>>
>> static void __confirm_options(struct intel_uc *uc)
>> {
>> - struct drm_i915_private *i915 = uc_to_gt(uc)->i915;
>> + struct intel_gt *gt = uc_to_gt(uc);
>> + struct drm_i915_private *i915 = gt->i915;
>>
>> - drm_dbg(&i915->drm,
>> - "enable_guc=%d (guc:%s submission:%s huc:%s slpc:%s)\n",
>> - i915->params.enable_guc,
>> - str_yes_no(intel_uc_wants_guc(uc)),
>> - str_yes_no(intel_uc_wants_guc_submission(uc)),
>> - str_yes_no(intel_uc_wants_huc(uc)),
>> - str_yes_no(intel_uc_wants_guc_slpc(uc)));
>> + gt_dbg(gt, "enable_guc=%d (guc:%s submission:%s huc:%s slpc:%s)\n",
>> + i915->params.enable_guc,
>> + str_yes_no(intel_uc_wants_guc(uc)),
>> + str_yes_no(intel_uc_wants_guc_submission(uc)),
>> + str_yes_no(intel_uc_wants_huc(uc)),
>> + str_yes_no(intel_uc_wants_guc_slpc(uc)));
>>
>> if (i915->params.enable_guc == 0) {
>> GEM_BUG_ON(intel_uc_wants_guc(uc));
>> @@ -102,26 +102,22 @@ static void __confirm_options(struct intel_uc *uc)
>> }
>>
>> if (!intel_uc_supports_guc(uc))
>> - drm_info(&i915->drm,
>> - "Incompatible option enable_guc=%d - %s\n",
>> - i915->params.enable_guc, "GuC is not supported!");
>> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
>> + i915->params.enable_guc, "GuC is not supported!");
>>
>> if (i915->params.enable_guc & ENABLE_GUC_LOAD_HUC &&
>> !intel_uc_supports_huc(uc))
>> - drm_info(&i915->drm,
>> - "Incompatible option enable_guc=%d - %s\n",
>> - i915->params.enable_guc, "HuC is not supported!");
>> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
>> + i915->params.enable_guc, "HuC is not supported!");
>>
>> if (i915->params.enable_guc & ENABLE_GUC_SUBMISSION &&
>> !intel_uc_supports_guc_submission(uc))
>> - drm_info(&i915->drm,
>> - "Incompatible option enable_guc=%d - %s\n",
>> - i915->params.enable_guc, "GuC submission is N/A");
>> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
>> + i915->params.enable_guc, "GuC submission is N/A");
>>
>> if (i915->params.enable_guc & ~ENABLE_GUC_MASK)
>> - drm_info(&i915->drm,
>> - "Incompatible option enable_guc=%d - %s\n",
>> - i915->params.enable_guc, "undocumented flag");
>> + gt_info(gt, "Incompatible option enable_guc=%d - %s\n",
>> + i915->params.enable_guc, "undocumented flag");
> all these above messages are about i915->params so IMHO using drm_info()
> is still more applicable than gt_info() ...
But they are explaining the path taken on a particular GT to reach the
final decision about what to load or run. That could be important. E.g.
on MTL render tile does not have HuC so the decisions will be different
even though the modparams are the same.
>
>> }
>>
>> void intel_uc_init_early(struct intel_uc *uc)
>> @@ -549,10 +545,8 @@ static int __uc_init_hw(struct intel_uc *uc)
>>
>> intel_gsc_uc_load_start(&uc->gsc);
>>
>> - gt_info(gt, "GuC submission %s\n",
>> - str_enabled_disabled(intel_uc_uses_guc_submission(uc)));
>> - gt_info(gt, "GuC SLPC %s\n",
>> - str_enabled_disabled(intel_uc_uses_guc_slpc(uc)));
>> + guc_info(guc, "submission %s\n", str_enabled_disabled(intel_uc_uses_guc_submission(uc)));
>> + guc_info(guc, "SLPC %s\n", str_enabled_disabled(intel_uc_uses_guc_slpc(uc)));
>>
>> return 0;
>>
>> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
>> index 65672ff826054..7d2558d53e972 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
>> +++ b/drivers/gpu/drm/i915/gt/uc/intel_uc_fw.c
>> @@ -11,6 +11,7 @@
>> #include <drm/drm_print.h>
>>
>> #include "gem/i915_gem_lmem.h"
>> +#include "gt/intel_gt_print.h"
>> #include "intel_uc_fw.h"
>> #include "intel_uc_fw_abi.h"
>> #include "i915_drv.h"
>> @@ -44,11 +45,10 @@ void intel_uc_fw_change_status(struct intel_uc_fw *uc_fw,
>> enum intel_uc_fw_status status)
>> {
>> uc_fw->__status = status;
>> - drm_dbg(&__uc_fw_to_gt(uc_fw)->i915->drm,
>> - "%s firmware -> %s\n",
>> - intel_uc_fw_type_repr(uc_fw->type),
>> - status == INTEL_UC_FIRMWARE_SELECTED ?
>> - uc_fw->file_selected.path : intel_uc_fw_status_repr(status));
>> + gt_dbg(__uc_fw_to_gt(uc_fw), "%s firmware -> %s\n",
>> + intel_uc_fw_type_repr(uc_fw->type),
>> + status == INTEL_UC_FIRMWARE_SELECTED ?
>> + uc_fw->file_selected.path : intel_uc_fw_status_repr(status));
>> }
>> #endif
>>
>> @@ -562,15 +562,14 @@ static int check_ccs_header(struct intel_gt *gt,
>> const struct firmware *fw,
>> struct intel_uc_fw *uc_fw)
>> {
>> - struct drm_i915_private *i915 = gt->i915;
>> struct uc_css_header *css;
>> size_t size;
>>
>> /* Check the size of the blob before examining buffer contents */
>> if (unlikely(fw->size < sizeof(struct uc_css_header))) {
>> - drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu < %zu\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> - fw->size, sizeof(struct uc_css_header));
>> + gt_warn(gt, "%s firmware %s: invalid size: %zu < %zu\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> + fw->size, sizeof(struct uc_css_header));
>> return -ENODATA;
>> }
>>
>> @@ -580,10 +579,9 @@ static int check_ccs_header(struct intel_gt *gt,
>> size = (css->header_size_dw - css->key_size_dw - css->modulus_size_dw -
>> css->exponent_size_dw) * sizeof(u32);
>> if (unlikely(size != sizeof(struct uc_css_header))) {
>> - drm_warn(&i915->drm,
>> - "%s firmware %s: unexpected header size: %zu != %zu\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> - fw->size, sizeof(struct uc_css_header));
>> + gt_warn(gt, "%s firmware %s: unexpected header size: %zu != %zu\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> + fw->size, sizeof(struct uc_css_header));
>> return -EPROTO;
>> }
>>
>> @@ -596,18 +594,18 @@ static int check_ccs_header(struct intel_gt *gt,
>> /* At least, it should have header, uCode and RSA. Size of all three. */
>> size = sizeof(struct uc_css_header) + uc_fw->ucode_size + uc_fw->rsa_size;
>> if (unlikely(fw->size < size)) {
>> - drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu < %zu\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> - fw->size, size);
>> + gt_warn(gt, "%s firmware %s: invalid size: %zu < %zu\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> + fw->size, size);
>> return -ENOEXEC;
>> }
>>
>> /* Sanity check whether this fw is not larger than whole WOPCM memory */
>> size = __intel_uc_fw_get_upload_size(uc_fw);
>> if (unlikely(size >= gt->wopcm.size)) {
>> - drm_warn(&i915->drm, "%s firmware %s: invalid size: %zu > %zu\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> - size, (size_t)gt->wopcm.size);
>> + gt_warn(gt, "%s firmware %s: invalid size: %zu > %zu\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> + size, (size_t)gt->wopcm.size);
>> return -E2BIG;
>> }
>>
>> @@ -635,20 +633,20 @@ static bool guc_check_version_range(struct intel_uc_fw *uc_fw)
>> */
>>
> this is GuC specific function, shouldn't we use guc_warn() instead ?
Much/some of this code is not actually GuC specific. Also, GuC can
sometimes mean Springboard. And there's always the potential for bugs to
cause the wrong code path to occur. So I would rather the keep the '%s
firmware' string rather than forcing it to be a fixed prefix. Which
means that switching to guc_warn will duplicate the GuC prefix.
>
>> if (!is_ver_8bit(&uc_fw->file_selected.ver)) {
>> - drm_warn(&__uc_fw_to_gt(uc_fw)->i915->drm, "%s firmware: invalid file version: 0x%02X:%02X:%02X\n",
>> - intel_uc_fw_type_repr(uc_fw->type),
>> - uc_fw->file_selected.ver.major,
>> - uc_fw->file_selected.ver.minor,
>> - uc_fw->file_selected.ver.patch);
>> + gt_warn(__uc_fw_to_gt(uc_fw), "%s firmware: invalid file version: 0x%02X:%02X:%02X\n",
>> + intel_uc_fw_type_repr(uc_fw->type),
>> + uc_fw->file_selected.ver.major,
>> + uc_fw->file_selected.ver.minor,
>> + uc_fw->file_selected.ver.patch);
>> return false;
>> }
>>
>> if (!is_ver_8bit(&guc->submission_version)) {
>> - drm_warn(&__uc_fw_to_gt(uc_fw)->i915->drm, "%s firmware: invalid submit version: 0x%02X:%02X:%02X\n",
>> - intel_uc_fw_type_repr(uc_fw->type),
>> - guc->submission_version.major,
>> - guc->submission_version.minor,
>> - guc->submission_version.patch);
>> + gt_warn(__uc_fw_to_gt(uc_fw), "%s firmware: invalid submit version: 0x%02X:%02X:%02X\n",
>> + intel_uc_fw_type_repr(uc_fw->type),
>> + guc->submission_version.major,
>> + guc->submission_version.minor,
>> + guc->submission_version.patch);
>> return false;
>> }
>>
>> @@ -687,10 +685,9 @@ static int try_firmware_load(struct intel_uc_fw *uc_fw, const struct firmware **
>> return err;
>>
>> if ((*fw)->size > INTEL_UC_RSVD_GGTT_PER_FW) {
>> - drm_err(>->i915->drm,
>> - "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> - (*fw)->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
>> + gt_err(gt, "%s firmware %s: size (%zuKB) exceeds max supported size (%uKB)\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> + (*fw)->size / SZ_1K, INTEL_UC_RSVD_GGTT_PER_FW / SZ_1K);
>>
>> /* try to find another blob to load */
>> release_firmware(*fw);
>> @@ -768,10 +765,10 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
>> if (uc_fw->file_wanted.ver.major && uc_fw->file_selected.ver.major) {
>> /* Check the file's major version was as it claimed */
>> if (uc_fw->file_selected.ver.major != uc_fw->file_wanted.ver.major) {
>> - drm_notice(&i915->drm, "%s firmware %s: unexpected version: %u.%u != %u.%u\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> - uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor,
>> - uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor);
>> + gt_notice(gt, "%s firmware %s: unexpected version: %u.%u != %u.%u\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> + uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor,
>> + uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor);
>> if (!intel_uc_fw_is_overridden(uc_fw)) {
>> err = -ENOEXEC;
>> goto fail;
>> @@ -786,16 +783,14 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
>> /* Preserve the version that was really wanted */
>> memcpy(&uc_fw->file_wanted, &file_ideal, sizeof(uc_fw->file_wanted));
>>
>> - drm_notice(&i915->drm,
>> - "%s firmware %s (%d.%d) is recommended, but only %s (%d.%d) was found\n",
>> - intel_uc_fw_type_repr(uc_fw->type),
>> - uc_fw->file_wanted.path,
>> - uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor,
>> - uc_fw->file_selected.path,
>> - uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor);
>> - drm_info(&i915->drm,
>> - "Consider updating your linux-firmware pkg or downloading from %s\n",
>> - INTEL_UC_FIRMWARE_URL);
>> + gt_notice(gt, "%s firmware %s (%d.%d) is recommended, but only %s (%d.%d) was found\n",
>> + intel_uc_fw_type_repr(uc_fw->type),
>> + uc_fw->file_wanted.path,
>> + uc_fw->file_wanted.ver.major, uc_fw->file_wanted.ver.minor,
>> + uc_fw->file_selected.path,
>> + uc_fw->file_selected.ver.major, uc_fw->file_selected.ver.minor);
>> + gt_info(gt, "Consider updating your linux-firmware pkg or downloading from %s\n",
>> + INTEL_UC_FIRMWARE_URL);
>> }
>>
>> if (HAS_LMEM(i915)) {
>> @@ -823,10 +818,10 @@ int intel_uc_fw_fetch(struct intel_uc_fw *uc_fw)
>> INTEL_UC_FIRMWARE_MISSING :
>> INTEL_UC_FIRMWARE_ERROR);
>>
>> - i915_probe_error(i915, "%s firmware %s: fetch failed with error %d\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
>> - drm_info(&i915->drm, "%s firmware(s) can be downloaded from %s\n",
>> - intel_uc_fw_type_repr(uc_fw->type), INTEL_UC_FIRMWARE_URL);
>> + gt_probe_error(gt, "%s firmware %s: fetch failed with error %d\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
>> + gt_info(gt, "%s firmware(s) can be downloaded from %s\n",
>> + intel_uc_fw_type_repr(uc_fw->type), INTEL_UC_FIRMWARE_URL);
>>
>> release_firmware(fw); /* OK even if fw is NULL */
>> return err;
>> @@ -932,9 +927,9 @@ static int uc_fw_xfer(struct intel_uc_fw *uc_fw, u32 dst_offset, u32 dma_flags)
>> /* Wait for DMA to finish */
>> ret = intel_wait_for_register_fw(uncore, DMA_CTRL, START_DMA, 0, 100);
>> if (ret)
>> - drm_err(>->i915->drm, "DMA for %s fw failed, DMA_CTRL=%u\n",
>> - intel_uc_fw_type_repr(uc_fw->type),
>> - intel_uncore_read_fw(uncore, DMA_CTRL));
>> + gt_err(gt, "DMA for %s fw failed, DMA_CTRL=%u\n",
>> + intel_uc_fw_type_repr(uc_fw->type),
>> + intel_uncore_read_fw(uncore, DMA_CTRL));
>>
>> /* Disable the bits once DMA is over */
>> intel_uncore_write_fw(uncore, DMA_CTRL, _MASKED_BIT_DISABLE(dma_flags));
>> @@ -950,9 +945,8 @@ int intel_uc_fw_mark_load_failed(struct intel_uc_fw *uc_fw, int err)
>>
>> GEM_BUG_ON(!intel_uc_fw_is_loadable(uc_fw));
>>
>> - i915_probe_error(gt->i915, "Failed to load %s firmware %s (%d)\n",
>> - intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path,
>> - err);
>> + gt_probe_error(gt, "Failed to load %s firmware %s (%d)\n",
>> + intel_uc_fw_type_repr(uc_fw->type), uc_fw->file_selected.path, err);
>> intel_uc_fw_change_status(uc_fw, INTEL_UC_FIRMWARE_LOAD_FAIL);
>>
>> return err;
>> @@ -1078,15 +1072,15 @@ int intel_uc_fw_init(struct intel_uc_fw *uc_fw)
>>
>> err = i915_gem_object_pin_pages_unlocked(uc_fw->obj);
>> if (err) {
>> - DRM_DEBUG_DRIVER("%s fw pin-pages err=%d\n",
>> - intel_uc_fw_type_repr(uc_fw->type), err);
>> + gt_dbg(__uc_fw_to_gt(uc_fw), "%s fw pin-pages err=%d\n",
>> + intel_uc_fw_type_repr(uc_fw->type), err);
>> goto out;
>> }
>>
>> err = uc_fw_rsa_data_create(uc_fw);
>> if (err) {
>> - DRM_DEBUG_DRIVER("%s fw rsa data creation failed, err=%d\n",
>> - intel_uc_fw_type_repr(uc_fw->type), err);
>> + gt_dbg(__uc_fw_to_gt(uc_fw), "%s fw rsa data creation failed, err=%d\n",
>> + intel_uc_fw_type_repr(uc_fw->type), err);
>> goto out_unpin;
>> }
>>
> rest of the patch LGTM except that since we are around and to be more
> friendly I would use %pe to show error codes
Yeah, missed those.
John.
>
> Michal
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 4/6] drm/i915/guc: More debug print updates - GuC selftests
2023-02-03 9:54 ` Michal Wajdeczko
@ 2023-02-03 17:43 ` John Harrison
0 siblings, 0 replies; 18+ messages in thread
From: John Harrison @ 2023-02-03 17:43 UTC (permalink / raw)
To: Michal Wajdeczko, Intel-GFX; +Cc: DRI-Devel
On 2/3/2023 01:54, Michal Wajdeczko wrote:
> On 03.02.2023 01:11, John.C.Harrison@Intel.com wrote:
>> From: John Harrison <John.C.Harrison@Intel.com>
>>
>> Update a bunch more debug prints to use the new GT based scheme.
>>
>> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
>> ---
>> drivers/gpu/drm/i915/gt/uc/selftest_guc.c | 35 ++++++++++---------
>> .../drm/i915/gt/uc/selftest_guc_hangcheck.c | 23 ++++++------
>> .../drm/i915/gt/uc/selftest_guc_multi_lrc.c | 11 +++---
>> 3 files changed, 36 insertions(+), 33 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
>> index e28518fe8b908..6cc1e9c7a47d6 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
>> +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc.c
>> @@ -3,6 +3,7 @@
>> * Copyright �� 2021 Intel Corporation
>> */
>>
>> +#include "intel_guc_print.h"
> You've included right headers but then you mostly used gt_xxx() macros
> instead of guc_xxx() ones which IMHO are way more appropriate as we are
> in GuC selftests
Yeah, forgot to go back and change the include.
I started with a blanked update to guc_ instead of drm_ but only then
realised that the tests do not actually do anything so low level as to
require access the guc object. Which means having to jump through hoops
to get to a guc object purely for the purpose of using the guc debug
functions. Yes, it is a GuC specific selftest but there is no GuC
specific code in the file and that is really the criteria used for the
debug print decision.
John.
>
> Michal
>
>> #include "selftests/igt_spinner.h"
>> #include "selftests/intel_scheduler_helpers.h"
>>
>> @@ -65,7 +66,7 @@ static int intel_guc_scrub_ctbs(void *arg)
>> ce = intel_context_create(engine);
>> if (IS_ERR(ce)) {
>> ret = PTR_ERR(ce);
>> - drm_err(>->i915->drm, "Failed to create context, %d: %d\n", i, ret);
>> + gt_err(gt, "Failed to create context, %d: %d\n", i, ret);
>> goto err;
>> }
>>
>> @@ -86,7 +87,7 @@ static int intel_guc_scrub_ctbs(void *arg)
>>
>> if (IS_ERR(rq)) {
>> ret = PTR_ERR(rq);
>> - drm_err(>->i915->drm, "Failed to create request, %d: %d\n", i, ret);
>> + gt_err(gt, "Failed to create request, %d: %d\n", i, ret);
>> goto err;
>> }
>>
>> @@ -96,7 +97,7 @@ static int intel_guc_scrub_ctbs(void *arg)
>> for (i = 0; i < 3; ++i) {
>> ret = i915_request_wait(last[i], 0, HZ);
>> if (ret < 0) {
>> - drm_err(>->i915->drm, "Last request failed to complete: %d\n", ret);
>> + gt_err(gt, "Last request failed to complete: %d\n", ret);
>> goto err;
>> }
>> i915_request_put(last[i]);
>> @@ -113,7 +114,7 @@ static int intel_guc_scrub_ctbs(void *arg)
>> /* GT will not idle if G2H are lost */
>> ret = intel_gt_wait_for_idle(gt, HZ);
>> if (ret < 0) {
>> - drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
>> + gt_err(gt, "GT failed to idle: %d\n", ret);
>> goto err;
>> }
>>
>> @@ -153,7 +154,7 @@ static int intel_guc_steal_guc_ids(void *arg)
>>
>> ce = kcalloc(GUC_MAX_CONTEXT_ID, sizeof(*ce), GFP_KERNEL);
>> if (!ce) {
>> - drm_err(>->i915->drm, "Context array allocation failed\n");
>> + guc_err(guc, "Context array allocation failed\n");
>> return -ENOMEM;
>> }
>>
>> @@ -167,24 +168,24 @@ static int intel_guc_steal_guc_ids(void *arg)
>> if (IS_ERR(ce[context_index])) {
>> ret = PTR_ERR(ce[context_index]);
>> ce[context_index] = NULL;
>> - drm_err(>->i915->drm, "Failed to create context: %d\n", ret);
>> + guc_err(guc, "Failed to create context: %d\n", ret);
>> goto err_wakeref;
>> }
>> ret = igt_spinner_init(&spin, engine->gt);
>> if (ret) {
>> - drm_err(>->i915->drm, "Failed to create spinner: %d\n", ret);
>> + guc_err(guc, "Failed to create spinner: %d\n", ret);
>> goto err_contexts;
>> }
>> spin_rq = igt_spinner_create_request(&spin, ce[context_index],
>> MI_ARB_CHECK);
>> if (IS_ERR(spin_rq)) {
>> ret = PTR_ERR(spin_rq);
>> - drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
>> + guc_err(guc, "Failed to create spinner request: %d\n", ret);
>> goto err_contexts;
>> }
>> ret = request_add_spin(spin_rq, &spin);
>> if (ret) {
>> - drm_err(>->i915->drm, "Failed to add Spinner request: %d\n", ret);
>> + guc_err(guc, "Failed to add Spinner request: %d\n", ret);
>> goto err_spin_rq;
>> }
>>
>> @@ -194,7 +195,7 @@ static int intel_guc_steal_guc_ids(void *arg)
>> if (IS_ERR(ce[context_index])) {
>> ret = PTR_ERR(ce[context_index--]);
>> ce[context_index] = NULL;
>> - drm_err(>->i915->drm, "Failed to create context: %d\n", ret);
>> + guc_err(guc, "Failed to create context: %d\n", ret);
>> goto err_spin_rq;
>> }
>>
>> @@ -203,7 +204,7 @@ static int intel_guc_steal_guc_ids(void *arg)
>> ret = PTR_ERR(rq);
>> rq = NULL;
>> if (ret != -EAGAIN) {
>> - drm_err(>->i915->drm, "Failed to create request, %d: %d\n",
>> + guc_err(guc, "Failed to create request, %d: %d\n",
>> context_index, ret);
>> goto err_spin_rq;
>> }
>> @@ -218,7 +219,7 @@ static int intel_guc_steal_guc_ids(void *arg)
>> igt_spinner_end(&spin);
>> ret = intel_selftest_wait_for_rq(spin_rq);
>> if (ret) {
>> - drm_err(>->i915->drm, "Spin request failed to complete: %d\n", ret);
>> + guc_err(guc, "Spin request failed to complete: %d\n", ret);
>> i915_request_put(last);
>> goto err_spin_rq;
>> }
>> @@ -230,7 +231,7 @@ static int intel_guc_steal_guc_ids(void *arg)
>> ret = i915_request_wait(last, 0, HZ * 30);
>> i915_request_put(last);
>> if (ret < 0) {
>> - drm_err(>->i915->drm, "Last request failed to complete: %d\n", ret);
>> + guc_err(guc, "Last request failed to complete: %d\n", ret);
>> goto err_spin_rq;
>> }
>>
>> @@ -238,7 +239,7 @@ static int intel_guc_steal_guc_ids(void *arg)
>> rq = nop_user_request(ce[context_index], NULL);
>> if (IS_ERR(rq)) {
>> ret = PTR_ERR(rq);
>> - drm_err(>->i915->drm, "Failed to steal guc_id, %d: %d\n", context_index, ret);
>> + guc_err(guc, "Failed to steal guc_id, %d: %d\n", context_index, ret);
>> goto err_spin_rq;
>> }
>>
>> @@ -246,20 +247,20 @@ static int intel_guc_steal_guc_ids(void *arg)
>> ret = i915_request_wait(rq, 0, HZ);
>> i915_request_put(rq);
>> if (ret < 0) {
>> - drm_err(>->i915->drm, "Request with stolen guc_id failed to complete: %d\n", ret);
>> + guc_err(guc, "Request with stolen guc_id failed to complete: %d\n", ret);
>> goto err_spin_rq;
>> }
>>
>> /* Wait for idle */
>> ret = intel_gt_wait_for_idle(gt, HZ * 30);
>> if (ret < 0) {
>> - drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
>> + guc_err(guc, "GT failed to idle: %d\n", ret);
>> goto err_spin_rq;
>> }
>>
>> /* Verify a guc_id was stolen */
>> if (guc->number_guc_id_stolen == number_guc_id_stolen) {
>> - drm_err(>->i915->drm, "No guc_id was stolen");
>> + guc_err(guc, "No guc_id was stolen");
>> ret = -EINVAL;
>> } else {
>> ret = 0;
>> diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
>> index d91b58f704039..fffe95ac15c4e 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
>> +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_hangcheck.c
>> @@ -3,6 +3,7 @@
>> * Copyright © 2022 Intel Corporation
>> */
>>
>> +#include "intel_guc_print.h"
>> #include "selftests/igt_spinner.h"
>> #include "selftests/igt_reset.h"
>> #include "selftests/intel_scheduler_helpers.h"
>> @@ -45,7 +46,7 @@ static int intel_hang_guc(void *arg)
>>
>> ctx = kernel_context(gt->i915, NULL);
>> if (IS_ERR(ctx)) {
>> - drm_err(>->i915->drm, "Failed get kernel context: %ld\n", PTR_ERR(ctx));
>> + gt_err(gt, "Failed get kernel context: %ld\n", PTR_ERR(ctx));
>> return PTR_ERR(ctx);
>> }
>>
>> @@ -54,7 +55,7 @@ static int intel_hang_guc(void *arg)
>> ce = intel_context_create(engine);
>> if (IS_ERR(ce)) {
>> ret = PTR_ERR(ce);
>> - drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
>> + gt_err(gt, "Failed to create spinner request: %d\n", ret);
>> goto err;
>> }
>>
>> @@ -63,13 +64,13 @@ static int intel_hang_guc(void *arg)
>> old_beat = engine->props.heartbeat_interval_ms;
>> ret = intel_engine_set_heartbeat(engine, BEAT_INTERVAL);
>> if (ret) {
>> - drm_err(>->i915->drm, "Failed to boost heatbeat interval: %d\n", ret);
>> + gt_err(gt, "Failed to boost heatbeat interval: %d\n", ret);
>> goto err;
>> }
>>
>> ret = igt_spinner_init(&spin, engine->gt);
>> if (ret) {
>> - drm_err(>->i915->drm, "Failed to create spinner: %d\n", ret);
>> + gt_err(gt, "Failed to create spinner: %d\n", ret);
>> goto err;
>> }
>>
>> @@ -77,28 +78,28 @@ static int intel_hang_guc(void *arg)
>> intel_context_put(ce);
>> if (IS_ERR(rq)) {
>> ret = PTR_ERR(rq);
>> - drm_err(>->i915->drm, "Failed to create spinner request: %d\n", ret);
>> + gt_err(gt, "Failed to create spinner request: %d\n", ret);
>> goto err_spin;
>> }
>>
>> ret = request_add_spin(rq, &spin);
>> if (ret) {
>> i915_request_put(rq);
>> - drm_err(>->i915->drm, "Failed to add Spinner request: %d\n", ret);
>> + gt_err(gt, "Failed to add Spinner request: %d\n", ret);
>> goto err_spin;
>> }
>>
>> ret = intel_reset_guc(gt);
>> if (ret) {
>> i915_request_put(rq);
>> - drm_err(>->i915->drm, "Failed to reset GuC, ret = %d\n", ret);
>> + gt_err(gt, "Failed to reset GuC, ret = %d\n", ret);
>> goto err_spin;
>> }
>>
>> guc_status = intel_uncore_read(gt->uncore, GUC_STATUS);
>> if (!(guc_status & GS_MIA_IN_RESET)) {
>> i915_request_put(rq);
>> - drm_err(>->i915->drm, "GuC failed to reset: status = 0x%08X\n", guc_status);
>> + gt_err(gt, "Failed to reset GuC: status = 0x%08X\n", guc_status);
>> ret = -EIO;
>> goto err_spin;
>> }
>> @@ -107,12 +108,12 @@ static int intel_hang_guc(void *arg)
>> ret = intel_selftest_wait_for_rq(rq);
>> i915_request_put(rq);
>> if (ret) {
>> - drm_err(>->i915->drm, "Request failed to complete: %d\n", ret);
>> + gt_err(gt, "Request failed to complete: %d\n", ret);
>> goto err_spin;
>> }
>>
>> if (i915_reset_count(global) == reset_count) {
>> - drm_err(>->i915->drm, "Failed to record a GPU reset\n");
>> + gt_err(gt, "Failed to record a GPU reset\n");
>> ret = -EINVAL;
>> goto err_spin;
>> }
>> @@ -132,7 +133,7 @@ static int intel_hang_guc(void *arg)
>> ret = intel_selftest_wait_for_rq(rq);
>> i915_request_put(rq);
>> if (ret) {
>> - drm_err(>->i915->drm, "No-op failed to complete: %d\n", ret);
>> + gt_err(gt, "No-op failed to complete: %d\n", ret);
>> goto err;
>> }
>> }
>> diff --git a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
>> index d17982c36d256..0e64be0918ae5 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
>> +++ b/drivers/gpu/drm/i915/gt/uc/selftest_guc_multi_lrc.c
>> @@ -3,6 +3,7 @@
>> * Copyright �� 2019 Intel Corporation
>> */
>>
>> +#include "intel_guc_print.h"
>> #include "selftests/igt_spinner.h"
>> #include "selftests/igt_reset.h"
>> #include "selftests/intel_scheduler_helpers.h"
>> @@ -115,30 +116,30 @@ static int __intel_guc_multi_lrc_basic(struct intel_gt *gt, unsigned int class)
>>
>> parent = multi_lrc_create_parent(gt, class, 0);
>> if (IS_ERR(parent)) {
>> - drm_err(>->i915->drm, "Failed creating contexts: %ld", PTR_ERR(parent));
>> + gt_err(gt, "Failed creating contexts: %ld\n", PTR_ERR(parent));
>> return PTR_ERR(parent);
>> } else if (!parent) {
>> - drm_dbg(>->i915->drm, "Not enough engines in class: %d", class);
>> + gt_dbg(gt, "Not enough engines in class: %d\n", class);
>> return 0;
>> }
>>
>> rq = multi_lrc_nop_request(parent);
>> if (IS_ERR(rq)) {
>> ret = PTR_ERR(rq);
>> - drm_err(>->i915->drm, "Failed creating requests: %d", ret);
>> + gt_err(gt, "Failed creating requests: %d\n", ret);
>> goto out;
>> }
>>
>> ret = intel_selftest_wait_for_rq(rq);
>> if (ret)
>> - drm_err(>->i915->drm, "Failed waiting on request: %d", ret);
>> + gt_err(gt, "Failed waiting on request: %d\n", ret);
>>
>> i915_request_put(rq);
>>
>> if (ret >= 0) {
>> ret = intel_gt_wait_for_idle(gt, HZ * 5);
>> if (ret < 0)
>> - drm_err(>->i915->drm, "GT failed to idle: %d\n", ret);
>> + gt_err(gt, "GT failed to idle: %d\n", ret);
>> }
>>
>> out:
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 3/6] drm/i915/guc: More debug print updates - GuC reg capture
2023-02-03 0:11 ` [Intel-gfx] [PATCH 3/6] drm/i915/guc: More debug print updates - GuC reg capture John.C.Harrison
@ 2023-02-04 8:19 ` Teres Alexis, Alan Previn
2023-02-07 2:55 ` John Harrison
0 siblings, 1 reply; 18+ messages in thread
From: Teres Alexis, Alan Previn @ 2023-02-04 8:19 UTC (permalink / raw)
To: Harrison, John C, Intel-GFX@Lists.FreeDesktop.Org
Cc: DRI-Devel@Lists.FreeDesktop.Org
So i do have one request - but its a nit - for the following case, should it be a guc_warn instead of a guc_dbg?
(last hunk in this patch)
"No register capture node found for 0x%04X / 0x%08X\n",
ce->guc_id.id, ce->lrc.lrca);"
Otherwise LGTM,
Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>
On Thu, 2023-02-02 at 16:11 -0800, John.C.Harrison@Intel.com wrote:
> From: John Harrison <John.C.Harrison@Intel.com>
>
> Update a bunch more debug prints to use the new GT based scheme.
>
> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
> ---
> .../gpu/drm/i915/gt/uc/intel_guc_capture.c | 51 ++++++++-----------
> 1 file changed, 21 insertions(+), 30 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
> index fc3b994626a4f..5f6e3594dda62 100644
> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
> @@ -15,6 +15,7 @@
alan:snip
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [Intel-gfx] [PATCH 3/6] drm/i915/guc: More debug print updates - GuC reg capture
2023-02-04 8:19 ` Teres Alexis, Alan Previn
@ 2023-02-07 2:55 ` John Harrison
0 siblings, 0 replies; 18+ messages in thread
From: John Harrison @ 2023-02-07 2:55 UTC (permalink / raw)
To: Teres Alexis, Alan Previn, Intel-GFX@Lists.FreeDesktop.Org
Cc: DRI-Devel@Lists.FreeDesktop.Org
On 2/4/2023 00:19, Teres Alexis, Alan Previn wrote:
> So i do have one request - but its a nit - for the following case, should it be a guc_warn instead of a guc_dbg?
> (last hunk in this patch)
> "No register capture node found for 0x%04X / 0x%08X\n",
> ce->guc_id.id, ce->lrc.lrca);"
Did that get discussed in the original code review? I vaguely recall
some reason for it not being a warning. But maybe I'm thinking of
something else?
> Otherwise LGTM,
> Reviewed-by: Alan Previn <alan.previn.teres.alexis@intel.com>
>
> On Thu, 2023-02-02 at 16:11 -0800, John.C.Harrison@Intel.com wrote:
>> From: John Harrison <John.C.Harrison@Intel.com>
>>
>> Update a bunch more debug prints to use the new GT based scheme.
>>
>> Signed-off-by: John Harrison <John.C.Harrison@Intel.com>
>> ---
>> .../gpu/drm/i915/gt/uc/intel_guc_capture.c | 51 ++++++++-----------
>> 1 file changed, 21 insertions(+), 30 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
>> index fc3b994626a4f..5f6e3594dda62 100644
>> --- a/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
>> +++ b/drivers/gpu/drm/i915/gt/uc/intel_guc_capture.c
>> @@ -15,6 +15,7 @@
> alan:snip
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2023-02-07 2:55 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-03 0:11 [Intel-gfx] [PATCH 0/6] More drm_dbg to guc_dbg changes John.C.Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 1/6] drm/i915/guc: More debug print updates - UC firmware John.C.Harrison
2023-02-03 9:39 ` Michal Wajdeczko
2023-02-03 17:35 ` John Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 2/6] drm/i915/guc: More debug print updates - GSC firmware John.C.Harrison
2023-02-03 9:43 ` Michal Wajdeczko
2023-02-03 0:11 ` [Intel-gfx] [PATCH 3/6] drm/i915/guc: More debug print updates - GuC reg capture John.C.Harrison
2023-02-04 8:19 ` Teres Alexis, Alan Previn
2023-02-07 2:55 ` John Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 4/6] drm/i915/guc: More debug print updates - GuC selftests John.C.Harrison
2023-02-03 9:54 ` Michal Wajdeczko
2023-02-03 17:43 ` John Harrison
2023-02-03 0:11 ` [Intel-gfx] [PATCH 5/6] drm/i915/guc: More debug print updates - GuC SLPC John.C.Harrison
2023-02-03 10:00 ` Michal Wajdeczko
2023-02-03 0:11 ` [Intel-gfx] [PATCH 6/6] drm/i915/guc: More debug print updates - GuC logging John.C.Harrison
2023-02-03 10:02 ` Michal Wajdeczko
2023-02-03 1:18 ` [Intel-gfx] ✗ Fi.CI.SPARSE: warning for More drm_dbg to guc_dbg changes Patchwork
2023-02-03 12:24 ` [Intel-gfx] ✗ Fi.CI.BAT: failure " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox