summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_sema_service.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/gsp_sema_service.c')
-rw-r--r--kernel/gsp_sema_service.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/kernel/gsp_sema_service.c b/kernel/gsp_sema_service.c
index 4655e77..6cb7034 100644
--- a/kernel/gsp_sema_service.c
+++ b/kernel/gsp_sema_service.c
@@ -27987,7 +27987,7 @@ static void svc_ddx_head_decode(struct nv_vgpu_device *vgpu,
ring_ap, ent, sizeof(ent))) {
reason = "unreadable";
head_unreadable = true;
- break;
+ continue;
}
memcpy(&e0, ent, 4);
memcpy(&e1, ent + 4, 4);
@@ -28017,17 +28017,20 @@ static void svc_ddx_head_decode(struct nv_vgpu_device *vgpu,
if (svc_read_va_push(vgpu, ch, va, buf, len)) {
reason = "unreadable";
head_unreadable = true;
- break;
+ continue;
}
if (!memchr_inv(buf, 0, len)) {
/*
* The push read succeeded but answered an all-zero
* page (a stale/zero translation): there is no
- * release to decode and no value to apply.
+ * release to decode and no value to apply. c746:
+ * the ring head is a zero dummy entry and the real
+ * C36F release sits at a later slot, so scan past
+ * it (bounded) instead of stopping the pass.
*/
reason = "zero-payload";
head_unreadable = true;
- break;
+ continue;
}
mark = svc_rel_count;
/*