<?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=The_Host_Module_%28vgsp.ko%29</id>
	<title>The Host Module (vgsp.ko) - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://open-iov.org/index.php?action=history&amp;feed=atom&amp;title=The_Host_Module_%28vgsp.ko%29"/>
	<link rel="alternate" type="text/html" href="https://open-iov.org/index.php?title=The_Host_Module_(vgsp.ko)&amp;action=history"/>
	<updated>2026-10-12T06:42:14Z</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=The_Host_Module_(vgsp.ko)&amp;diff=23981&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=The_Host_Module_(vgsp.ko)&amp;diff=23981&amp;oldid=prev"/>
		<updated>2026-10-12T04:40:57Z</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:40, 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;= The Host Module (vgsp.ko) =&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;= The Host Module (vgsp.ko) =&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.''' The host-side kernel module that presents one virtual Turing-class GPU per &amp;lt;code&amp;gt;mdev&amp;lt;/code&amp;gt; instance: the virtual device, the emulation engine, the guest-memory model and the work-forwarding design. Canonical source: [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/03-architecture/06-host-module-and-hybrid-model.md &amp;lt;code&amp;gt;../docs/03-architecture/06-host-module-and-hybrid-model.md&amp;lt;/code&amp;gt;]; the docs tree wins on disagreement with this page.&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.''' The host-side kernel module that presents one virtual Turing-class GPU per &amp;lt;code&amp;gt;mdev&amp;lt;/code&amp;gt; instance: the virtual device, the emulation engine, the guest-memory model and the work-forwarding design. Canonical source: [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/03-architecture/06-host-module-and-hybrid-model.md &amp;lt;code&amp;gt;../docs/03-architecture/06-host-module-and-hybrid-model.md&amp;lt;/code&amp;gt;]; the docs tree wins on disagreement with this page.&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;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; observed with the stock guest driver; &amp;lt;code&amp;gt;[wip]&amp;lt;/code&amp;gt; demonstrated live, being productized; &amp;lt;code&amp;gt;[gated]&amp;lt;/code&amp;gt; implemented default-off behind supervised gates; &amp;lt;code&amp;gt;[wall]&amp;lt;/code&amp;gt; known blocking limit; &amp;lt;code&amp;gt;[target]&amp;lt;/code&amp;gt; designed, not built; &amp;lt;code&amp;gt;[planned]&amp;lt;/code&amp;gt; roadmap.&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;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; observed with the stock guest driver; &amp;lt;code&amp;gt;[wip]&amp;lt;/code&amp;gt; demonstrated live, being productized; &amp;lt;code&amp;gt;[gated]&amp;lt;/code&amp;gt; implemented default-off behind supervised gates; &amp;lt;code&amp;gt;[wall]&amp;lt;/code&amp;gt; known blocking limit; &amp;lt;code&amp;gt;[target]&amp;lt;/code&amp;gt; designed, not built; &amp;lt;code&amp;gt;[planned]&amp;lt;/code&amp;gt; roadmap.&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-l107&quot;&gt;Line 107:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 107:&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;|}&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;|}&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;The physical-backend path adds a default-off set of backend controls (documented in the repository; workflows in [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;]).&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;The physical-backend path adds a default-off set of backend controls (documented in the repository; workflows in [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;]).&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;== 7. Build and symbol contracts ==&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;== 7. Build and symbol contracts ==&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-l152&quot;&gt;Line 152:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 152:&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;* Canonical chapter: [https://git.vgpu.io/open-iov/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;blob/master&lt;/del&gt;/docs/03-architecture/06-host-module-and-hybrid-model.md &amp;lt;code&amp;gt;../docs/03-architecture/06-host-module-and-hybrid-model.md&amp;lt;/code&amp;gt;] — the source of this condensation.&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;* Canonical chapter: [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/03-architecture/06-host-module-and-hybrid-model.md &amp;lt;code&amp;gt;../docs/03-architecture/06-host-module-and-hybrid-model.md&amp;lt;/code&amp;gt;] — the source of this condensation.&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 RPC Emulation|&amp;lt;code&amp;gt;GSP-RPC-Emulation.md&amp;lt;/code&amp;gt;]], [[BAR Emulation Specification|&amp;lt;code&amp;gt;BAR-Emulation-Specification.md&amp;lt;/code&amp;gt;]], [[WPR Management|&amp;lt;code&amp;gt;WPR-Management.md&amp;lt;/code&amp;gt;]]; [[Physical GPU Backend and Guest Wiring|&amp;lt;code&amp;gt;Physical-GPU-Backend.md&amp;lt;/code&amp;gt;]], [[The Execution Frontier|&amp;lt;code&amp;gt;Execution-Frontier.md&amp;lt;/code&amp;gt;]], [[The Guest Stack and CUDASW|&amp;lt;code&amp;gt;Guest-Stack-and-CUDASW.md&amp;lt;/code&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;* [[GSP RPC Emulation|&amp;lt;code&amp;gt;GSP-RPC-Emulation.md&amp;lt;/code&amp;gt;]], [[BAR Emulation Specification|&amp;lt;code&amp;gt;BAR-Emulation-Specification.md&amp;lt;/code&amp;gt;]], [[WPR Management|&amp;lt;code&amp;gt;WPR-Management.md&amp;lt;/code&amp;gt;]]; [[Physical GPU Backend and Guest Wiring|&amp;lt;code&amp;gt;Physical-GPU-Backend.md&amp;lt;/code&amp;gt;]], [[The Execution Frontier|&amp;lt;code&amp;gt;Execution-Frontier.md&amp;lt;/code&amp;gt;]], [[The Guest Stack and CUDASW|&amp;lt;code&amp;gt;Guest-Stack-and-CUDASW.md&amp;lt;/code&amp;gt;]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
	<entry>
		<id>https://open-iov.org/index.php?title=The_Host_Module_(vgsp.ko)&amp;diff=23947&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=The_Host_Module_(vgsp.ko)&amp;diff=23947&amp;oldid=prev"/>
		<updated>2026-10-12T04:29:48Z</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;= The Host Module (vgsp.ko) =&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;= The Host Module (vgsp.ko) =&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;/table&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
	<entry>
		<id>https://open-iov.org/index.php?title=The_Host_Module_(vgsp.ko)&amp;diff=23867&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=The_Host_Module_(vgsp.ko)&amp;diff=23867&amp;oldid=prev"/>
		<updated>2026-10-12T04:22:12Z</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;= The Host Module (vgsp.ko) =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''Scope.''' The host-side kernel module that presents one virtual Turing-class GPU per &amp;lt;code&amp;gt;mdev&amp;lt;/code&amp;gt; instance: the virtual device, the emulation engine, the guest-memory model and the work-forwarding design. Canonical source: [https://git.vgpu.io/open-iov/blob/master/docs/03-architecture/06-host-module-and-hybrid-model.md &amp;lt;code&amp;gt;../docs/03-architecture/06-host-module-and-hybrid-model.md&amp;lt;/code&amp;gt;]; the docs tree wins on disagreement with this page.&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; observed with the stock guest driver; &amp;lt;code&amp;gt;[wip]&amp;lt;/code&amp;gt; demonstrated live, being productized; &amp;lt;code&amp;gt;[gated]&amp;lt;/code&amp;gt; implemented default-off behind supervised gates; &amp;lt;code&amp;gt;[wall]&amp;lt;/code&amp;gt; known blocking limit; &amp;lt;code&amp;gt;[target]&amp;lt;/code&amp;gt; designed, not built; &amp;lt;code&amp;gt;[planned]&amp;lt;/code&amp;gt; roadmap.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 1. Role and position ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;guest VM ── PCIe MMIO / DMA / MSI-X through the hypervisor&lt;br /&gt;
   (KVM/QEMU or Xen: VFIO mdev transport, IOMMU)&lt;br /&gt;
   │&lt;br /&gt;
vgsp.ko: virtual device · emulation core · memory model · work path&lt;br /&gt;
   │&lt;br /&gt;
physical GPU + GSP firmware, driven by this module (host driver unmodified)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The module registers as an '''mdev parent''' on the physical GPU, exposing one device type per supported profile; each &amp;lt;code&amp;gt;mdev&amp;lt;/code&amp;gt; is an independent virtual GPU ([[System Overview|&amp;lt;code&amp;gt;System-Overview.md&amp;lt;/code&amp;gt;]], [[The vGSP Execution Plane (vEP)|&amp;lt;code&amp;gt;Execution-Plane.md&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
&lt;br /&gt;
== 2. The virtual device ==&lt;br /&gt;
&lt;br /&gt;
The guest sees a plausible Turing-class GPU (IDs, class code, BARs, capability list). Some fields exist only for validation: PCIe link capabilities (the hypervisor can rewrite them), MSI-X masking state, and non-SR-IOV VF windows.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! BAR&lt;br /&gt;
! Size&lt;br /&gt;
! Backing&lt;br /&gt;
! Contents&lt;br /&gt;
|-&lt;br /&gt;
| BAR0&lt;br /&gt;
| 16 MB&lt;br /&gt;
| host &amp;lt;code&amp;gt;vzalloc&amp;lt;/code&amp;gt; shadow&lt;br /&gt;
| boot, doorbells, VF registers, PRAMIN window, VBIOS&lt;br /&gt;
|-&lt;br /&gt;
| BAR1&lt;br /&gt;
| 256 MB&lt;br /&gt;
| host &amp;lt;code&amp;gt;vzalloc&amp;lt;/code&amp;gt; vidmem buffer&lt;br /&gt;
| guest-visible VRAM aperture&lt;br /&gt;
|-&lt;br /&gt;
| BAR3&lt;br /&gt;
| —&lt;br /&gt;
| instance window&lt;br /&gt;
| instance/PRAMIN behaviour&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
MMIO is served by VFIO region callbacks or directly from the shadow when mapped into the guest. BAR1 is host RAM today — correctness first: the real GPU cannot read it, so forwarding must later migrate objects to real VRAM or expose DMA-mapped system memory [target] ([[Physical GPU Backend and Guest Wiring|&amp;lt;code&amp;gt;Physical-GPU-Backend.md&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
&lt;br /&gt;
== 3. The emulation core ==&lt;br /&gt;
&lt;br /&gt;
A kernel thread drives the device's &amp;quot;firmware&amp;quot; behaviour [live]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;BAR0 doorbell / VF-register write → read msgq element from guest memory&lt;br /&gt;
   → dispatch RPC → write reply → inject MSI-X (eventfd → irqfd)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Guest memory is reached via &amp;lt;code&amp;gt;vfio_dma_rw()&amp;lt;/code&amp;gt; from kernel-thread context. The RPC philosophy: correct shape first (or the driver walks off into uninitialized memory), plausible values second (values must be self-consistent), never invent input (in/out parameter blocks are echoed; zeroing the &amp;lt;code&amp;gt;GSP_RM_ALLOC&amp;lt;/code&amp;gt; reply once faulted &amp;lt;code&amp;gt;libcuda&amp;lt;/code&amp;gt;). Handlers cover boot/static-info exchanges, device/FB/BUS/INTR tables, CE and GMMU queries, reserved-PDE contracts, channel/CE allocation and an unknown-control fallback. Push buffers are decoded as method streams and executed in software — memsets, copies, semaphore releases — a '''correctness bridge, not the data plane''' [wip]; emulation-mode CUDA is verified end to end (&amp;lt;code&amp;gt;vectorAdd&amp;lt;/code&amp;gt; over 1M elements, &amp;lt;code&amp;gt;bad=0&amp;lt;/code&amp;gt;) [live]. Physical-GSP boot is default-off [gated]; the firmware analyzer, version tables, HAL tables and dynamic RPC dispatcher are not yet on the live path [target].&lt;br /&gt;
&lt;br /&gt;
== 4. The guest-memory model ==&lt;br /&gt;
&lt;br /&gt;
'''What the client gives us:''' channel memory descriptors (&amp;lt;code&amp;gt;NV_MEMORY_DESC_PARAMS&amp;lt;/code&amp;gt;) with ''physical'' addresses (instance memory, method buffer, userd, ramfc, error notifiers) and the page-table contract for server-owned VA ranges (&amp;lt;code&amp;gt;COPY_SERVER_RESERVED_PDES&amp;lt;/code&amp;gt; — table-level PAs, page shifts, VA range, ''empty'' leaves). It gives us none of its own sysmem maps.&lt;br /&gt;
&lt;br /&gt;
'''What we derive instead''' [live] — the module rebuilds the missing mappings from the guest's own bookkeeping, with no cooperation from the guest driver:&lt;br /&gt;
&lt;br /&gt;
# '''VA↔PA pairs live in guest memory''': UVM and RM record both the GPU VA and the kernel CPU VA per object (&amp;lt;code&amp;gt;uvm_rm_mem_t.vas[CPU]/vas[GPU]&amp;lt;/code&amp;gt; +0x30/+0x38).&lt;br /&gt;
# '''CPU VAs are direct-map addresses''': &amp;lt;code&amp;gt;PA = cpu_va - page_offset_base&amp;lt;/code&amp;gt;, the base recovered from guest memory or &amp;lt;code&amp;gt;/proc/kallsyms&amp;lt;/code&amp;gt; during development.&lt;br /&gt;
# '''Exception:''' control-device &amp;lt;code&amp;gt;mmap()&amp;lt;/code&amp;gt; pages have no leaf PTEs; verified pairs arrive via &amp;lt;code&amp;gt;sema_map_add&amp;lt;/code&amp;gt; until a durable join exists. The page-granular cache is fed by a trusted GMMU walk ([[Introduction to GMMU|&amp;lt;code&amp;gt;Introduction-to-GMMU.md&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
&lt;br /&gt;
'''Load-bearing copy invariants:''' (1) a copy runs at most once per GPFIFO entry — replays are suppressed by entry-word identity plus an executed-operation bitmap; (2) a virtual operand translates per 4 KB page (195 of 256 pages were contiguous in one observed 1 MB range); (3) a consumed slot's work never runs later — the per-put-epoch mark is authoritative until a put wrap.&lt;br /&gt;
&lt;br /&gt;
== 5. The forwarding path (design) ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;guest push submitted&lt;br /&gt;
   → detect (doorbell / GPPUT / push-buffer scan), decode the method stream&lt;br /&gt;
   → EMULATE state/notification (release, membar, fence) or&lt;br /&gt;
     FORWARD real engine work (GR launch, CE copy, memop)&lt;br /&gt;
   → FORWARD: submit equivalent work on a real channel bound to the physical GPU&lt;br /&gt;
   → relay completions (semaphore / fault / interrupt) back into guest memory&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proxying through the distribution host driver has '''no callable entry point from kernel context''', so the module '''owns the device and runs its real GSP firmware as the resource-manager server''', with emulation as the control plane. CE copies, release and fault relay are implemented default-off and verified live [gated]; GR execution is the open wall [wall] — a forwarded launch reaches the front-end; the inline launch-descriptor install is unobserved ([[The Execution Frontier|&amp;lt;code&amp;gt;Execution-Frontier.md&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
&lt;br /&gt;
== 6. Debug parameters ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/sys/module/vgsp/parameters/*&amp;lt;/code&amp;gt; makes guest memory and the emulated device inspectable without rebuilding:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Parameter&lt;br /&gt;
! Purpose&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;scan_guest_ram=&amp;amp;lt;v&amp;amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;scan_vidmem=&amp;amp;lt;v&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| find a 64-bit value in guest RAM (0–8 GB) or the VRAM shadow&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;scan_seq=&amp;amp;lt;v1,...&amp;amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;scan_pt=&amp;amp;lt;pa&amp;amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;scan_masked=&amp;amp;lt;v&amp;amp;gt;,&amp;amp;lt;mask&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| find a 32-bit sequence, entries pointing at a PA, or &amp;lt;code&amp;gt;(x &amp;amp;amp; mask) == v&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dump_vidmem=&amp;amp;lt;off&amp;amp;gt;,&amp;amp;lt;len&amp;amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;fill_vidmem=&amp;amp;lt;v&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| dump/scan or fill the VRAM shadow&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;poke_guest=&amp;amp;lt;gpa&amp;amp;gt;,&amp;amp;lt;v&amp;amp;gt;&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;poke_fill=&amp;amp;lt;gpa&amp;amp;gt;,&amp;amp;lt;v&amp;amp;gt;,&amp;amp;lt;n&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| write a 32-bit value / fill a range in guest physical memory&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;sema_probe=&amp;amp;lt;gpu_va&amp;amp;gt;[,count]&amp;lt;/code&amp;gt; / &amp;lt;code&amp;gt;sema_map_add=&amp;amp;lt;va&amp;amp;gt;,&amp;amp;lt;pa&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| probe a semaphore VA / teach one verified VA→PA pair&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dump_guest=&amp;amp;lt;gpa&amp;amp;gt;,&amp;amp;lt;len&amp;amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
| dump guest physical memory (capped)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The physical-backend path adds a default-off set of backend controls (documented in the repository; workflows in [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;]).&lt;br /&gt;
&lt;br /&gt;
== 7. Build and symbol contracts ==&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;vgsp.ko&amp;lt;/code&amp;gt; exports the &amp;lt;code&amp;gt;nvidia_vgpu_vfio_*&amp;lt;/code&amp;gt; interface (&amp;lt;code&amp;gt;probe&amp;lt;/code&amp;gt;/&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;, ops get/set, mdev parent registration) to pair the device with OpenRM host modules.&lt;br /&gt;
* OpenRM modules built from source need &amp;lt;code&amp;gt;KBUILD_EXTRA_SYMBOLS=$(pwd)/kernel/Module.symvers&amp;lt;/code&amp;gt; and must build '''after''' this module (missing symbols and stale build caches are common otherwise).&lt;br /&gt;
* On single-GPU developer systems the distribution driver owns the physical GPU and the module runs standalone; the OpenRM path is only for native-vGPU management, not QEMU.&lt;br /&gt;
&lt;br /&gt;
== 8. Implemented vs designed ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Area&lt;br /&gt;
! Status&lt;br /&gt;
|-&lt;br /&gt;
| mdev/VFIO device, config space, BARs, MSI-X; BAR0 state machine; boot handshake [live]&lt;br /&gt;
| implemented&lt;br /&gt;
|-&lt;br /&gt;
| Message queues + RPC + init controls (stock 570.144) [live]&lt;br /&gt;
| implemented&lt;br /&gt;
|-&lt;br /&gt;
| Guest sysmem access + VA↔PA discovery [wip]&lt;br /&gt;
| debug-grade, to be productized&lt;br /&gt;
|-&lt;br /&gt;
| Push decoding + semaphore completion [wip]&lt;br /&gt;
| demonstrated live, being productized&lt;br /&gt;
|-&lt;br /&gt;
| Emulation-mode CUDA end-to-end [live]&lt;br /&gt;
| repeatable 1M-element &amp;lt;code&amp;gt;vectorAdd&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;bad=0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Guest-RAM physical path + server-owned page-table population [gated]&lt;br /&gt;
| default-off; GPA→HPA via shared-file page cache verified live on the CE&lt;br /&gt;
|-&lt;br /&gt;
| GPU work forwarding: CE copy, release and fault relay [gated]&lt;br /&gt;
| default-off, verified live; GR open [wall]&lt;br /&gt;
|-&lt;br /&gt;
| Execution backend (module-owned GPU, direct real-GSP session) [wall]&lt;br /&gt;
| boot, static configuration and CE copies proven; GR execution open (failed mutating attempts park the device in a locked fail-safe, never auto-retried)&lt;br /&gt;
|-&lt;br /&gt;
| Real VRAM backing [target]; Windows, Xen, aarch64 [planned]&lt;br /&gt;
| designed, not implemented&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 9. Related documentation ==&lt;br /&gt;
&lt;br /&gt;
* Canonical chapter: [https://git.vgpu.io/open-iov/blob/master/docs/03-architecture/06-host-module-and-hybrid-model.md &amp;lt;code&amp;gt;../docs/03-architecture/06-host-module-and-hybrid-model.md&amp;lt;/code&amp;gt;] — the source of this condensation.&lt;br /&gt;
* [[GSP RPC Emulation|&amp;lt;code&amp;gt;GSP-RPC-Emulation.md&amp;lt;/code&amp;gt;]], [[BAR Emulation Specification|&amp;lt;code&amp;gt;BAR-Emulation-Specification.md&amp;lt;/code&amp;gt;]], [[WPR Management|&amp;lt;code&amp;gt;WPR-Management.md&amp;lt;/code&amp;gt;]]; [[Physical GPU Backend and Guest Wiring|&amp;lt;code&amp;gt;Physical-GPU-Backend.md&amp;lt;/code&amp;gt;]], [[The Execution Frontier|&amp;lt;code&amp;gt;Execution-Frontier.md&amp;lt;/code&amp;gt;]], [[The Guest Stack and CUDASW|&amp;lt;code&amp;gt;Guest-Stack-and-CUDASW.md&amp;lt;/code&amp;gt;]].&lt;/div&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
</feed>