summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_phys_booter.h
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 07:48:07 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-06 07:48:07 -0400
commit1100ffbf674caab4efdf319462fea9b6e197290d (patch)
tree32e63fb0e6e299a3c50b9dfa01fa0a1fd4b08ec5 /kernel/gsp_phys_booter.h
parent3108e21209bd5664b26b10016fad4726ad8ca353 (diff)
downloadopen-iov-1100ffbf674caab4efdf319462fea9b6e197290d.tar.gz
open-iov-1100ffbf674caab4efdf319462fea9b6e197290d.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.h12
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;