summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorSasha Levin <sashal@kernel.org>2025-09-28 11:43:00 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-10-02 13:48:34 +0200
commit908478fe5884835c1d54db9f9b55e7506fd2e1b1 (patch)
tree0bed7d1c037900974ac984b9ef1442b47696e2e5 /drivers
parente35eeb3a8eaf8f264638a7cc5a8dfff4f70efad0 (diff)
downloadlinux-908478fe5884835c1d54db9f9b55e7506fd2e1b1.tar.gz
linux-908478fe5884835c1d54db9f9b55e7506fd2e1b1.tar.bz2
linux-908478fe5884835c1d54db9f9b55e7506fd2e1b1.zip
Revert "drm/xe/guc: Enable extended CAT error reporting"
This reverts commit a7ffcea8631af91479cab10aa7fbfd0722f01d9a. Reported-by: Iyán Méndez Veiga <me@iyanmv.com> Link: https://lore.kernel.org/stable/aNlW7ekiC0dNPxU3@laps/T/#t Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/xe/abi/guc_actions_abi.h4
-rw-r--r--drivers/gpu/drm/xe/abi/guc_klvs_abi.h15
-rw-r--r--drivers/gpu/drm/xe/xe_guc.c56
-rw-r--r--drivers/gpu/drm/xe/xe_guc.h1
-rw-r--r--drivers/gpu/drm/xe/xe_guc_submit.c21
-rw-r--r--drivers/gpu/drm/xe/xe_uc.c4
6 files changed, 3 insertions, 98 deletions
diff --git a/drivers/gpu/drm/xe/abi/guc_actions_abi.h b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
index b55d4cfb483a..448afb86e05c 100644
--- a/drivers/gpu/drm/xe/abi/guc_actions_abi.h
+++ b/drivers/gpu/drm/xe/abi/guc_actions_abi.h
@@ -142,7 +142,6 @@ enum xe_guc_action {
XE_GUC_ACTION_SET_ENG_UTIL_BUFF = 0x550A,
XE_GUC_ACTION_SET_DEVICE_ENGINE_ACTIVITY_BUFFER = 0x550C,
XE_GUC_ACTION_SET_FUNCTION_ENGINE_ACTIVITY_BUFFER = 0x550D,
- XE_GUC_ACTION_OPT_IN_FEATURE_KLV = 0x550E,
XE_GUC_ACTION_NOTIFY_MEMORY_CAT_ERROR = 0x6000,
XE_GUC_ACTION_REPORT_PAGE_FAULT_REQ_DESC = 0x6002,
XE_GUC_ACTION_PAGE_FAULT_RES_DESC = 0x6003,
@@ -241,7 +240,4 @@ enum xe_guc_g2g_type {
#define XE_G2G_DEREGISTER_TILE REG_GENMASK(15, 12)
#define XE_G2G_DEREGISTER_TYPE REG_GENMASK(11, 8)
-/* invalid type for XE_GUC_ACTION_NOTIFY_MEMORY_CAT_ERROR */
-#define XE_GUC_CAT_ERR_TYPE_INVALID 0xdeadbeef
-
#endif
diff --git a/drivers/gpu/drm/xe/abi/guc_klvs_abi.h b/drivers/gpu/drm/xe/abi/guc_klvs_abi.h
index 5b2502bec2dc..7de8f827281f 100644
--- a/drivers/gpu/drm/xe/abi/guc_klvs_abi.h
+++ b/drivers/gpu/drm/xe/abi/guc_klvs_abi.h
@@ -16,7 +16,6 @@
* +===+=======+==============================================================+
* | 0 | 31:16 | **KEY** - KLV key identifier |
* | | | - `GuC Self Config KLVs`_ |
- * | | | - `GuC Opt In Feature KLVs`_ |
* | | | - `GuC VGT Policy KLVs`_ |
* | | | - `GuC VF Configuration KLVs`_ |
* | | | |
@@ -126,20 +125,6 @@ enum {
};
/**
- * DOC: GuC Opt In Feature KLVs
- *
- * `GuC KLV`_ keys available for use with OPT_IN_FEATURE_KLV
- *
- * _`GUC_KLV_OPT_IN_FEATURE_EXT_CAT_ERR_TYPE` : 0x4001
- * Adds an extra dword to the XE_GUC_ACTION_NOTIFY_MEMORY_CAT_ERROR G2H
- * containing the type of the CAT error. On HW that does not support
- * reporting the CAT error type, the extra dword is set to 0xdeadbeef.
- */
-
-#define GUC_KLV_OPT_IN_FEATURE_EXT_CAT_ERR_TYPE_KEY 0x4001
-#define GUC_KLV_OPT_IN_FEATURE_EXT_CAT_ERR_TYPE_LEN 0u
-
-/**
* DOC: GuC VGT Policy KLVs
*
* `GuC KLV`_ keys available for use with PF2GUC_UPDATE_VGT_POLICY.
diff --git a/drivers/gpu/drm/xe/xe_guc.c b/drivers/gpu/drm/xe/xe_guc.c
index 2efc0298e1a4..bac5471a1a78 100644
--- a/drivers/gpu/drm/xe/xe_guc.c
+++ b/drivers/gpu/drm/xe/xe_guc.c
@@ -29,7 +29,6 @@
#include "xe_guc_db_mgr.h"
#include "xe_guc_engine_activity.h"
#include "xe_guc_hwconfig.h"
-#include "xe_guc_klv_helpers.h"
#include "xe_guc_log.h"
#include "xe_guc_pc.h"
#include "xe_guc_relay.h"
@@ -571,57 +570,6 @@ err_deregister:
return err;
}
-static int __guc_opt_in_features_enable(struct xe_guc *guc, u64 addr, u32 num_dwords)
-{
- u32 action[] = {
- XE_GUC_ACTION_OPT_IN_FEATURE_KLV,
- lower_32_bits(addr),
- upper_32_bits(addr),
- num_dwords
- };
-
- return xe_guc_ct_send_block(&guc->ct, action, ARRAY_SIZE(action));
-}
-
-#define OPT_IN_MAX_DWORDS 16
-int xe_guc_opt_in_features_enable(struct xe_guc *guc)
-{
- struct xe_device *xe = guc_to_xe(guc);
- CLASS(xe_guc_buf, buf)(&guc->buf, OPT_IN_MAX_DWORDS);
- u32 count = 0;
- u32 *klvs;
- int ret;
-
- if (!xe_guc_buf_is_valid(buf))
- return -ENOBUFS;
-
- klvs = xe_guc_buf_cpu_ptr(buf);
-
- /*
- * The extra CAT error type opt-in was added in GuC v70.17.0, which maps
- * to compatibility version v1.7.0.
- * Note that the GuC allows enabling this KLV even on platforms that do
- * not support the extra type; in such case the returned type variable
- * will be set to a known invalid value which we can check against.
- */
- if (GUC_SUBMIT_VER(guc) >= MAKE_GUC_VER(1, 7, 0))
- klvs[count++] = PREP_GUC_KLV_TAG(OPT_IN_FEATURE_EXT_CAT_ERR_TYPE);
-
- if (count) {
- xe_assert(xe, count <= OPT_IN_MAX_DWORDS);
-
- ret = __guc_opt_in_features_enable(guc, xe_guc_buf_flush(buf), count);
- if (ret < 0) {
- xe_gt_err(guc_to_gt(guc),
- "failed to enable GuC opt-in features: %pe\n",
- ERR_PTR(ret));
- return ret;
- }
- }
-
- return 0;
-}
-
static void guc_fini_hw(void *arg)
{
struct xe_guc *guc = arg;
@@ -815,10 +763,6 @@ int xe_guc_post_load_init(struct xe_guc *guc)
xe_guc_ads_populate_post_load(&guc->ads);
- ret = xe_guc_opt_in_features_enable(guc);
- if (ret)
- return ret;
-
if (xe_guc_g2g_wanted(guc_to_xe(guc))) {
ret = guc_g2g_start(guc);
if (ret)
diff --git a/drivers/gpu/drm/xe/xe_guc.h b/drivers/gpu/drm/xe/xe_guc.h
index 4a66575f017d..58338be44558 100644
--- a/drivers/gpu/drm/xe/xe_guc.h
+++ b/drivers/gpu/drm/xe/xe_guc.h
@@ -33,7 +33,6 @@ int xe_guc_reset(struct xe_guc *guc);
int xe_guc_upload(struct xe_guc *guc);
int xe_guc_min_load_for_hwconfig(struct xe_guc *guc);
int xe_guc_enable_communication(struct xe_guc *guc);
-int xe_guc_opt_in_features_enable(struct xe_guc *guc);
int xe_guc_suspend(struct xe_guc *guc);
void xe_guc_notify(struct xe_guc *guc);
int xe_guc_auth_huc(struct xe_guc *guc, u32 rsa_addr);
diff --git a/drivers/gpu/drm/xe/xe_guc_submit.c b/drivers/gpu/drm/xe/xe_guc_submit.c
index e670dcb0f093..45a21af12692 100644
--- a/drivers/gpu/drm/xe/xe_guc_submit.c
+++ b/drivers/gpu/drm/xe/xe_guc_submit.c
@@ -2088,16 +2088,12 @@ int xe_guc_exec_queue_memory_cat_error_handler(struct xe_guc *guc, u32 *msg,
struct xe_gt *gt = guc_to_gt(guc);
struct xe_exec_queue *q;
u32 guc_id;
- u32 type = XE_GUC_CAT_ERR_TYPE_INVALID;
- if (unlikely(!len || len > 2))
+ if (unlikely(len < 1))
return -EPROTO;
guc_id = msg[0];
- if (len == 2)
- type = msg[1];
-
if (guc_id == GUC_ID_UNKNOWN) {
/*
* GuC uses GUC_ID_UNKNOWN if it can not map the CAT fault to any PF/VF
@@ -2111,19 +2107,8 @@ int xe_guc_exec_queue_memory_cat_error_handler(struct xe_guc *guc, u32 *msg,
if (unlikely(!q))
return -EPROTO;
- /*
- * The type is HW-defined and changes based on platform, so we don't
- * decode it in the kernel and only check if it is valid.
- * See bspec 54047 and 72187 for details.
- */
- if (type != XE_GUC_CAT_ERR_TYPE_INVALID)
- xe_gt_dbg(gt,
- "Engine memory CAT error [%u]: class=%s, logical_mask: 0x%x, guc_id=%d",
- type, xe_hw_engine_class_to_str(q->class), q->logical_mask, guc_id);
- else
- xe_gt_dbg(gt,
- "Engine memory CAT error: class=%s, logical_mask: 0x%x, guc_id=%d",
- xe_hw_engine_class_to_str(q->class), q->logical_mask, guc_id);
+ xe_gt_dbg(gt, "Engine memory cat error: engine_class=%s, logical_mask: 0x%x, guc_id=%d",
+ xe_hw_engine_class_to_str(q->class), q->logical_mask, guc_id);
trace_xe_exec_queue_memory_cat_error(q);
diff --git a/drivers/gpu/drm/xe/xe_uc.c b/drivers/gpu/drm/xe/xe_uc.c
index 5c45b0f072a4..3a8751a8b92d 100644
--- a/drivers/gpu/drm/xe/xe_uc.c
+++ b/drivers/gpu/drm/xe/xe_uc.c
@@ -165,10 +165,6 @@ static int vf_uc_init_hw(struct xe_uc *uc)
uc->guc.submission_state.enabled = true;
- err = xe_guc_opt_in_features_enable(&uc->guc);
- if (err)
- return err;
-
err = xe_gt_record_default_lrcs(uc_to_gt(uc));
if (err)
return err;