<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pclosusers.com/wiki/index.php?action=history&amp;feed=atom&amp;title=CPU_Microcode</id>
	<title>CPU Microcode - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pclosusers.com/wiki/index.php?action=history&amp;feed=atom&amp;title=CPU_Microcode"/>
	<link rel="alternate" type="text/html" href="https://pclosusers.com/wiki/index.php?title=CPU_Microcode&amp;action=history"/>
	<updated>2026-04-09T16:17:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://pclosusers.com/wiki/index.php?title=CPU_Microcode&amp;diff=1016&amp;oldid=prev</id>
		<title>Terryn: Add note about real HW</title>
		<link rel="alternate" type="text/html" href="https://pclosusers.com/wiki/index.php?title=CPU_Microcode&amp;diff=1016&amp;oldid=prev"/>
		<updated>2025-07-31T13:21:50Z</updated>

		<summary type="html">&lt;p&gt;Add note about real HW&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 16:21, 31 July 2025&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-l9&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&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;             clock speeds: max: 3800 MHz 1: 1600 MHz 2: 1599 MHz 3: 1599 MHz 4: 1599 MHz 5: 1601 MHz 6: 2050 MHz  &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;             clock speeds: max: 3800 MHz 1: 1600 MHz 2: 1599 MHz 3: 1599 MHz 4: 1599 MHz 5: 1601 MHz 6: 2050 MHz  &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;             7: 1606 MHz 8: 1677 MHz&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: 1606 MHz 8: 1677 MHz&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 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;{{Note|Microcode updates can only be performed on real hardware, not from inside a VirtualBox or VMware machine}}&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;Microcode updates are lost after hard-reset or power off and so must be reapplied at every boot and after the system wakes up from suspend to RAM or to disk. The procedure outlined below explains how to use the early microcode update driver in the kernel to apply microcode updates on each system boot.  &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;Microcode updates are lost after hard-reset or power off and so must be reapplied at every boot and after the system wakes up from suspend to RAM or to disk. The procedure outlined below explains how to use the early microcode update driver in the kernel to apply microcode updates on each system boot.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Terryn</name></author>
	</entry>
	<entry>
		<id>https://pclosusers.com/wiki/index.php?title=CPU_Microcode&amp;diff=1015&amp;oldid=prev</id>
		<title>Terryn: Recreated</title>
		<link rel="alternate" type="text/html" href="https://pclosusers.com/wiki/index.php?title=CPU_Microcode&amp;diff=1015&amp;oldid=prev"/>
		<updated>2025-07-31T13:18:35Z</updated>

		<summary type="html">&lt;p&gt;Recreated&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Processor manufacturers release stability and security updates to the processor microcode. While microcode is usually updated through the BIOS, not all vendors will release timely updates for their firmware, and most users don&amp;#039;t update their system firmware in a timely fashion (or at all) anyway. The Linux kernel is also able to apply these updates during boot. These updates provide bug fixes that can be critical to the stability of your system. Without these updates, you may experience spurious crashes or unexpected system halts that can be difficult to track down.&lt;br /&gt;
&lt;br /&gt;
Users of CPUs belonging to the Intel Haswell and Broadwell processor families in particular must install these microcode updates to ensure system stability but all Intel users should install microcode updates as a matter of course. &lt;br /&gt;
Use the &amp;#039;&amp;#039;&amp;#039;inxi&amp;#039;&amp;#039;&amp;#039; command to determine which CPU/family your system has.&lt;br /&gt;
&lt;br /&gt;
 [terry@xxxxx ~]$ inxi -xC&lt;br /&gt;
 CPU:       Quad core Intel Core i7-2600K (-HT-MCP-) &amp;lt;span style=&amp;quot;color:#0000FF&amp;quot;&amp;gt;arch: &amp;#039;&amp;#039;&amp;#039;Sandy Bridge rev.7&amp;#039;&amp;#039;&amp;#039;&amp;lt;/span&amp;gt;  cache: 8192 KB&lt;br /&gt;
            flags: (lm nx sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx) bmips: 27290&lt;br /&gt;
            clock speeds: max: 3800 MHz 1: 1600 MHz 2: 1599 MHz 3: 1599 MHz 4: 1599 MHz 5: 1601 MHz 6: 2050 MHz &lt;br /&gt;
            7: 1606 MHz 8: 1677 MHz&lt;br /&gt;
