> For the complete documentation index, see [llms.txt](https://book.bsdcn.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://book.bsdcn.org/man/man4/imcsmb.4.md).

# imcsmb.4

`imcsmb` — Intel 集成内存控制器（iMC）SMBus 控制器驱动

## 名称

`imcsmb`

## 概要

`device pci device smbus device imcsmb`

或者，要在引导时以模块形式加载该驱动，请在 loader.conf(5) 中加入以下行：

```sh
imcsmb_load="YES"
```

## 描述

`imcsmb` 驱动为内嵌于 Intel Sandybridge-Xeon、Ivybridge-Xeon、Haswell-Xeon 和 Broadwell-Xeon CPU 中的集成内存控制器（iMC）内的 SMBus 控制器功能提供 [smbus(4)](/man/man4/smbus.4.md) 支持。每颗 CPU 实现一个或多个 iMC，数量取决于核心数；每个 iMC 实现两个 SMBus 控制器（iMC-SMB）。iMC 在 POST 期间使用 iMC-SMB 从 DIMM 读取配置信息。它们也可被主板固件或 BMC 用于监测 DIMM 的温度。

iMC-SMB **并非**通用 SMBus 控制器。从其本质来说，它们只连接到 DIMM，因此仅实现与 DIMM 通信所需的 SMBus 操作。具体如下：

* READB
* READW
* WRITEB
* WRITEW

关于硬件和驱动程序架构的更详细讨论可参见 `sys/dev/imcsmb/imcsmb_pci.c` 的顶部注释。

## 警告

如上所述，固件可能使用 iMC-SMB 读取 DIMM 温度。公开的 iMC 文档并未描述任何协调机制，以防止来自不同来源的请求——例如主板固件、BMC 或操作系统——彼此干扰。

**因此，强烈建议开发者联系主板厂商，获取有关如何禁用和重新启用 DIMM 温度监测的板载专属说明。**

在从 `imcsmb_pci_request_bus` 返回之前，应当禁用 DIMM 温度监测；在从 `imcsmb_pci_release_bus` 返回之前，应当重新启用它。该驱动在相应位置包含了相应的注释。该驱动经过测试，仅需此类修改即可在某些 Intel 主板上正常工作。（遗憾的是，这些修改基于受保密协议保护的材料，因此未包含在此驱动中。）该驱动也经过测试，可在 SuperMicro 的多种主板上按原样正常工作。

[smb(4)](/man/man4/smb.4.md) 驱动会连接到由 `imcsmb` 创建的 [smbus(4)](/man/man4/smbus.4.md) 实例。然而，由于 iMC-SMB 并非通用 SMBus 控制器，不支持在这些 [smb(4)](/man/man4/smb.4.md) 设备上使用 smbmsg(8)。

## 参见

[jedec\_dimm(4)](/man/man4/jedec_dimm.4.md), [smbus(4)](/man/man4/smbus.4.md)

## 历史

`imcsmb` 驱动首次出现于 FreeBSD 12.0。

## 作者

`imcsmb` 驱动最初由 Joe Kloss 为 Panasas 编写。随后由 Ravi Pokala <rpokala@freebsd.org> 进行了大量重构，并编写了本手册页。


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://book.bsdcn.org/man/man4/imcsmb.4.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
