<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://cmp.wiki/w/index.php?action=history&amp;feed=atom&amp;title=Gen2_link_retrain</id>
	<title>Gen2 link retrain - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://cmp.wiki/w/index.php?action=history&amp;feed=atom&amp;title=Gen2_link_retrain"/>
	<link rel="alternate" type="text/html" href="https://cmp.wiki/w/index.php?title=Gen2_link_retrain&amp;action=history"/>
	<updated>2026-10-31T06:16:15Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://cmp.wiki/w/index.php?title=Gen2_link_retrain&amp;diff=457&amp;oldid=prev</id>
		<title>ImportBot: The PCIe Gen2 link enable that ships in cmpunlocker and the early-boot retrain hammer; x16 needs the capacitor mod; sources are cmpunlocker and the Discord Oct 2026.; sources: @_j3ns, @djpandaman, @rrickk420, @wakeupmbrc1, @robbbbbb7973; GitHub Consensus-Protocol/cmp170hx, amoghmunikote/cmpunlocker</title>
		<link rel="alternate" type="text/html" href="https://cmp.wiki/w/index.php?title=Gen2_link_retrain&amp;diff=457&amp;oldid=prev"/>
		<updated>2026-10-30T10:02:11Z</updated>

		<summary type="html">&lt;p&gt;The PCIe Gen2 link enable that ships in cmpunlocker and the early-boot retrain hammer; x16 needs the capacitor mod; sources are cmpunlocker and the Discord Oct 2026.; sources: @_j3ns, @djpandaman, @rrickk420, @wakeupmbrc1, @robbbbbb7973; GitHub Consensus-Protocol/cmp170hx, amoghmunikote/cmpunlocker&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 10:02, 30 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-l16&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&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;Link &amp;#039;&amp;#039;&amp;#039;speed&amp;#039;&amp;#039;&amp;#039; (Gen1 to Gen2) and link &amp;#039;&amp;#039;&amp;#039;width&amp;#039;&amp;#039;&amp;#039; (x4 to x16) are separate problems. Gen2 is software; x16 width&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;Link &amp;#039;&amp;#039;&amp;#039;speed&amp;#039;&amp;#039;&amp;#039; (Gen1 to Gen2) and link &amp;#039;&amp;#039;&amp;#039;width&amp;#039;&amp;#039;&amp;#039; (x4 to x16) are separate problems. Gen2 is software; x16 width&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;needs the hardware [[Cooling and power|capacitor mod]] on lanes 4-15. Without the caps the maximum width is x4.&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;needs the hardware [[Cooling and power|capacitor mod]] on lanes 4-15. Without the caps the maximum width is x4.&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;{{Source|djpandaman|2026-10-&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;16&lt;/del&gt;|https://discord.com/channels/1518634379604136178/1518692084729511967/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1560681653788217435&lt;/del&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;{{Source|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;handle=&lt;/ins&gt;djpandaman|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;date=&lt;/ins&gt;2026-10-&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;17&lt;/ins&gt;|&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;link=&lt;/ins&gt;https://discord.com/channels/1518634379604136178/1518692084729511967/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1561021502739189892&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;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;== How it works ==&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;== How it works ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key cmp_wiki:diff:1.41:old-171:rev-457:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>ImportBot</name></author>
	</entry>
	<entry>
		<id>https://cmp.wiki/w/index.php?title=Gen2_link_retrain&amp;diff=171&amp;oldid=prev</id>
		<title>ImportBot: The PCIe Gen2 link enable that ships in cmpunlocker and the early-boot retrain hammer; x16 needs the capacitor mod; sources are cmpunlocker and the Discord Oct 2026.; sources: @_j3ns, @djpandaman, @rrickk420, @wakeupmbrc1, @robbbbbb7973; GitHub Consensus-Protocol/cmp170hx, amoghmunikote/cmpunlocker</title>
		<link rel="alternate" type="text/html" href="https://cmp.wiki/w/index.php?title=Gen2_link_retrain&amp;diff=171&amp;oldid=prev"/>
		<updated>2026-10-30T08:04:19Z</updated>

		<summary type="html">&lt;p&gt;The PCIe Gen2 link enable that ships in cmpunlocker and the early-boot retrain hammer; x16 needs the capacitor mod; sources are cmpunlocker and the Discord Oct 2026.; sources: @_j3ns, @djpandaman, @rrickk420, @wakeupmbrc1, @robbbbbb7973; GitHub Consensus-Protocol/cmp170hx, amoghmunikote/cmpunlocker&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Unlock&lt;br /&gt;
