summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/jedec_dimm.4 3.html
diff options
context:
space:
mode:
Diffstat (limited to 'static/freebsd/man4/jedec_dimm.4 3.html')
-rw-r--r--static/freebsd/man4/jedec_dimm.4 3.html193
1 files changed, 193 insertions, 0 deletions
diff --git a/static/freebsd/man4/jedec_dimm.4 3.html b/static/freebsd/man4/jedec_dimm.4 3.html
new file mode 100644
index 00000000..71cd7359
--- /dev/null
+++ b/static/freebsd/man4/jedec_dimm.4 3.html
@@ -0,0 +1,193 @@
+<table class="head">
+ <tr>
+ <td class="head-ltitle">JEDEC_DIMM(4)</td>
+ <td class="head-vol">Device Drivers Manual</td>
+ <td class="head-rtitle">JEDEC_DIMM(4)</td>
+ </tr>
+</table>
+<div class="manual-text">
+<section class="Sh">
+<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
+<p class="Pp"><code class="Nm">jedec_dimm</code> &#x2014;
+ <span class="Nd">report asset information and temperatures for JEDEC DDR3 /
+ DDR4 DIMMs</span></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SYNOPSIS"><a class="permalink" href="#SYNOPSIS">SYNOPSIS</a></h1>
+<div class="Bd Bd-indent"><code class="Cd">device jedec_dimm</code>
+<br/>
+<code class="Cd">device smbus</code></div>
+<p class="Pp">Alternatively, to load the driver as a module at boot time, place
+ the following line in <a class="Xr">loader.conf(5)</a>:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>jedec_dimm_load=&quot;YES&quot;</pre>
+</div>
+<p class="Pp">Addressing information must be manually specified in
+ <span class="Pa">/boot/device.hints</span>:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre><code class="Cd">hint.jedec_dimm.0.at=&quot;smbus0&quot;</code>
+<br/>
+<code class="Cd">hint.jedec_dimm.0.addr=&quot;0xa0&quot;</code>
+<br/>
+<code class="Cd">hint.jedec_dimm.0.slotid=&quot;Silkscreen&quot;</code></pre>
+</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
+<p class="Pp">The <code class="Nm">jedec_dimm</code> driver reports asset
+ information (Part Number, Serial Number) encoded in the &#x201C;Serial
+ Presence Detect&#x201D; (SPD) data on JEDEC DDR3 and DDR4 DIMMs. It also
+ calculates and reports the memory capacity of the DIMM, in megabytes. If the
+ DIMM includes a &#x201C;Thermal Sensor On DIMM&#x201D; (TSOD), the
+ temperature is also reported.</p>
+<p class="Pp">The <code class="Nm">jedec_dimm</code> driver accesses the SPD and
+ TSOD over the <a class="Xr">smbus(4)</a>.</p>
+<p class="Pp">The data is reported via a <a class="Xr">sysctl(8)</a> interface;
+ all values are read-only:</p>
+<dl class="Bl-tag">
+ <dt id="dev.jedec_dimm.X._desc"><var class="Va">dev.jedec_dimm.X.%desc</var></dt>
+ <dd>a string description of the DIMM, including TSOD and slotid info if
+ present.</dd>
+ <dt id="dev.jedec_dimm.X.capacity"><var class="Va">dev.jedec_dimm.X.capacity</var></dt>
+ <dd>the DIMM's memory capacity, in megabytes</dd>
+ <dt id="dev.jedec_dimm.X.mfg_week"><var class="Va">dev.jedec_dimm.X.mfg_week</var></dt>
+ <dd>the week within the year in which the DIMM was manufactured</dd>
+ <dt id="dev.jedec_dimm.X.mfg_year"><var class="Va">dev.jedec_dimm.X.mfg_year</var></dt>
+ <dd>the year in which the DIMM was manufactured</dd>
+ <dt id="dev.jedec_dimm.X.part"><var class="Va">dev.jedec_dimm.X.part</var></dt>
+ <dd>the manufacturer's part number of the DIMM</dd>
+ <dt id="dev.jedec_dimm.X.serial"><var class="Va">dev.jedec_dimm.X.serial</var></dt>
+ <dd>the manufacturer's serial number of the DIMM</dd>
+ <dt id="dev.jedec_dimm.X.slotid"><var class="Va">dev.jedec_dimm.X.slotid</var></dt>
+ <dd>a copy of the corresponding hint, if set</dd>
+ <dt id="dev.jedec_dimm.X.temp"><var class="Va">dev.jedec_dimm.X.temp</var></dt>
+ <dd>if a TSOD is present, the reported temperature</dd>
+ <dt id="dev.jedec_dimm.X.type"><var class="Va">dev.jedec_dimm.X.type</var></dt>
+ <dd>the DIMM type (DDR3 or DDR4)</dd>
+</dl>
+<p class="Pp">These values are configurable for
+ <code class="Nm">jedec_dimm</code> via
+ <a class="Xr">device.hints(5)</a>:</p>
+<dl class="Bl-tag">
+ <dt id="hint.jedec_dimm.X.at"><var class="Va">hint.jedec_dimm.X.at</var></dt>
+ <dd>the <a class="Xr">smbus(4)</a> to which the DIMM is connected</dd>
+ <dt id="hint.jedec_dimm.X.addr"><var class="Va">hint.jedec_dimm.X.addr</var></dt>
+ <dd>the SMBus address of the SPD. JEDEC specifies that the four
+ most-significant bits of the address are the &#x201C;Device Type
+ Identifier&#x201D; (DTI), and that the DTI of the SPD is 0xa. Since the
+ least-significant bit of an SMBus address is the read/write bit, and is
+ always written as 0, that means the four least-significant bits of the
+ address must be even.</dd>
+ <dt id="hint.jedec_dimm.X.slotid"><var class="Va">hint.jedec_dimm.X.slotid</var></dt>
+ <dd>optional slot identifier. If populated with the DIMM slot name
+ silkscreened on the motherboard, this provides a mapping between the DIMM
+ slot name and the DIMM serial number. That mapping is useful for detailed
+ asset tracking, and makes it easier to physically locate a specific DIMM
+ when doing a replacement. This is useful when assembling multiple
+ identical systems, as might be done by a system vendor. The mapping
+ between bus/address and DIMM slot must first be determined, either through
+ motherboard documentation or trial-and-error.</dd>
+</dl>
+<p class="Pp">If the DIMMs are on an I2C bus behind an
+ <a class="Xr">iicbus(4)</a> controller, then the <a class="Xr">iicsmb(4)</a>
+ bridge driver can be used to attach the <a class="Xr">smbus(4)</a>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="EXAMPLES"><a class="permalink" href="#EXAMPLES">EXAMPLES</a></h1>
+<p class="Pp">Consider two DDR4 DIMMs with the following hints:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>hint.jedec_dimm.0.at=&quot;smbus0&quot;
+hint.jedec_dimm.0.addr=&quot;0xa0&quot;
+hint.jedec_dimm.0.slotid=&quot;A1&quot;
+
+hint.jedec_dimm.6.at=&quot;smbus1&quot;
+hint.jedec_dimm.6.addr=&quot;0xa8&quot;</pre>
+</div>
+<p class="Pp">Their <a class="Xr">sysctl(8)</a> output (sorted):</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>dev.jedec_dimm.0.%desc: DDR4 DIMM w/ Atmel TSOD (A1)
+dev.jedec_dimm.0.%driver: jedec_dimm
+dev.jedec_dimm.0.%location: addr=0xa0
+dev.jedec_dimm.0.%parent: smbus0
+dev.jedec_dimm.0.%pnpinfo:
+dev.jedec_dimm.0.capacity: 16384
+dev.jedec_dimm.0.mfg_week: 30
+dev.jedec_dimm.0.mfg_year: 17
+dev.jedec_dimm.0.part: 36ASF2G72PZ-2G1A2
+dev.jedec_dimm.0.serial: 0ea815de
+dev.jedec_dimm.0.slotid: A1
+dev.jedec_dimm.0.temp: 32.7C
+dev.jedec_dimm.0.type: DDR4
+
+dev.jedec_dimm.6.%desc: DDR4 DIMM w/ TSE2004av compliant TSOD
+dev.jedec_dimm.6.%driver: jedec_dimm
+dev.jedec_dimm.6.%location: addr=0xa8
+dev.jedec_dimm.6.%parent: smbus1
+dev.jedec_dimm.6.%pnpinfo:
+dev.jedec_dimm.6.capacity: 8192
+dev.jedec_dimm.6.mfg_week: 13
+dev.jedec_dimm.6.mfg_year: 19
+dev.jedec_dimm.6.part: VRA9MR8B2H1603
+dev.jedec_dimm.6.serial: 0c4c46ad
+dev.jedec_dimm.6.temp: 43.1C
+dev.jedec_dimm.6.type: DDR4</pre>
+</div>
+<p class="Pp">You can use <a class="Xr">smbmsg(8)</a> to probe for devices.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="COMPATIBILITY"><a class="permalink" href="#COMPATIBILITY">COMPATIBILITY</a></h1>
+<p class="Pp"><code class="Nm">jedec_dimm</code> implements a superset of the
+ functionality of the now-deleted <a class="Xr">jedec_ts(4)</a>. Hints for
+ <a class="Xr">jedec_ts(4)</a> can be mechanically converted for use with
+ <code class="Nm">jedec_dimm</code>. Two changes are required:</p>
+<ol class="Bl-enum">
+ <li>In all <a class="Xr">jedec_ts(4)</a> hints, replace
+ &#x201C;jedec_ts&#x201D; with &#x201C;jedec_dimm&#x201D;</li>
+ <li>In <a class="Xr">jedec_ts(4)</a> &#x201C;addr&#x201D; hints, replace the
+ TSOD DTI &#x201C;0x3&#x201D; with the SPD DTI &#x201C;0xa&#x201D;</li>
+</ol>
+<p class="Pp">The following <a class="Xr">sed(1)</a> script will perform the
+ necessary changes:</p>
+<div class="Bd Pp Bd-indent Li">
+<pre>sed -i &quot;.old&quot; -e 's/jedec_ts/jedec_dimm/' \
+ -e '/jedec_dimm/s/addr=&quot;0x3/addr=&quot;0xa/' /boot/device.hints</pre>
+</div>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
+ ALSO</a></h1>
+<p class="Pp"><a class="Xr">iicbus(4)</a>, <a class="Xr">iicsmb(4)</a>,
+ <a class="Xr">smbus(4)</a>, <a class="Xr">sysctl(8)</a></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="STANDARDS"><a class="permalink" href="#STANDARDS">STANDARDS</a></h1>
+<p class="Pp"><cite class="Rs">(DDR3 SPD) <span class="RsA">JEDEC</span>,
+ <span class="RsT">Standard 21-C, Annex K</span>.</cite></p>
+<p class="Pp"><cite class="Rs">(DDR3 TSOD) <span class="RsA">JEDEC</span>,
+ <span class="RsT">Standard 21-C, TSE2002av</span>.</cite></p>
+<p class="Pp"><cite class="Rs">(DDR4 SPD) <span class="RsA">JEDEC</span>,
+ <span class="RsT">Standard 21-C, Annex L</span>.</cite></p>
+<p class="Pp"><cite class="Rs">(DDR4 TSOD) <span class="RsA">JEDEC</span>,
+ <span class="RsT">Standard 21-C, TSE2004av</span>.</cite></p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
+<p class="Pp">The <code class="Nm">jedec_dimm</code> driver first appeared in
+ <span class="Ux">FreeBSD 12.0</span>.</p>
+</section>
+<section class="Sh">
+<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
+<p class="Pp">The <code class="Nm">jedec_dimm</code> driver and this manual page
+ were written by <span class="An">Ravi Pokala</span>
+ &lt;<a class="Mt" href="mailto:rpokala@freebsd.org">rpokala@freebsd.org</a>&gt;.
+ They are both based in part on the now-deleted <a class="Xr">jedec_ts(4)</a>
+ driver and manual page, written by <span class="An">Andriy Gapon</span>
+ &lt;<a class="Mt" href="mailto:avg@FreeBSD.org">avg@FreeBSD.org</a>&gt;.</p>
+</section>
+</div>
+<table class="foot">
+ <tr>
+ <td class="foot-date">January 2, 2026</td>
+ <td class="foot-os">FreeBSD 15.0</td>
+ </tr>
+</table>