diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-07 16:42:10 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-07 16:42:10 -0400 |
| commit | b50dbd98915d6557c165642298b06e017f96f64c (patch) | |
| tree | 8281786740a55feee3579f42d5f75b6ca831ae79 /kernel/gsp_phys_booter.c | |
| parent | d94b2896594771917e388231588fae34f921e226 (diff) | |
| download | open-iov-b50dbd98915d6557c165642298b06e017f96f64c.tar.gz open-iov-b50dbd98915d6557c165642298b06e017f96f64c.zip | |
vgsp: m120 - data-fill 32 pages/ptr under the 100 cap + rewrite hit/coverage logging + param 0x150 dump + main-PT slot dump
Diffstat (limited to 'kernel/gsp_phys_booter.c')
| -rw-r--r-- | kernel/gsp_phys_booter.c | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/kernel/gsp_phys_booter.c b/kernel/gsp_phys_booter.c index c2776a0..39c8a3a 100644 --- a/kernel/gsp_phys_booter.c +++ b/kernel/gsp_phys_booter.c @@ -16335,6 +16335,12 @@ static void gsp_phys_gr_rewrite_data_vars(u32 *w, u32 n_words, if (req->data[x].va != wb || !req->data[x].reloc_va) continue; + /* m120: log the hit site so coverage is provable. */ + if (rew < 16) + pr_info("vgsp-gr: bank %u hit @0x%x: 0x%llx -> 0x%llx\n", + bank, k * 4, v, + req->data[x].reloc_va | + (v & 0xfffULL)); v = req->data[x].reloc_va | (v & 0xfffULL); w[k] = (u32)v; w[k + 1] = (u32)(v >> 32); @@ -16784,6 +16790,14 @@ int gsp_phys_backend_guest_gr_submit(const struct gsp_phys_gr_submit *req, w[0], w[1], w[2], w[3], w[4], w[5], w[6], w[7], w[8], w[9], w[10], w[11], w[12], w[13], w[14], w[15]); + /* m120: the new binary's first LDG base is + * c[0x0][0x168] (msg) / [0x160] (out) - + * bytes outside the 64 B window above. */ + pr_info("vgsp-gr: param page +0x150: %08x %08x %08x %08x %08x %08x %08x %08x | %08x %08x %08x %08x %08x %08x %08x %08x\n", + w[84], w[85], w[86], w[87], w[88], + w[89], w[90], w[91], w[92], w[93], + w[94], w[95], w[96], w[97], w[98], + w[99]); } if (pg->hpa && pg->qmd_word > 32u && pg->qmd_word <= 46u && !(pg->qmd_word & 1)) { @@ -17125,6 +17139,26 @@ gr_page_unmapped: pr_info("vgsp-gr: qmd w0..3=%08x %08x %08x %08x w4..7=%08x %08x %08x %08x w23..25=%08x %08x %08x w32/33=%08x %08x w48/49=%08x %08x\n", qmd[0], qmd[1], qmd[2], qmd[3], qmd[4], qmd[5], qmd[6], qmd[7], qmd[23], qmd[24], qmd[25], qmd[32], qmd[33], qmd[48], qmd[49]); + /* m120: dump the main PT page slots 0x100..0x11f so the PTE content + * the walker would read (win0 + bounce window) is visible in the log. */ + { + struct gsp_phys_boot_chunk *pt_c = + &boot_stage.rmcall_chunks[GSP_PHYS_RMCALL_BUF_PT]; + + if (pt_c->pages) { + const __le64 *pv = + (const __le64 *)gsp_phys_chunk_page_va(pt_c, 0); + u32 s; + + for (s = 0x100; s < 0x120; s += 8) + pr_info("vgsp-gr: main PT[%03x..%03x]=%016llx %016llx %016llx %016llx %016llx %016llx %016llx %016llx\n", + s, s + 7, + le64_to_cpu(pv[s]), le64_to_cpu(pv[s + 1]), + le64_to_cpu(pv[s + 2]), le64_to_cpu(pv[s + 3]), + le64_to_cpu(pv[s + 4]), le64_to_cpu(pv[s + 5]), + le64_to_cpu(pv[s + 6]), le64_to_cpu(pv[s + 7])); + } + } ret = gsp_phys_rmcall_publish_locked(bar0, boot_stage.rmcall_va_pb, words, &sub); |
