diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-11 22:41:26 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-11 22:41:26 -0400 |
| commit | d02b8531472bc6c06e2a231c45ebf5cd3ecb6edd (patch) | |
| tree | 3af7a2722b417763170fd5249ecb6c3def761911 | |
| parent | 2d1afd5d04bd61bbea3d63ede5c020684963ca4c (diff) | |
| download | open-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.
| -rw-r--r-- | kernel/gsp_phys_booter.c | 16 |
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) |
