diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-06 07:48:07 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-06 07:48:07 -0400 |
| commit | 896bd9f744cadfd8af2dd03c79ac31114fb37dba (patch) | |
| tree | 687d92325b7e22515965994c8c03454dac429226 /kernel/gsp_phys_booter.h | |
| parent | 413a516207a03bfdf3b6374709c9c24b4148a76c (diff) | |
| download | open-iov-896bd9f744cadfd8af2dd03c79ac31114fb37dba.tar.gz open-iov-896bd9f744cadfd8af2dd03c79ac31114fb37dba.zip | |
vgsp: verbatim replay of the captured GR launch prelude+window
Diffstat (limited to 'kernel/gsp_phys_booter.h')
| -rw-r--r-- | kernel/gsp_phys_booter.h | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/kernel/gsp_phys_booter.h b/kernel/gsp_phys_booter.h index 42bf1ff..9a0331f 100644 --- a/kernel/gsp_phys_booter.h +++ b/kernel/gsp_phys_booter.h @@ -336,6 +336,7 @@ void gsp_phys_backend_relay_counters(u64 *requested, u64 *ok, u64 *verify_fail, #define GSP_PHYS_GR_INLINE_BYTES 64u #define GSP_PHYS_GR_QMD_WORDS 64u #define GSP_PHYS_GR_QMD_WORD_NONE 0xffffffffu +#define GSP_PHYS_GR_RAW_WORDS 256u struct gsp_phys_gr_page { u64 guest_va; /* guest VA (page aligned) */ @@ -353,6 +354,17 @@ struct gsp_phys_gr_inline { struct gsp_phys_gr_submit { const u32 *qmd; /* 64 rewritten-QMD source words */ u32 qmd_words; /* must be GSP_PHYS_GR_QMD_WORDS */ + /* + * Verbatim replay: the captured tail of the guest push (up to + * GSP_PHYS_GR_RAW_WORDS dwords) and the dword offsets of its + * inline-QMD run inside that tail. A contiguous 0x318 run + * (header + A/B + 64 words) is replayed with the same data-field + * relocations; anything else leaves the rebuilt window in use. + */ + const u32 *raw; + u32 raw_words; + u32 raw_qmd_hdr; + u32 raw_qmd_end; u64 qmd_va; /* guest VA of the QMD buffer */ u64 qmd_hpa; /* guest QMD buffer page HPA, or 0 */ const struct gsp_phys_gr_page *pages; |