&lt;br /&gt;
Microcode updates are lost after hard-reset or power off and so must be reapplied at every boot and after the system wakes up from suspend to RAM or to disk. The procedure outlined below explains how to use the early microcode update driver in the kernel to apply microcode updates on each system boot. &lt;br /&gt;
&lt;br /&gt;
=== Creating the early microcode file ===&lt;br /&gt;
&lt;br /&gt;
This section details the procedures for creating the early microcode initrd image for the bootloader to pass to the kernel.  The procedure is different depending on whether it is for an Intel or AMD processor.&lt;br /&gt;
&lt;br /&gt;
==== Intel processors ====&lt;br /&gt;
&lt;br /&gt;
The actual microcode update files are included in the &amp;#039;&amp;#039;&amp;#039;kernel-firmware-extra&amp;#039;&amp;#039;&amp;#039; package. This package should be installed and kept up-to-date as part of the the normal Synaptic update process&lt;br /&gt;
&lt;br /&gt;
To enable the microcode update, users should install the &amp;#039;&amp;#039;&amp;#039;iucode-tool&amp;#039;&amp;#039;&amp;#039; package and then use the following command in a &amp;#039;&amp;#039;&amp;#039;root&amp;#039;&amp;#039;&amp;#039; terminal to generate an initrd image which can be loaded by the bootloader to update the microcode. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;[root@xxxx x86_64]#&amp;lt;/span&amp;gt; iucode_tool -S --write-earlyfw=/boot/early_ucode.img /lib/firmware/intel-ucode/*&lt;br /&gt;
 iucode_tool: system has processor(s) with signature 0x000206a7&lt;br /&gt;
 iucode_tool: Writing selected microcodes to: /boot/early_ucode.img&lt;br /&gt;
