[Intel-xe] [PATCH] drm/xe/guc: Return the lower part of blocking H2G message
Matthew Brost
matthew.brost at intel.com
Mon Oct 23 22:11:22 UTC 2023
The upper layers may need this data, an example of this is allocating
DIST doorbell.
v2 (Michal): Drop change of checking the return value.
Signed-off-by: Matthew Brost <matthew.brost at intel.com>
---
drivers/gpu/drm/xe/xe_guc_ct.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/xe/xe_guc_ct.c b/drivers/gpu/drm/xe/xe_guc_ct.c
index 8b686c8b3339..092a9563f80a 100644
--- a/drivers/gpu/drm/xe/xe_guc_ct.c
+++ b/drivers/gpu/drm/xe/xe_guc_ct.c
@@ -26,6 +26,7 @@
struct g2h_fence {
u32 *response_buffer;
u32 seqno;
+ u32 status;
u16 response_len;
u16 error;
u16 hint;
@@ -749,7 +750,7 @@ static int guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len,
ret = -EIO;
}
- return ret > 0 ? 0 : ret;
+ return ret > 0 ? g2h_fence.status : ret;
}
int xe_guc_ct_send_recv(struct xe_guc_ct *ct, const u32 *action, u32 len,
@@ -815,6 +816,9 @@ static int parse_g2h_response(struct xe_guc_ct *ct, u32 *msg, u32 len)
g2h_fence->response_len = response_len;
memcpy(g2h_fence->response_buffer, msg + GUC_CTB_MSG_MIN_LEN,
response_len * sizeof(u32));
+ } else {
+ g2h_fence->status =
+ FIELD_GET(GUC_HXG_RESPONSE_MSG_0_DATA0, msg[1]);
}
g2h_release_space(ct, GUC_CTB_HXG_MSG_MAX_LEN);
--
2.34.1
More information about the Intel-xe
mailing list