<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://open-iov.org/index.php?action=history&amp;feed=atom&amp;title=Risc-v-gsp-rm-debugger</id>
	<title>Risc-v-gsp-rm-debugger - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://open-iov.org/index.php?action=history&amp;feed=atom&amp;title=Risc-v-gsp-rm-debugger"/>
	<link rel="alternate" type="text/html" href="https://open-iov.org/index.php?title=Risc-v-gsp-rm-debugger&amp;action=history"/>
	<updated>2026-10-12T06:49:01Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://open-iov.org/index.php?title=Risc-v-gsp-rm-debugger&amp;diff=23989&amp;oldid=prev</id>
		<title>WikiBot: Fix repository links: point to the cgit tree URLs</title>
		<link rel="alternate" type="text/html" href="https://open-iov.org/index.php?title=Risc-v-gsp-rm-debugger&amp;diff=23989&amp;oldid=prev"/>
		<updated>2026-10-12T04:41:01Z</updated>

		<summary type="html">&lt;p&gt;Fix repository links: point to the cgit tree URLs&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:41, 12 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= risc-v-gsp-rm-debugger =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= risc-v-gsp-rm-debugger =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;blockquote&amp;gt;'''Scope.''' risc-v-gsp-rm-debugger runs GSP/uproc firmware off-hardware in a controllable RISC-V machine, instruments it with Frida-like primitives, and records durable sessions so firmware behaviour can be captured and compared with evidence instead of anecdotes. Canonical sources: [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/05-operations/03-risc-v-gsp-rm-vm.md &amp;lt;code&amp;gt;../docs/05-operations/03-risc-v-gsp-rm-vm.md&amp;lt;/code&amp;gt;] and [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md &amp;lt;code&amp;gt;../docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md&amp;lt;/code&amp;gt;]; if this page and the docs tree disagree, the docs tree wins.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;blockquote&amp;gt;'''Scope.''' risc-v-gsp-rm-debugger runs GSP/uproc firmware off-hardware in a controllable RISC-V machine, instruments it with Frida-like primitives, and records durable sessions so firmware behaviour can be captured and compared with evidence instead of anecdotes. Canonical sources: [https://git.vgpu.io/open-iov&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.git&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tree&lt;/ins&gt;/docs/05-operations/03-risc-v-gsp-rm-vm.md &amp;lt;code&amp;gt;../docs/05-operations/03-risc-v-gsp-rm-vm.md&amp;lt;/code&amp;gt;] and [https://git.vgpu.io/open-iov&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.git&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tree&lt;/ins&gt;/docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md &amp;lt;code&amp;gt;../docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md&amp;lt;/code&amp;gt;]; if this page and the docs tree disagree, the docs tree wins.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;blockquote&amp;gt;'''Development-only.''' Host-side tooling that is never shipped, never a driver dependency and never present in a guest; interfaces and file formats may change without notice.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;blockquote&amp;gt;'''Development-only.''' Host-side tooling that is never shipped, never a driver dependency and never present in a guest; interfaces and file formats may change without notice.&amp;lt;/blockquote&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l168&quot;&gt;Line 168:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 168:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 9. Related documentation ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== 9. Related documentation ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/05-operations/03-risc-v-gsp-rm-vm.md &amp;lt;code&amp;gt;../docs/05-operations/03-risc-v-gsp-rm-vm.md&amp;lt;/code&amp;gt;] — project-level purpose, status and limits.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://git.vgpu.io/open-iov&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.git&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tree&lt;/ins&gt;/docs/05-operations/03-risc-v-gsp-rm-vm.md &amp;lt;code&amp;gt;../docs/05-operations/03-risc-v-gsp-rm-vm.md&amp;lt;/code&amp;gt;] — project-level purpose, status and limits.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md &amp;lt;code&amp;gt;../docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md&amp;lt;/code&amp;gt;] — the single user front door.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://git.vgpu.io/open-iov&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.git&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tree&lt;/ins&gt;/docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md &amp;lt;code&amp;gt;../docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md&amp;lt;/code&amp;gt;] — the single user front door.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/05-operations/02-debugging-and-maintenance-workflows.md &amp;lt;code&amp;gt;../docs/05-operations/02-debugging-and-maintenance-workflows.md&amp;lt;/code&amp;gt;] — captures, failure taxonomy and upgrade workflows.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [https://git.vgpu.io/open-iov&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.git&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tree&lt;/ins&gt;/docs/05-operations/02-debugging-and-maintenance-workflows.md &amp;lt;code&amp;gt;../docs/05-operations/02-debugging-and-maintenance-workflows.md&amp;lt;/code&amp;gt;] — captures, failure taxonomy and upgrade workflows.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[GSP 570.144W Firmware Analysis|&amp;lt;code&amp;gt;GSP-570.144W-Firmware-Analysis.md&amp;lt;/code&amp;gt;]] and [[GSP and GSP-RM|&amp;lt;code&amp;gt;GSP-and-GSP-RM.md&amp;lt;/code&amp;gt;]] — the firmware image and architecture the sessions exercise.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[GSP 570.144W Firmware Analysis|&amp;lt;code&amp;gt;GSP-570.144W-Firmware-Analysis.md&amp;lt;/code&amp;gt;]] and [[GSP and GSP-RM|&amp;lt;code&amp;gt;GSP-and-GSP-RM.md&amp;lt;/code&amp;gt;]] — the firmware image and architecture the sessions exercise.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[CUDA Userspace Driver|&amp;lt;code&amp;gt;CUDA-Userspace-Driver.md&amp;lt;/code&amp;gt;]] and [[Physical GPU Backend and Guest Wiring|&amp;lt;code&amp;gt;Physical-GPU-Backend.md&amp;lt;/code&amp;gt;]] — the client side of the RPC traffic and the supervised backend the simulator complements.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[CUDA Userspace Driver|&amp;lt;code&amp;gt;CUDA-Userspace-Driver.md&amp;lt;/code&amp;gt;]] and [[Physical GPU Backend and Guest Wiring|&amp;lt;code&amp;gt;Physical-GPU-Backend.md&amp;lt;/code&amp;gt;]] — the client side of the RPC traffic and the supervised backend the simulator complements.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Project Status|&amp;lt;code&amp;gt;Project-Status.md&amp;lt;/code&amp;gt;]] and [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/README.md &amp;lt;code&amp;gt;../docs/README.md&amp;lt;/code&amp;gt;] — honest overall status and the documentation front door.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* [[Project Status|&amp;lt;code&amp;gt;Project-Status.md&amp;lt;/code&amp;gt;]] and [https://git.vgpu.io/open-iov&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;.git&lt;/ins&gt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;tree&lt;/ins&gt;/docs/README.md &amp;lt;code&amp;gt;../docs/README.md&amp;lt;/code&amp;gt;] — honest overall status and the documentation front door.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff::1.12:old-23955:rev-23989 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
	<entry>
		<id>https://open-iov.org/index.php?title=Risc-v-gsp-rm-debugger&amp;diff=23955&amp;oldid=prev</id>
		<title>WikiBot: Carry the site-wide About/licensing message on every page (2026-10-12)</title>
		<link rel="alternate" type="text/html" href="https://open-iov.org/index.php?title=Risc-v-gsp-rm-debugger&amp;diff=23955&amp;oldid=prev"/>
		<updated>2026-10-12T04:29:52Z</updated>

		<summary type="html">&lt;p&gt;Carry the site-wide About/licensing message on every page (2026-10-12)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 04:29, 12 October 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;{{About message}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= risc-v-gsp-rm-debugger =&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;= risc-v-gsp-rm-debugger =&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff::1.12:old-23872:rev-23955 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
	<entry>
		<id>https://open-iov.org/index.php?title=Risc-v-gsp-rm-debugger&amp;diff=23872&amp;oldid=prev</id>
		<title>WikiBot: Add page from tracked wiki source (2026 IA update)</title>
		<link rel="alternate" type="text/html" href="https://open-iov.org/index.php?title=Risc-v-gsp-rm-debugger&amp;diff=23872&amp;oldid=prev"/>
		<updated>2026-10-12T04:22:15Z</updated>

		<summary type="html">&lt;p&gt;Add page from tracked wiki source (2026 IA update)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= risc-v-gsp-rm-debugger =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Scope.''' risc-v-gsp-rm-debugger runs GSP/uproc firmware off-hardware in a controllable RISC-V machine, instruments it with Frida-like primitives, and records durable sessions so firmware behaviour can be captured and compared with evidence instead of anecdotes. Canonical sources: [https://git.vgpu.io/open-iov/blob/master/docs/05-operations/03-risc-v-gsp-rm-vm.md &amp;lt;code&amp;gt;../docs/05-operations/03-risc-v-gsp-rm-vm.md&amp;lt;/code&amp;gt;] and [https://git.vgpu.io/open-iov/blob/master/docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md &amp;lt;code&amp;gt;../docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md&amp;lt;/code&amp;gt;]; if this page and the docs tree disagree, the docs tree wins.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Development-only.''' Host-side tooling that is never shipped, never a driver dependency and never present in a guest; interfaces and file formats may change without notice.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;Status: 2026-10-12, tree &amp;lt;code&amp;gt;master @ 2f066727&amp;lt;/code&amp;gt;. Tags: &amp;lt;code&amp;gt;[live]&amp;lt;/code&amp;gt; recorded QEMU sessions; &amp;lt;code&amp;gt;[design]&amp;lt;/code&amp;gt; device model and custom simulator are roadmap.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. What it is ==&lt;br /&gt;
&lt;br /&gt;
risc-v-gsp-rm-debugger makes the firmware's '''runtime behaviour''' inspectable. It boots GSP/uproc firmware in &amp;lt;code&amp;gt;qemu-system-riscv64&amp;lt;/code&amp;gt; (or a deterministic native interpreter) and offers Frida-like primitives on top:&lt;br /&gt;
&lt;br /&gt;
* breakpoints and enter/leave hooks (RV64 ABI aware); watchpoints on firmware variables;&lt;br /&gt;
* memory read/write/hexdump/search, structure decoding, snapshot diffing;&lt;br /&gt;
* recorded sessions: a replayable event stream plus memory dumps;&lt;br /&gt;
* remote calls and run-to-cursor (execute until a chosen address);&lt;br /&gt;
* injection: build a position-independent RV64 service, load it into the running firmware and dispatch to it;&lt;br /&gt;
* declarative probe specs, a plugin API, and a Ghidra bridge for symbol export, hit annotation and decompiler-driven execution.&lt;br /&gt;
&lt;br /&gt;
Its purpose is '''capturing how the firmware server behaves, repeatably and safely''', so emulation changes can be measured against recorded evidence and can survive GSP version, device and architecture churn. The tooling lives under &amp;lt;code&amp;gt;open-iov/debug/risc-v-gsp-rm-vm/&amp;lt;/code&amp;gt;, with its own documentation set (design, usage, scripting, plugins, bridges, accuracy, portability, roadmap).&lt;br /&gt;
&lt;br /&gt;
== 2. What it is not ==&lt;br /&gt;
&lt;br /&gt;
* '''Not a GSP boot environment.''' QEMU &amp;lt;code&amp;gt;virt&amp;lt;/code&amp;gt; has no falcon windows, WPR2, CSB/TRANSCOM, PMU, timers or FB DMA. &amp;lt;code&amp;gt;probe&amp;lt;/code&amp;gt; reports exactly where the real image first diverges (for the TU104 570.144 image: a load-access fault at firmware vaddr &amp;lt;code&amp;gt;0x4009014&amp;lt;/code&amp;gt; reading &amp;lt;code&amp;gt;0x2000000000000A00&amp;lt;/code&amp;gt;) — expected data, not a boot. A device model is a roadmap item, not a claim.&lt;br /&gt;
* '''Not a timing model.''' Do not infer latency, jitter or concurrency behaviour from it; its in-scope conclusions are execution flow and memory side effects.&lt;br /&gt;
* '''Not a replacement for Ghidra or the guest diagnostics.''' Ghidra answers ''what is the code''; risc-v-gsp-rm-debugger answers ''what did it do''; the guest driver remains the oracle for guest-side behaviour.&lt;br /&gt;
* '''Not a hardware or security tool.''' It never attaches to a real GPU, a guest, a kernel module or an mdev, and it is never a security or confidentiality boundary.&lt;br /&gt;
&lt;br /&gt;
== 3. Where it fits ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Layer&lt;br /&gt;
! Tool&lt;br /&gt;
! Question answered&lt;br /&gt;
|-&lt;br /&gt;
| Static&lt;br /&gt;
| Ghidra and the decompilation corpus&lt;br /&gt;
| what is the code?&lt;br /&gt;
|-&lt;br /&gt;
| Guest driver&lt;br /&gt;
| guest diagnostics, ptrace tracing&lt;br /&gt;
| what did the driver request?&lt;br /&gt;
|-&lt;br /&gt;
| '''Firmware runtime'''&lt;br /&gt;
| '''risc-v-gsp-rm-debugger'''&lt;br /&gt;
| '''what does the firmware server do, repeatably and safely?'''&lt;br /&gt;
|-&lt;br /&gt;
| Physical backend&lt;br /&gt;
| supervised hardware sessions, module logs&lt;br /&gt;
| what did real silicon / the real GSP-RM do?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The intended measurement loop: capture the real backend's RPC behaviour, run the same stimulus in risc-v-gsp-rm-debugger, and compare the recorded sessions with the tool's accuracy metrics. A simulator observation is evidence about the firmware, not about silicon; anything that would change the product is reproduced on a physical reference first.&lt;br /&gt;
&lt;br /&gt;
== 4. Quickstart ==&lt;br /&gt;
&lt;br /&gt;
Requirements: Linux, Python 3.10+ (standard library only), &amp;lt;code&amp;gt;qemu-system-riscv64&amp;lt;/code&amp;gt; (Ubuntu package &amp;lt;code&amp;gt;qemu-system-misc&amp;lt;/code&amp;gt;), &amp;lt;code&amp;gt;clang&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;lld&amp;lt;/code&amp;gt;. No GPU, no driver and no kernel module are touched. From the repository root:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;cd debug/risc-v-gsp-rm-vm&lt;br /&gt;
./risc-v-gsp-rm-debugger.sh info     # environment check: QEMU, toolchain, paths&lt;br /&gt;
make demo &amp;amp;amp;&amp;amp;amp; make sdk                # build the bundled RV64 uproc demo and the injection SDK&lt;br /&gt;
./risc-v-gsp-rm-debugger.sh demo     # canned run: boot, hooks, watchpoints, session&lt;br /&gt;
./risc-v-gsp-rm-debugger.sh analyze dumps/&amp;amp;lt;printed-session-dir&amp;amp;gt;&lt;br /&gt;
./risc-v-gsp-rm-debugger.sh probe    # real GSP image: report the first divergence&lt;br /&gt;
./risc-v-gsp-rm-debugger.sh inject   # load and invoke a position-independent service&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What &amp;quot;good&amp;quot; looks like: &amp;lt;code&amp;gt;info&amp;lt;/code&amp;gt; reports QEMU and the demo paths; &amp;lt;code&amp;gt;demo&amp;lt;/code&amp;gt; prints hook/branch lines and a session directory under &amp;lt;code&amp;gt;dumps/&amp;lt;/code&amp;gt;; &amp;lt;code&amp;gt;analyze&amp;lt;/code&amp;gt; renders hook/watch/breakpoint events and a coherent summary; &amp;lt;code&amp;gt;probe&amp;lt;/code&amp;gt; reports a bounded first divergence (expected data, not a boot); &amp;lt;code&amp;gt;inject&amp;lt;/code&amp;gt; returns matching values on the direct and firmware-dispatched invocation paths.&lt;br /&gt;
&lt;br /&gt;
A large test suite (hundreds of tests) is run with &amp;lt;code&amp;gt;make test&amp;lt;/code&amp;gt;, covering unit tests plus live-QEMU smoke runs.&lt;br /&gt;
&lt;br /&gt;
== 5. The primitives ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Primitive&lt;br /&gt;
! Use it for&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;breakpoint&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;hook&amp;lt;/code&amp;gt;&lt;br /&gt;
| did this function run? with what arguments and return value?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;watch&amp;lt;/code&amp;gt; (&amp;lt;code&amp;gt;w&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;a&amp;lt;/code&amp;gt;)&lt;br /&gt;
| when did this field change, and from which store PC?&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;run&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;run_until&amp;lt;/code&amp;gt;&lt;br /&gt;
| bounded observation; stop at a chosen address&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;call&amp;lt;/code&amp;gt;&lt;br /&gt;
| remote call to unit-test a function in isolation&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;step&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;note&amp;lt;/code&amp;gt;&lt;br /&gt;
| single-step with dispatch; annotate the event stream&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Memory.read/write/hexdump/search/snapshot/diff&amp;lt;/code&amp;gt;&lt;br /&gt;
| inspect and diff memory regions&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;SymbolDB&amp;lt;/code&amp;gt;&lt;br /&gt;
| resolve file/program/runtime addresses across sources&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;Recorder&amp;lt;/code&amp;gt;&lt;br /&gt;
| write the durable session (events, snapshots, blobs)&lt;br /&gt;
|-&lt;br /&gt;
| injection SDK&lt;br /&gt;
| load, register and invoke your own position-independent RV64 service&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Instructions between stops are invisible unless a trace is on (a TCG plugin on QEMU, or &amp;lt;code&amp;gt;--trace&amp;lt;/code&amp;gt; on the native backend). Two backends — QEMU-RSP and the native interpreter — satisfy the same session API, so scripts, probes, plugins, recordings and comparisons survive a backend change.&lt;br /&gt;
&lt;br /&gt;
== 6. Fidelity levels (what a result can mean) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Level&lt;br /&gt;
! Property&lt;br /&gt;
! risc-v-gsp-rm-debugger today&lt;br /&gt;
|-&lt;br /&gt;
| '''L0'''&lt;br /&gt;
| instruction semantics&lt;br /&gt;
| high (QEMU TCG, same ISA family)&lt;br /&gt;
|-&lt;br /&gt;
| '''L1'''&lt;br /&gt;
| memory behaviour&lt;br /&gt;
| high for RAM-resident code, conditional on mapping&lt;br /&gt;
|-&lt;br /&gt;
| '''L2'''&lt;br /&gt;
| time / concurrency&lt;br /&gt;
| '''not modelled''' — never claim&lt;br /&gt;
|-&lt;br /&gt;
| '''L3'''&lt;br /&gt;
| device environment (falcon, WPR2, CSB, PMU, timers, DMA, IRQ)&lt;br /&gt;
| '''absent''' — device model is roadmap&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
A simulator observation is evidence about the firmware, not about silicon. Never quote a session for timing, interrupt, security or confidentiality claims; zero hits in a run are a coverage fact, not proof that code is dead.&lt;br /&gt;
&lt;br /&gt;
== 7. Sessions as evidence ==&lt;br /&gt;
&lt;br /&gt;
Every run records a session directory (format &amp;lt;code&amp;gt;greeneye-session/1&amp;lt;/code&amp;gt;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;dumps/&amp;amp;lt;stamp&amp;amp;gt;-&amp;amp;lt;uuid&amp;amp;gt;-&amp;amp;lt;name&amp;amp;gt;/&lt;br /&gt;
  session.json        format, name, counts, snapshot inventory, meta&lt;br /&gt;
  events.jsonl        append-only event stream (hooks, watches, memory, notes)&lt;br /&gt;
  snapshots/*.bin.z   zlib-compressed region captures with sha256&lt;br /&gt;
  blobs/*             QEMU logs, instruction/access traces, extra captures&lt;br /&gt;
  summary.md          rendered analysis&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Rules that make a session usable as evidence:&lt;br /&gt;
&lt;br /&gt;
# '''Record with a fixed stimulus.''' The same script, seed, budgets and image hash make runs comparable; a self-comparison must be empty.&lt;br /&gt;
# '''Annotate as you go.''' Explain inside the session what was asked and what was changed; a chat log is not evidence.&lt;br /&gt;
# '''Attach the provenance.''' Firmware SHA-256, version string, symbol DB source/hash/bias, and the exact command or script.&lt;br /&gt;
# '''Keep the directory together.''' &amp;lt;code&amp;gt;session.json&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;events.jsonl&amp;lt;/code&amp;gt; + &amp;lt;code&amp;gt;snapshots/&amp;lt;/code&amp;gt; + blobs are one artifact; a copied event stream alone is not evidence.&lt;br /&gt;
# '''State the fidelity.''' Say which of L0/L1 was exercised and name the reference capture; do not silently waive L2/L3 gaps.&lt;br /&gt;
# '''Report deltas honestly.''' Every remaining delta between two runs is explained or listed as open; an empty unexplained-delta list is a claim that must be earned.&lt;br /&gt;
# '''Prefer an A/B pair.''' Static reading is a hypothesis; a recorded session is evidence; at least two comparable runs are a conclusion.&lt;br /&gt;
&lt;br /&gt;
== 8. Safety and status ==&lt;br /&gt;
&lt;br /&gt;
* '''Simulator only.''' The tools launch their own QEMU or native machine against the bundled demo or an explicitly allowed re-hosted ELF; they never attach to hardware, a guest, a kernel module, an mdev or an existing debugger stub.&lt;br /&gt;
* '''No guest, no hardware, no product.''' Nothing runs in a guest; injected services are prototypes, not shipped code; product changes go through the host module and a supervised physical confirmation.&lt;br /&gt;
* '''Bounded everywhere.''' Runs have durations and stop caps; reads and snapshots have size caps; a wedged target is left stopped and restarted clean rather than poked.&lt;br /&gt;
* '''Local only.''' The Ghidra bridge is a localhost transport, unauthenticated by design; never expose it on a network interface.&lt;br /&gt;
* '''No confidentiality claims.''' The tool is a study environment; never use injection to defeat a hardware security boundary.&lt;br /&gt;
* '''Status.''' The audited v0.1 surfaces are the CLI and the session format. Working and live-verified: hooks/watchpoints, memory tools, sessions, declarative probes, plugins, remote calls, run-to-cursor, the injection SDK, the Ghidra bridges, the first-fault probe and the instruction/access trace. The device model, the custom simulator and serving full host message traffic remain roadmap; porting and packaging scaffolds are pilot-status. Treat interface changes as reviewed events.&lt;br /&gt;
&lt;br /&gt;
== 9. Related documentation ==&lt;br /&gt;
&lt;br /&gt;
* [https://git.vgpu.io/open-iov/blob/master/docs/05-operations/03-risc-v-gsp-rm-vm.md &amp;lt;code&amp;gt;../docs/05-operations/03-risc-v-gsp-rm-vm.md&amp;lt;/code&amp;gt;] — project-level purpose, status and limits.&lt;br /&gt;
* [https://git.vgpu.io/open-iov/blob/master/docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md &amp;lt;code&amp;gt;../docs/05-operations/04-risc-v-gsp-rm-debugger-user-guide.md&amp;lt;/code&amp;gt;] — the single user front door.&lt;br /&gt;
* [https://git.vgpu.io/open-iov/blob/master/docs/05-operations/02-debugging-and-maintenance-workflows.md &amp;lt;code&amp;gt;../docs/05-operations/02-debugging-and-maintenance-workflows.md&amp;lt;/code&amp;gt;] — captures, failure taxonomy and upgrade workflows.&lt;br /&gt;
* [[GSP 570.144W Firmware Analysis|&amp;lt;code&amp;gt;GSP-570.144W-Firmware-Analysis.md&amp;lt;/code&amp;gt;]] and [[GSP and GSP-RM|&amp;lt;code&amp;gt;GSP-and-GSP-RM.md&amp;lt;/code&amp;gt;]] — the firmware image and architecture the sessions exercise.&lt;br /&gt;
* [[CUDA Userspace Driver|&amp;lt;code&amp;gt;CUDA-Userspace-Driver.md&amp;lt;/code&amp;gt;]] and [[Physical GPU Backend and Guest Wiring|&amp;lt;code&amp;gt;Physical-GPU-Backend.md&amp;lt;/code&amp;gt;]] — the client side of the RPC traffic and the supervised backend the simulator complements.&lt;br /&gt;
* [[Project Status|&amp;lt;code&amp;gt;Project-Status.md&amp;lt;/code&amp;gt;]] and [https://git.vgpu.io/open-iov/blob/master/docs/README.md &amp;lt;code&amp;gt;../docs/README.md&amp;lt;/code&amp;gt;] — honest overall status and the documentation front door.&lt;/div&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
</feed>