&lt;br /&gt;
This will need to be repeated whenever new microcode issued.  &lt;br /&gt;
&lt;br /&gt;
{{Note|The &amp;#039;&amp;#039;&amp;#039;iucode_tool&amp;#039;&amp;#039;&amp;#039; will not overwrite the target file so you should delete the existing file before running the command again.}} &lt;br /&gt;
&lt;br /&gt;
==== AMD processors ====&lt;br /&gt;
&lt;br /&gt;
The actual microcode update files are included in the &amp;#039;&amp;#039;&amp;#039;kernel-firmware&amp;#039;&amp;#039;&amp;#039; package. This package should be installed and kept up-to-date as part of the the normal Synaptic update process&lt;br /&gt;
&lt;br /&gt;
To enable the microcode update, users should install the &amp;#039;&amp;#039;&amp;#039;aucode-tool&amp;#039;&amp;#039;&amp;#039; package and then use the following command in a &amp;#039;&amp;#039;&amp;#039;root&amp;#039;&amp;#039;&amp;#039; terminal to generate an initrd image which can be loaded by the bootloader to update the microcode.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;[root@xxxx x86_64]#&amp;lt;/span&amp;gt; aucode-tool &lt;br /&gt;
  AuthenticAMD&lt;br /&gt;
 CPU family: 23&lt;br /&gt;
 Microcode file: microcode_amd_fam17h.bin&lt;br /&gt;
 Writing early_ucode image to /boot/early_ucode.img&lt;br /&gt;
 15 blocks &lt;br /&gt;
&lt;br /&gt;
This will need to be repeated whenever new microcode issued.&lt;br /&gt;
&lt;br /&gt;
=== Enabling Microcode Updates ===&lt;br /&gt;
&lt;br /&gt;
Microcode is loaded by the bootloader by adding &amp;#039;&amp;#039;/boot/early_ucode.img&amp;#039;&amp;#039; as the &amp;#039;&amp;#039;&amp;#039;first&amp;#039;&amp;#039;&amp;#039; initrd in the bootloader config file. This is in addition to the normal initrd file. &lt;br /&gt;
&lt;br /&gt;
For grub-legacy it can be added to the &amp;#039;&amp;#039;&amp;#039;initrd&amp;#039;&amp;#039;&amp;#039; line in the config file &amp;#039;&amp;#039;/boot/grub/menu.lst&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 title linux&lt;br /&gt;
 kernel (hd0,6)/boot/vmlinuz BOOT_IMAGE=linux root=UUID=e9f56fb4-2348-41ae-94d3-b92f0ee541c8 &lt;br /&gt;
 root (hd0,6)&lt;br /&gt;
 initrd /boot/early_ucode.img /boot/initrd.img&lt;br /&gt;
&lt;br /&gt;
Users of grub2 just need to run &amp;#039;&amp;#039;&amp;#039;update-grub2&amp;#039;&amp;#039;&amp;#039; to generate the new config file:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;[root@xxxxx x86_64]#&amp;lt;/span&amp;gt; update-grub2&lt;br /&gt;
 Generating grub configuration file ...&lt;br /&gt;
 Found theme: /boot/grub2/themes/pclinuxos/theme.txt&lt;br /&gt;
 Found linux image: /boot/vmlinuz-4.8.12-pclos1&lt;br /&gt;
 Found initrd image: &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;/boot/early_ucode.img&amp;lt;/span&amp;gt;  /boot/initrd-4.8.12-pclos1.img&lt;br /&gt;
&lt;br /&gt;
Notice how the &amp;#039;&amp;#039;early_ucode.img&amp;#039;&amp;#039; has been added to the &amp;#039;&amp;#039;&amp;#039;initrd&amp;#039;&amp;#039;&amp;#039; line. If all looks good then reboot the system&lt;br /&gt;
&lt;br /&gt;
=== Verifying that microcode got updated on boot  ===&lt;br /&gt;
&lt;br /&gt;
Use &amp;#039;&amp;#039;&amp;#039;dmesg&amp;#039;&amp;#039;&amp;#039; to check that the update has been applied successfully &lt;br /&gt;
&lt;br /&gt;
 [terry@xxxxx ~]$ dmesg | grep microcode&lt;br /&gt;
 [    0.000000] microcode: &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;microcode updated early to revision 0x29, date = 2013-06-12&amp;lt;/span&amp;gt;&lt;br /&gt;
 [    0.890510] microcode: sig=0x206a7, pf=0x2, revision=0x29&lt;br /&gt;
 [    0.890752] microcode: Microcode Update Driver: v2.01 &amp;lt;tigran@aivazian.fsnet.co.uk&amp;gt;, Peter Oruba&lt;br /&gt;
&lt;br /&gt;
The first line shows that the update has been applied.&lt;br /&gt;
&lt;br /&gt;
=== Other useful commands ===&lt;br /&gt;
&lt;br /&gt;
To see what version of microcode is currently running on the CPU:&lt;br /&gt;
&lt;br /&gt;
 [terry@xxxxx ~]$ grep -m 1 microcode /proc/cpuinfo &lt;br /&gt;
  microcode       : 0x2d&lt;br /&gt;
&lt;br /&gt;
==== For Intel processors ====&lt;br /&gt;
To see latest version available in kernel-firmware-extra package for your processor, first find the processor &amp;#039;&amp;#039;&amp;#039;signature&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&lt;br /&gt;
 [terry@xxxxx ~]$ iucode_tool -S&lt;br /&gt;
 iucode_tool: system has processor(s) with signature &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;0x000206a7&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then use that signature to grep for the latest version available:&lt;br /&gt;
&lt;br /&gt;
 [terry@xxxxx ~]$ iucode_tool -L /lib/firmware/intel-ucode/ | grep &amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;0x000206a7&amp;lt;/span&amp;gt;&lt;br /&gt;
   074/001: sig 0x000206a7, pf_mask 0x12, 2018-02-07, &amp;#039;&amp;#039;&amp;#039;&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt;rev 0x002d&amp;lt;/span&amp;gt;&amp;#039;&amp;#039;&amp;#039;, size 12288&lt;/div&gt;</summary>
		<author><name>Terryn</name></author>
	</entry>
</feed>