<?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=System_Overview</id>
	<title>System Overview - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://open-iov.org/index.php?action=history&amp;feed=atom&amp;title=System_Overview"/>
	<link rel="alternate" type="text/html" href="https://open-iov.org/index.php?title=System_Overview&amp;action=history"/>
	<updated>2026-10-12T06:56:07Z</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=System_Overview&amp;diff=23990&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=System_Overview&amp;diff=23990&amp;oldid=prev"/>
		<updated>2026-10-12T04:41:02Z</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;= System Overview =&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;= System Overview =&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;'''What this page is.''' The one page to read if you want to understand ''how Open-IOV works'' before diving into any subsystem. Condensed from [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/01-system-overview.md &amp;lt;code&amp;gt;../docs/03-architecture/01-system-overview.md&amp;lt;/code&amp;gt;] (with [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/09-full-system-picture.md &amp;lt;code&amp;gt;../docs/03-architecture/09-full-system-picture.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/03-architecture/10-interaction-and-scheduling.md &amp;lt;code&amp;gt;../docs/03-architecture/10-interaction-and-scheduling.md&amp;lt;/code&amp;gt;] for the full picture); the docs tree wins on disagreement.&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;'''What this page is.''' The one page to read if you want to understand ''how Open-IOV works'' before diving into any subsystem. Condensed from [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/01-system-overview.md &amp;lt;code&amp;gt;../docs/03-architecture/01-system-overview.md&amp;lt;/code&amp;gt;] (with [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/09-full-system-picture.md &amp;lt;code&amp;gt;../docs/03-architecture/09-full-system-picture.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/03-architecture/10-interaction-and-scheduling.md &amp;lt;code&amp;gt;../docs/03-architecture/10-interaction-and-scheduling.md&amp;lt;/code&amp;gt;] for the full picture); the docs tree wins on disagreement.&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;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; proven with the stock guest driver; &amp;lt;code&amp;gt;[gated]&amp;lt;/code&amp;gt; implemented default-off; &amp;lt;code&amp;gt;[wip]&amp;lt;/code&amp;gt; partial; &amp;lt;code&amp;gt;[wall]&amp;lt;/code&amp;gt; current blocker; &amp;lt;code&amp;gt;[target]&amp;lt;/code&amp;gt; designed end state.&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;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; proven with the stock guest driver; &amp;lt;code&amp;gt;[gated]&amp;lt;/code&amp;gt; implemented default-off; &amp;lt;code&amp;gt;[wip]&amp;lt;/code&amp;gt; partial; &amp;lt;code&amp;gt;[wall]&amp;lt;/code&amp;gt; current blocker; &amp;lt;code&amp;gt;[target]&amp;lt;/code&amp;gt; designed end state.&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-l60&quot;&gt;Line 60:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 60:&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;* '''Guest side.''' The stock driver performs the GSP boot handshake, sets up RPC message queues in guest memory, creates RM objects, programs channels and submits work — exactly as on bare metal ([[The Guest Stack and CUDASW|&amp;lt;code&amp;gt;Guest-Stack-and-CUDASW.md&amp;lt;/code&amp;gt;]], [[CUDA Userspace Driver|&amp;lt;code&amp;gt;CUDA-Userspace-Driver.md&amp;lt;/code&amp;gt;]], [[UVM in the Guest|&amp;lt;code&amp;gt;UVM-in-the-Guest.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;* '''Guest side.''' The stock driver performs the GSP boot handshake, sets up RPC message queues in guest memory, creates RM objects, programs channels and submits work — exactly as on bare metal ([[The Guest Stack and CUDASW|&amp;lt;code&amp;gt;Guest-Stack-and-CUDASW.md&amp;lt;/code&amp;gt;]], [[CUDA Userspace Driver|&amp;lt;code&amp;gt;CUDA-Userspace-Driver.md&amp;lt;/code&amp;gt;]], [[UVM in the Guest|&amp;lt;code&amp;gt;UVM-in-the-Guest.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;div&gt;* '''Host module.''' &amp;lt;code&amp;gt;vgsp.ko&amp;lt;/code&amp;gt; is a VFIO mediated-device driver: it registers a parent on the physical GPU, exposes virtual GPU types, and each mdev is one virtual GPU for one VM. Inside, it presents a plausible Turing-class device (config space, BAR shadows, MSI-X), answers the GSP boot handshake and the RPC protocol with well-formed replies, and maintains the memory model that resolves guest physical addresses to host addresses ([[The Host Module (vgsp.ko)|&amp;lt;code&amp;gt;Host-Module.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;* '''Host module.''' &amp;lt;code&amp;gt;vgsp.ko&amp;lt;/code&amp;gt; is a VFIO mediated-device driver: it registers a parent on the physical GPU, exposes virtual GPU types, and each mdev is one virtual GPU for one VM. Inside, it presents a plausible Turing-class device (config space, BAR shadows, MSI-X), answers the GSP boot handshake and the RPC protocol with well-formed replies, and maintains the memory model that resolves guest physical addresses to host addresses ([[The Host Module (vgsp.ko)|&amp;lt;code&amp;gt;Host-Module.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; 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 interface that makes this possible.''' Since Turing, the driver's management path is not ''silicon'', it is ''firmware'': the GSP runs a version of NVIDIA's Resource Manager and the driver talks to it over shared-memory queues with a small RPC protocol. That protocol is small, stable and observable — so the project emulates '''the firmware's interface''' instead of emulating a GPU ([[GSP and GSP-RM|&amp;lt;code&amp;gt;GSP-and-GSP-RM.md&amp;lt;/code&amp;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/03-architecture/03-gsp-and-gsp-rm.md &amp;lt;code&amp;gt;../docs/03-architecture/03-gsp-and-gsp-rm.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 interface that makes this possible.''' Since Turing, the driver's management path is not ''silicon'', it is ''firmware'': the GSP runs a version of NVIDIA's Resource Manager and the driver talks to it over shared-memory queues with a small RPC protocol. That protocol is small, stable and observable — so the project emulates '''the firmware's interface''' instead of emulating a GPU ([[GSP and GSP-RM|&amp;lt;code&amp;gt;GSP-and-GSP-RM.md&amp;lt;/code&amp;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/03-architecture/03-gsp-and-gsp-rm.md &amp;lt;code&amp;gt;../docs/03-architecture/03-gsp-and-gsp-rm.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;div&gt;* '''Execution.''' Guest work that must be fast (copies, kernels) is forwarded to a real pipeline driven through the module's own GSP-RM session ([[The vGSP Execution Plane (vEP)|&amp;lt;code&amp;gt;Execution-Plane.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;]]).&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;* '''Execution.''' Guest work that must be fast (copies, kernels) is forwarded to a real pipeline driven through the module's own GSP-RM session ([[The vGSP Execution Plane (vEP)|&amp;lt;code&amp;gt;Execution-Plane.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;]]).&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 colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l95&quot;&gt;Line 95:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 95:&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 vGSP Execution Plane (vEP)|&amp;lt;code&amp;gt;Execution-Plane.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;]] — work and execution.&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 vGSP Execution Plane (vEP)|&amp;lt;code&amp;gt;Execution-Plane.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;]] — work and execution.&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;* [[Hardware and Software Matrix|&amp;lt;code&amp;gt;Hardware-Software-Matrix.md&amp;lt;/code&amp;gt;]] — supported combinations and portability.&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;* [[Hardware and Software Matrix|&amp;lt;code&amp;gt;Hardware-Software-Matrix.md&amp;lt;/code&amp;gt;]] — supported combinations and portability.&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/03-architecture/01-system-overview.md &amp;lt;code&amp;gt;../docs/03-architecture/01-system-overview.md&amp;lt;/code&amp;gt;] and the rest of the architecture corpus in the repository.&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/03-architecture/01-system-overview.md &amp;lt;code&amp;gt;../docs/03-architecture/01-system-overview.md&amp;lt;/code&amp;gt;] and the rest of the architecture corpus in the repository.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key my_wiki:diff::1.12:old-23956:rev-23990 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
	<entry>
		<id>https://open-iov.org/index.php?title=System_Overview&amp;diff=23956&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=System_Overview&amp;diff=23956&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;= System Overview =&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;= System Overview =&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-23873:rev-23956 --&gt;
&lt;/table&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
	<entry>
		<id>https://open-iov.org/index.php?title=System_Overview&amp;diff=23873&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=System_Overview&amp;diff=23873&amp;oldid=prev"/>
		<updated>2026-10-12T04:22:16Z</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;= System Overview =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;'''What this page is.''' The one page to read if you want to understand ''how Open-IOV works'' before diving into any subsystem. Condensed from [https://git.vgpu.io/open-iov/blob/master/docs/03-architecture/01-system-overview.md &amp;lt;code&amp;gt;../docs/03-architecture/01-system-overview.md&amp;lt;/code&amp;gt;] (with [https://git.vgpu.io/open-iov/blob/master/docs/03-architecture/09-full-system-picture.md &amp;lt;code&amp;gt;../docs/03-architecture/09-full-system-picture.md&amp;lt;/code&amp;gt;] and [https://git.vgpu.io/open-iov/blob/master/docs/03-architecture/10-interaction-and-scheduling.md &amp;lt;code&amp;gt;../docs/03-architecture/10-interaction-and-scheduling.md&amp;lt;/code&amp;gt;] for the full picture); the docs tree wins on disagreement.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&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; proven with the stock guest driver; &amp;lt;code&amp;gt;[gated]&amp;lt;/code&amp;gt; implemented default-off; &amp;lt;code&amp;gt;[wip]&amp;lt;/code&amp;gt; partial; &amp;lt;code&amp;gt;[wall]&amp;lt;/code&amp;gt; current blocker; &amp;lt;code&amp;gt;[target]&amp;lt;/code&amp;gt; designed end state.&lt;br /&gt;
&lt;br /&gt;
== 1. The core principle ==&lt;br /&gt;
&lt;br /&gt;
'''Emulate the interface. Pass through the work. Never patch anyone.'''&lt;br /&gt;
&lt;br /&gt;
A virtual GPU is a ''mediated passthrough'' device. The guest must believe it owns a real NVIDIA GPU with a real GPU System Processor running firmware; the host must arrange for the guest's work to execute on real hardware, because emulating compute in software is orders of magnitude too slow to be useful.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;EMULATE  (software; the guest expects virtual hardware)&lt;br /&gt;
  PCI configuration space, capability structures, power management&lt;br /&gt;
  BAR0 register interface (shadow, not the physical GPU's BAR0)&lt;br /&gt;
  BAR1 VRAM aperture (guest-visible video memory)&lt;br /&gt;
  GSP firmware boot handshake (FWSEC -&amp;amp;gt; booter -&amp;amp;gt; RISCV -&amp;amp;gt; boot complete)&lt;br /&gt;
  GSP-RM message queues, RPC transport, resource-manager controls&lt;br /&gt;
  event/notification channels; MSI-X injection (via eventfd)&lt;br /&gt;
&lt;br /&gt;
PASS THROUGH  (real hardware; correctness and performance)&lt;br /&gt;
  GPU memory: guest VRAM objects backed by real VRAM       [target]&lt;br /&gt;
  page tables / GMMU state used by the GPU                 [wip]&lt;br /&gt;
  channel execution: guest push buffers on real channels   [gated/wall]&lt;br /&gt;
  compute (CUDA) and, later, 3D/video work                 [wip/planned]&lt;br /&gt;
  DMA, completion and fault interrupts relayed to the guest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The line between the two is the '''interface boundary''', and it moves as the project matures: early work emulates everything the guest can observe; later work forwards everything that must be fast.&lt;br /&gt;
&lt;br /&gt;
== 2. Layer map ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;GUEST&lt;br /&gt;
  application ── CUDA runtime (libcudart) ─┐&lt;br /&gt;
  application ── CUDA driver  (libcuda)   ─┤  userspace: CUDASW stack&lt;br /&gt;
  OpenGL/Vulkan ── libGLX/libvulkan ──────┘&lt;br /&gt;
        │  ioctls / mmaps&lt;br /&gt;
  nvidia.ko (unmodified)  ── RM core, resource server, UVM, modeset/drm&lt;br /&gt;
        │  MMIO + DMA + MSI-X   (a virtual PCIe device)&lt;br /&gt;
════════╪════════════════════════════════════════════════════════&lt;br /&gt;
HYPERVISOR (KVM/QEMU, later Xen/...)  VFIO mdev transport + IOMMU&lt;br /&gt;
        │&lt;br /&gt;
HOST MODULE  vgsp.ko&lt;br /&gt;
  ├─ virtual device: config space, BAR0/BAR1/BAR3 windows, MSI-X&lt;br /&gt;
  ├─ emulation core: GSP boot + GSP-RM (RPC msgq, controls, objects, events)&lt;br /&gt;
  ├─ memory model: guest RAM access, VA&amp;amp;lt;-&amp;amp;gt;PA maps, VRAM backing&lt;br /&gt;
  └─ work path: channel/push forwarding to the physical GPU&lt;br /&gt;
        │ module-owned device + real GSP session&lt;br /&gt;
HOST BACKEND  the GPU's own hardware + GSP firmware, driven by this module&lt;br /&gt;
        │     (the distribution nvidia.ko stays unmodified and unbound in&lt;br /&gt;
        │      this mode)&lt;br /&gt;
        v&lt;br /&gt;
REAL HARDWARE (engines, memory, interrupts)&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The guest never contains Open-IOV code; the host driver is unmodified; the hypervisor is unmodified. The only new component is &amp;lt;code&amp;gt;vgsp.ko&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== 3. How each side works ==&lt;br /&gt;
&lt;br /&gt;
* '''Guest side.''' The stock driver performs the GSP boot handshake, sets up RPC message queues in guest memory, creates RM objects, programs channels and submits work — exactly as on bare metal ([[The Guest Stack and CUDASW|&amp;lt;code&amp;gt;Guest-Stack-and-CUDASW.md&amp;lt;/code&amp;gt;]], [[CUDA Userspace Driver|&amp;lt;code&amp;gt;CUDA-Userspace-Driver.md&amp;lt;/code&amp;gt;]], [[UVM in the Guest|&amp;lt;code&amp;gt;UVM-in-the-Guest.md&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
* '''Host module.''' &amp;lt;code&amp;gt;vgsp.ko&amp;lt;/code&amp;gt; is a VFIO mediated-device driver: it registers a parent on the physical GPU, exposes virtual GPU types, and each mdev is one virtual GPU for one VM. Inside, it presents a plausible Turing-class device (config space, BAR shadows, MSI-X), answers the GSP boot handshake and the RPC protocol with well-formed replies, and maintains the memory model that resolves guest physical addresses to host addresses ([[The Host Module (vgsp.ko)|&amp;lt;code&amp;gt;Host-Module.md&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
* '''The interface that makes this possible.''' Since Turing, the driver's management path is not ''silicon'', it is ''firmware'': the GSP runs a version of NVIDIA's Resource Manager and the driver talks to it over shared-memory queues with a small RPC protocol. That protocol is small, stable and observable — so the project emulates '''the firmware's interface''' instead of emulating a GPU ([[GSP and GSP-RM|&amp;lt;code&amp;gt;GSP-and-GSP-RM.md&amp;lt;/code&amp;gt;]], [https://git.vgpu.io/open-iov/blob/master/docs/03-architecture/03-gsp-and-gsp-rm.md &amp;lt;code&amp;gt;../docs/03-architecture/03-gsp-and-gsp-rm.md&amp;lt;/code&amp;gt;]).&lt;br /&gt;
* '''Execution.''' Guest work that must be fast (copies, kernels) is forwarded to a real pipeline driven through the module's own GSP-RM session ([[The vGSP Execution Plane (vEP)|&amp;lt;code&amp;gt;Execution-Plane.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;]]).&lt;br /&gt;
&lt;br /&gt;
== 4. Data flows ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;MMIO from the guest:&lt;br /&gt;
  guest nvidia.ko writes BAR0 offset X&lt;br /&gt;
    -&amp;amp;gt; KVM exit -&amp;amp;gt; QEMU -&amp;amp;gt; VFIO region write into the mdev&lt;br /&gt;
    -&amp;amp;gt; BAR0 shadow state machine (doorbells, VF registers, notify)&lt;br /&gt;
    -&amp;amp;gt; may wake the emulation thread&lt;br /&gt;
&lt;br /&gt;
RPC from the guest to &amp;quot;firmware&amp;quot;:&lt;br /&gt;
  guest writes a command-queue element into a guest-memory msgq&lt;br /&gt;
    -&amp;amp;gt; doorbell (BAR0)&lt;br /&gt;
    -&amp;amp;gt; emulation thread reads the queue through the hypervisor's guest-RAM&lt;br /&gt;
       accessor, parses the element, dispatches the RPC&lt;br /&gt;
    -&amp;amp;gt; handler produces a reply element in the status queue&lt;br /&gt;
    -&amp;amp;gt; emulation injects an MSI-X interrupt to the guest&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 5. What runs today ==&lt;br /&gt;
&lt;br /&gt;
# Guest boots, enumerates the virtual PCIe device, binds &amp;lt;code&amp;gt;nvidia.ko&amp;lt;/code&amp;gt;.&lt;br /&gt;
# The GSP boot handshake completes against the emulation.&lt;br /&gt;
# Message queues are set up, versions negotiated, RM initialization exchanges complete; object creation, capability queries, vaspaces, channels and the engine inventory are answered with well-formed replies (a small set of control IDs is special-cased with real values; reply fidelity for consumed fields keeps improving).&lt;br /&gt;
# &amp;lt;code&amp;gt;nvidia-smi -L&amp;lt;/code&amp;gt; enumerates the device; CUDA userspace starts; context creation completes; the full driver-API smoke passes (&amp;lt;code&amp;gt;ALL OK&amp;lt;/code&amp;gt;, 64-byte payload round-trips).&lt;br /&gt;
# CE-class copies are forwarded to the physical copy engine (default off) with engine-authored semaphore releases and a fault relay. For GR (graphics/compute), a forwarded guest launch reaches the front-end but the engine has not executed it yet — the current frontier ([[The Execution Frontier|&amp;lt;code&amp;gt;Execution-Frontier.md&amp;lt;/code&amp;gt;]]).&lt;br /&gt;
&lt;br /&gt;
== 6. Where the detail lives ==&lt;br /&gt;
&lt;br /&gt;
* [[GSP and GSP-RM|&amp;lt;code&amp;gt;GSP-and-GSP-RM.md&amp;lt;/code&amp;gt;]] — the firmware/RM architecture and the transport we emulate.&lt;br /&gt;
* [[The Host Module (vgsp.ko)|&amp;lt;code&amp;gt;Host-Module.md&amp;lt;/code&amp;gt;]] — the module's internals.&lt;br /&gt;
* [[The Guest Stack and CUDASW|&amp;lt;code&amp;gt;Guest-Stack-and-CUDASW.md&amp;lt;/code&amp;gt;]], [[CUDA Userspace Driver|&amp;lt;code&amp;gt;CUDA-Userspace-Driver.md&amp;lt;/code&amp;gt;]] — the guest side.&lt;br /&gt;
* [[Introduction to GMMU|&amp;lt;code&amp;gt;Introduction-to-GMMU.md&amp;lt;/code&amp;gt;]], [[UVM in the Guest|&amp;lt;code&amp;gt;UVM-in-the-Guest.md&amp;lt;/code&amp;gt;]] — memory and translation.&lt;br /&gt;
* [[The vGSP Execution Plane (vEP)|&amp;lt;code&amp;gt;Execution-Plane.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;]] — work and execution.&lt;br /&gt;
* [[Hardware and Software Matrix|&amp;lt;code&amp;gt;Hardware-Software-Matrix.md&amp;lt;/code&amp;gt;]] — supported combinations and portability.&lt;br /&gt;
* [https://git.vgpu.io/open-iov/blob/master/docs/03-architecture/01-system-overview.md &amp;lt;code&amp;gt;../docs/03-architecture/01-system-overview.md&amp;lt;/code&amp;gt;] and the rest of the architecture corpus in the repository.&lt;/div&gt;</summary>
		<author><name>WikiBot</name></author>
	</entry>
</feed>