Symbol: g2h_fence
drivers/gpu/drm/xe/xe_guc_ct.c
1055
struct g2h_fence *g2h_fence)
drivers/gpu/drm/xe/xe_guc_ct.c
1062
xe_gt_assert(gt, !g2h_len || !g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1063
xe_gt_assert(gt, !num_g2h || !g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1085
if (g2h_fence) {
drivers/gpu/drm/xe/xe_guc_ct.c
1089
if (g2h_fence_needs_alloc(g2h_fence)) {
drivers/gpu/drm/xe/xe_guc_ct.c
1090
g2h_fence->seqno = next_ct_seqno(ct, true);
drivers/gpu/drm/xe/xe_guc_ct.c
1092
g2h_fence->seqno, g2h_fence,
drivers/gpu/drm/xe/xe_guc_ct.c
1098
seqno = g2h_fence->seqno;
drivers/gpu/drm/xe/xe_guc_ct.c
1110
ret = h2g_write(ct, action, len, seqno, !!g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1138
u32 g2h_len, struct g2h_fence *g2h_fence,
drivers/gpu/drm/xe/xe_guc_ct.c
1170
g2h_fence ?
drivers/gpu/drm/xe/xe_guc_ct.c
1194
struct g2h_fence *g2h_fence)
drivers/gpu/drm/xe/xe_guc_ct.c
1201
xe_gt_assert(gt, !g2h_len || !g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1207
g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1210
if (!guc_ct_send_wait_for_retry(ct, len, g2h_len, g2h_fence,
drivers/gpu/drm/xe/xe_guc_ct.c
1226
u32 g2h_len, u32 num_g2h, struct g2h_fence *g2h_fence)
drivers/gpu/drm/xe/xe_guc_ct.c
1230
xe_gt_assert(ct_to_gt(ct), !g2h_len || !g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1233
ret = guc_ct_send_locked(ct, action, len, g2h_len, num_g2h, g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1302
struct g2h_fence g2h_fence;
drivers/gpu/drm/xe/xe_guc_ct.c
1315
g2h_fence_init(&g2h_fence, response_buffer);
drivers/gpu/drm/xe/xe_guc_ct.c
1317
ret = guc_ct_send(ct, action, len, 0, 0, &g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1320
ret = xa_err(xa_store(&ct->fence_lookup, g2h_fence.seqno,
drivers/gpu/drm/xe/xe_guc_ct.c
1321
&g2h_fence, GFP_KERNEL));
drivers/gpu/drm/xe/xe_guc_ct.c
1333
if (!g2h_fence_needs_alloc(&g2h_fence))
drivers/gpu/drm/xe/xe_guc_ct.c
1334
xa_erase(&ct->fence_lookup, g2h_fence.seqno);
drivers/gpu/drm/xe/xe_guc_ct.c
1343
ret = wait_event_timeout(ct->g2h_fence_wq, READ_ONCE(g2h_fence.done), HZ);
drivers/gpu/drm/xe/xe_guc_ct.c
1346
if (READ_ONCE(g2h_fence.done)) {
drivers/gpu/drm/xe/xe_guc_ct.c
1348
g2h_fence.seqno, action[0]);
drivers/gpu/drm/xe/xe_guc_ct.c
1362
g2h_fence.seqno, action[0], str_yes_no(g2h_fence.done));
drivers/gpu/drm/xe/xe_guc_ct.c
1363
xa_erase(&ct->fence_lookup, g2h_fence.seqno);
drivers/gpu/drm/xe/xe_guc_ct.c
1368
if (g2h_fence.wait) {
drivers/gpu/drm/xe/xe_guc_ct.c
1370
action[0], g2h_fence.counter);
drivers/gpu/drm/xe/xe_guc_ct.c
1372
g2h_fence_reinit(&g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1376
if (g2h_fence.retry) {
drivers/gpu/drm/xe/xe_guc_ct.c
1378
action[0], g2h_fence.reason);
drivers/gpu/drm/xe/xe_guc_ct.c
1388
if (g2h_fence.fail) {
drivers/gpu/drm/xe/xe_guc_ct.c
1389
if (g2h_fence.cancel) {
drivers/gpu/drm/xe/xe_guc_ct.c
1395
action[0], g2h_fence.error, g2h_fence.hint);
drivers/gpu/drm/xe/xe_guc_ct.c
1400
ret = response_buffer ? g2h_fence.response_len : g2h_fence.response_data;
drivers/gpu/drm/xe/xe_guc_ct.c
1495
struct g2h_fence *g2h_fence;
drivers/gpu/drm/xe/xe_guc_ct.c
1530
g2h_fence = xa_load(&ct->fence_lookup, fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1532
g2h_fence = xa_erase(&ct->fence_lookup, fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1534
if (unlikely(!g2h_fence)) {
drivers/gpu/drm/xe/xe_guc_ct.c
1542
xe_gt_assert(gt, fence == g2h_fence->seqno);
drivers/gpu/drm/xe/xe_guc_ct.c
1548
g2h_fence_reinit(g2h_fence);
drivers/gpu/drm/xe/xe_guc_ct.c
1551
g2h_fence->fail = true;
drivers/gpu/drm/xe/xe_guc_ct.c
1552
g2h_fence->error = FIELD_GET(GUC_HXG_FAILURE_MSG_0_ERROR, hxg[0]);
drivers/gpu/drm/xe/xe_guc_ct.c
1553
g2h_fence->hint = FIELD_GET(GUC_HXG_FAILURE_MSG_0_HINT, hxg[0]);
drivers/gpu/drm/xe/xe_guc_ct.c
1555
g2h_fence->retry = true;
drivers/gpu/drm/xe/xe_guc_ct.c
1556
g2h_fence->reason = FIELD_GET(GUC_HXG_RETRY_MSG_0_REASON, hxg[0]);
drivers/gpu/drm/xe/xe_guc_ct.c
1558
g2h_fence->wait = true;
drivers/gpu/drm/xe/xe_guc_ct.c
1559
g2h_fence->counter = FIELD_GET(GUC_HXG_BUSY_MSG_0_COUNTER, hxg[0]);
drivers/gpu/drm/xe/xe_guc_ct.c
1560
} else if (g2h_fence->response_buffer) {
drivers/gpu/drm/xe/xe_guc_ct.c
1561
g2h_fence->response_len = hxg_len;
drivers/gpu/drm/xe/xe_guc_ct.c
1562
memcpy(g2h_fence->response_buffer, hxg, hxg_len * sizeof(u32));
drivers/gpu/drm/xe/xe_guc_ct.c
1564
g2h_fence->response_data = FIELD_GET(GUC_HXG_RESPONSE_MSG_0_DATA0, hxg[0]);
drivers/gpu/drm/xe/xe_guc_ct.c
1568
if (!g2h_fence->wait)
drivers/gpu/drm/xe/xe_guc_ct.c
1572
WRITE_ONCE(g2h_fence->done, true);
drivers/gpu/drm/xe/xe_guc_ct.c
203
static void g2h_fence_init(struct g2h_fence *g2h_fence, u32 *response_buffer)
drivers/gpu/drm/xe/xe_guc_ct.c
205
memset(g2h_fence, 0, sizeof(*g2h_fence));
drivers/gpu/drm/xe/xe_guc_ct.c
206
g2h_fence->response_buffer = response_buffer;
drivers/gpu/drm/xe/xe_guc_ct.c
207
g2h_fence->seqno = ~0x0;
drivers/gpu/drm/xe/xe_guc_ct.c
210
static void g2h_fence_reinit(struct g2h_fence *g2h_fence)
drivers/gpu/drm/xe/xe_guc_ct.c
212
memset_after(g2h_fence, 0, seqno);
drivers/gpu/drm/xe/xe_guc_ct.c
215
static void g2h_fence_cancel(struct g2h_fence *g2h_fence)
drivers/gpu/drm/xe/xe_guc_ct.c
217
g2h_fence->cancel = true;
drivers/gpu/drm/xe/xe_guc_ct.c
218
g2h_fence->fail = true;
drivers/gpu/drm/xe/xe_guc_ct.c
221
WRITE_ONCE(g2h_fence->done, true);
drivers/gpu/drm/xe/xe_guc_ct.c
224
static bool g2h_fence_needs_alloc(struct g2h_fence *g2h_fence)
drivers/gpu/drm/xe/xe_guc_ct.c
226
return g2h_fence->seqno == ~0x0;
drivers/gpu/drm/xe/xe_guc_ct.c
545
struct g2h_fence *g2h_fence;
drivers/gpu/drm/xe/xe_guc_ct.c
571
xa_for_each(&ct->fence_lookup, idx, g2h_fence)
drivers/gpu/drm/xe/xe_guc_ct.c
572
g2h_fence_cancel(g2h_fence);