<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hardening on icon</title>
    <link>https://icon.sourcearcade.org/tags/hardening/</link>
    <description>Recent content in Hardening on icon</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <copyright>Nico Huber. All rights reserved</copyright>
    <lastBuildDate>Sat, 12 Sep 2026 23:32:00 +0200</lastBuildDate>
    <atom:link href="https://icon.sourcearcade.org/tags/hardening/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>The Training-Mode Boot Flow</title>
      <link>https://icon.sourcearcade.org/posts/training-mode_boot_flow/</link>
      <pubDate>Sat, 12 Sep 2026 23:32:00 +0200</pubDate>
      <guid>https://icon.sourcearcade.org/posts/training-mode_boot_flow/</guid>
      <description>&lt;pre&gt;&lt;code&gt;Modern PCs run a lot of proprietary firmware on their main CPUs. In the&#xA;past, it was sometimes possible to have all the initialisation steps in&#xA;open-source, for instance with the coreboot firmware framework. At some&#xA;point however, the initialisation process became more complex, and less&#xA;documented. Then, alas, open-source firmware fell behind.&#xA;&#xA;A huge part of this complexity comes with the DRAM training. Modern DDR&#xA;DRAM needs very precise timings, and the time a signal takes can differ&#xA;from hardware unit to hardware unit. Hence, special algorithms are used&#xA;to detect working timings at runtime. These timings are often stored in&#xA;the firmware flash, and are picked up on subsequent boots. In coreboot,&#xA;this is called MRC cache, named after Intel&#39;s Memory Reference Code.&#xA;&#xA;On AMD systems, the DRAM training and potentially more of the initiali-&#xA;sation is done by firmware on an auxiliary processor. When the main x86&#xA;CPU comes out of reset, DRAM is already available.  And thanks to AMD&#39;s&#xA;openSIL effort,  everything running on the x86 cores can be open-source&#xA;again.  The separation of the more complex, more proprietary steps from&#xA;the initialisation that runs on the x86 seems to pay off. Let&#39;s explore&#xA;a different separation that runs on a single processor and utilises the&#xA;idea of cached training data as a barrier, the Training-Mode Boot Flow.&#xA;&lt;/code&gt;&lt;/pre&gt;&#xA;&lt;p&gt;Open-source software is prevailing, because of its flexibility,&#xA;transparency and trustworthiness. In firmware, OTOH, we still have&#xA;proprietary components, often because of IP concerns. Mixing proprietary&#xA;and open-source firmware components on a single boot path has several&#xA;disadvantages.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
