summaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-11 22:41:26 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-11 22:41:26 -0400
commitd02b8531472bc6c06e2a231c45ebf5cd3ecb6edd (patch)
tree3af7a2722b417763170fd5249ecb6c3def761911 /kernel
parent2d1afd5d04bd61bbea3d63ede5c020684963ca4c (diff)
downloadopen-iov-d02b8531472bc6c06e2a231c45ebf5cd3ecb6edd.tar.gz
open-iov-d02b8531472bc6c06e2a231c45ebf5cd3ecb6edd.zip
vgsp-gr: log the changed bounce page indexes at copy-out (m142 diagnostic)
8 changed pages x 4 passes for smiley vs 33 for victory's vadd - the indexes name the relocated range (bi >= 0x40 = the c-pointer output window 0x150000+) and discriminate engine-side partial dispatch from a guest write-back/read attribution failure.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/gsp_phys_booter.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c
index e2c2989..2267702 100644
--- a/kernel/gsp_phys_booter.c
+++ b/kernel/gsp_phys_booter.c
@@ -17827,6 +17827,7 @@ gr_page_unmapped:
*/
if (req->n_data && boot_stage.rmcall_gr_bounce.pages) {
u32 wbi, wrote = 0, changed = 0;
+ u32 chg[8] = { };
for (wbi = 0; wbi < req->n_data; wbi++) {
u32 bi = (u32)((req->data[wbi].reloc_va -
@@ -17842,14 +17843,23 @@ gr_page_unmapped:
&boot_stage.rmcall_gr_bounce, bi);
for (ci = 0; ci < GSP_PHYS_PAGE_SIZE; ci += 4)
csum += get_unaligned_le32(src + ci);
- if (csum != bounce_csum_in[bi])
+ if (csum != bounce_csum_in[bi]) {
+ /*
+ * m142: which pages the engine touched. The
+ * indexes name the relocated VA (bi page of
+ * 0x110000); a c-range write is bi >= 0x40.
+ */
+ if (changed < 8)
+ chg[changed] = bi;
changed++;
+ }
memcpy((u8 *)__va(req->data[wbi].hpa), src,
GSP_PHYS_PAGE_SIZE);
wrote++;
}
- pr_info("vgsp-gr: bounce copy-out: %u pages written back, %u changed by engine\n",
- wrote, changed);
+ pr_info("vgsp-gr: bounce copy-out: %u pages written back, %u changed by engine (first bi: %u %u %u %u %u %u %u %u)\n",
+ wrote, changed, chg[0], chg[1], chg[2], chg[3], chg[4],
+ chg[5], chg[6], chg[7]);
}
poll = w1;
if (bar0)