|unlocks=PCIe Gen2 link speed&lt;br /&gt;
|variant=both&lt;br /&gt;
|driver_version=nvidia-open 610.43.02 to 615.71.10&lt;br /&gt;
|unlock_build=amoghmunikote/cmpunlocker v0.5&lt;br /&gt;
|steps_page=Gen2 link retrain&lt;br /&gt;
|status=Reported&lt;br /&gt;
|tested_by=_j3ns&lt;br /&gt;
|source=https://github.com/amoghmunikote/cmpunlocker&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
The stock CMP 170HX links at PCIe &amp;#039;&amp;#039;&amp;#039;Gen1&amp;#039;&amp;#039;&amp;#039;. [[Driver unlock|cmpunlocker]] raises it to &amp;#039;&amp;#039;&amp;#039;Gen2&amp;#039;&amp;#039;&amp;#039; on both cards. This&lt;br /&gt;
is pure software (no fuse burn) and is the ceiling the mainline repo claims; Gen3 is a separate, 10 GB-only story (see&lt;br /&gt;
[[PCIe Gen3 on the 10 GB card]]). Gen2 alone is a 2x bandwidth step over stock Gen1.&lt;br /&gt;
&lt;br /&gt;
Link &amp;#039;&amp;#039;&amp;#039;speed&amp;#039;&amp;#039;&amp;#039; (Gen1 to Gen2) and link &amp;#039;&amp;#039;&amp;#039;width&amp;#039;&amp;#039;&amp;#039; (x4 to x16) are separate problems. Gen2 is software; x16 width&lt;br /&gt;
needs the hardware [[Cooling and power|capacitor mod]] on lanes 4-15. Without the caps the maximum width is x4.&lt;br /&gt;
{{Source|djpandaman|2026-10-16|https://discord.com/channels/1518634379604136178/1518692084729511967/1560681653788217435}}&lt;br /&gt;
&lt;br /&gt;
== How it works ==&lt;br /&gt;
&lt;br /&gt;
The silicon was never fused to Gen1; Amogh&amp;#039;s Gen2 enable bypasses a bootstrap by writing XVE_FUSE_OVERRIDE =&lt;br /&gt;
&amp;lt;code&amp;gt;0x6&amp;lt;/code&amp;gt;, which lets LINK_CAP reach Gen2. There is no physical Gen2-disable fuse (unlike Gen3/Gen4, which are&lt;br /&gt;
real fuses). {{Source|djpandaman|2026-10-09|https://discord.com/channels/1518634379604136178/1518695328008638516/1557999353052794941}}&lt;br /&gt;
&lt;br /&gt;
Two pieces in cmpunlocker do it:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;pcie-gen2.patch&amp;lt;/code&amp;gt; sets the PL link-rate register &amp;lt;code&amp;gt;0x0008c1c0 = 0x00240036&amp;lt;/code&amp;gt; and the related fuse&lt;br /&gt;
  override / XP3G registers; &amp;lt;code&amp;gt;pcie-gen2-probe-retrain.patch&amp;lt;/code&amp;gt; handles the retrain.&lt;br /&gt;
* An &amp;#039;&amp;#039;&amp;#039;early-boot retrain service&amp;#039;&amp;#039;&amp;#039; (&amp;lt;code&amp;gt;gen2.service&amp;lt;/code&amp;gt;, runs &amp;lt;code&amp;gt;/usr/local/sbin/gen2-hammer&amp;lt;/code&amp;gt;). The&lt;br /&gt;
  Gen2 advertisement window opens for only a fraction of a second when the initramfs-loaded module&amp;#039;s booter writes land,&lt;br /&gt;
  before any normal systemd unit runs, so the hammer loops &amp;lt;code&amp;gt;setpci CAP_EXP+12&amp;lt;/code&amp;gt; on the bridge and GPU (default&lt;br /&gt;
  600 iterations at 0.05 s) to catch it. {{Source|rrickk420|2026-08-22|https://github.com/Consensus-Protocol/cmp170hx}}&lt;br /&gt;
&lt;br /&gt;
The install writes &amp;lt;code&amp;gt;/etc/modprobe.d/cmp-pcie-gen2.conf&amp;lt;/code&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
options nvidia NVreg_RegistryDwords=&amp;quot;RmForceEnableGen2=1;RMPcieLinkSpeed=0x1&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Verify ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
nvidia-smi --query-gpu=pcie.link.gen.current,pcie.link.gen.max --format=csv   # expect 2,2&lt;br /&gt;
sudo ./tools/service.sh verify                                                # cmpunlocker helper&lt;br /&gt;
setpci -s &amp;lt;bdf&amp;gt; CAP_EXP+12.w                                                   # 0x1042 = Gen2 x4, 0x1041 = Gen1&lt;br /&gt;
sudo lspci -s &amp;lt;bdf&amp;gt; -vvv | grep LnkSta&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Judge Gen2 by &amp;lt;code&amp;gt;setpci CAP_EXP+12&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;lspci LnkSta&amp;lt;/code&amp;gt;, not by&lt;br /&gt;
&amp;lt;code&amp;gt;nvidia-smi pcie.link.gen.current&amp;lt;/code&amp;gt;, which can still report 1 after a successful catch. Recovery boot option&lt;br /&gt;
if the service misbehaves: &amp;lt;code&amp;gt;systemd.mask=gen2.service&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Numbers ==&lt;br /&gt;
&lt;br /&gt;
Gen2 x4 measured about 1.5 GB/s each way, up from about 0.85 GB/s at Gen1 (roughly 1.8x). With the x16 capacitor mod,&lt;br /&gt;
Gen2 x16 reached about 6.63-6.67 GB/s. {{Source|rrickk420|2026-08-22|https://github.com/Consensus-Protocol/cmp170hx}}&lt;br /&gt;
P2P over native Gen2 x16 slots is about the same latency as a crossbar, around 1.5 us per transaction; switches add&lt;br /&gt;
latency. {{Source|wakeupmbrc1|2026-10-17|https://discord.com/channels/1518634379604136178/1518692084729511967/1561016069248917585}}&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Gen2 does not train under VFIO passthrough&amp;#039;&amp;#039;&amp;#039; in some setups (Consensus-Protocol notes); and on 615.78.08 several&lt;br /&gt;
  people saw Gen2 training fail and the cards drop off &amp;lt;code&amp;gt;nvidia-smi&amp;lt;/code&amp;gt; (see [[Driver unlock]]).&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;x4 after the cap mod:&amp;#039;&amp;#039;&amp;#039; continuity faults on one lane pair drop the width; reflow the suspect caps and check with a&lt;br /&gt;
  DMM. A card that failed the mod still works at x4. See [[Cooling and power]] for the mod and troubleshooting.&lt;br /&gt;
* ASPM idle link-speed drop (Gen2 to Gen1 at idle) to save power is an untested idea; nvidia-smi only guesses the link&lt;br /&gt;
  state, &amp;lt;code&amp;gt;lspci&amp;lt;/code&amp;gt; shows the truth. {{Source|robbbbbb7973|2026-10-21|https://discord.com/channels/1518634379604136178/1534543856006332586/1562284357887205497}}&lt;br /&gt;
&lt;br /&gt;
== Status ==&lt;br /&gt;
&lt;br /&gt;
Ships in cmpunlocker and is reproduced by everyone who runs it (shares the [[Driver unlock]] confirmation), so&lt;br /&gt;
{{Status|Proven}} as a software unlock. Reaching Gen2 &amp;#039;&amp;#039;&amp;#039;x16&amp;#039;&amp;#039;&amp;#039; additionally needs the capacitor mod.&lt;br /&gt;
&lt;br /&gt;
== Related ==&lt;br /&gt;
&lt;br /&gt;
[[Driver unlock]], [[PCIe Gen3 on the 10 GB card]], [[Cooling and power]], [[Platforms]],&lt;br /&gt;
[[Kernel parameters and module options]], [[Troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
{{ImportFooter}}&lt;br /&gt;
[[Category:Unlocks]]&lt;br /&gt;
[[Category:8 GB]]&lt;br /&gt;
[[Category:10 GB]]&lt;/div&gt;</summary>
		<author><name>ImportBot</name></author>
	</entry>
</feed>