编写适用于 Oracle® Solaris 11.2 的设备驱动程序

退出打印视图

更新时间: 2014 年 9 月
 
 

pci.conf 文件

本节介绍 pci.conf 文件及其用法和语法。

说明

引入 pci.conf 是为了保存 PCI 配置,如系统上的某个特定 PF(Physical Function,物理功能)的 VF(Virtual Function,虚拟功能)的数目。该文件具有以下几个用途:

  • 持久保留 PCI 配置,以便在引导时可以自动创建 VF。

  • 由于配置文件是 boot_archive 的一部分,因此在引导过程中可以使用 VF。

在裸机系统上使用 VF 时,该文件还可以供非 IOV 系统配置使用。当前,该文件只包含与 VF 相关的配置。将来,更多特定于 PCI 总线的配置甚至特定于设备的解决方法可能会包含到该文件中。VF 配置的数目保存在 "[System_Configuration]" 部分中,类似于以下示例:

[System_Configuration]
[[path=<pf_device_path>]]
num-vf=<num_of_vf>

系统配置部分

文件的 [System_Configuration] 部分由 Oracle Solaris PCIe 框架进行解释。无法识别的关键字将被标记为错误。整个文件中只有一个 [System_Configuration] 部分,并且它必须位于文件的开头。

[System_Configuration] 部分由一系列子部分组成。每个子部分必须有一个唯一的文本标签,后跟一个括在方括号中的过滤器列表(与要关注的设备相匹配)。每个子部分的内容都是一个操作列表,框架将针对每个匹配的设备执行这些操作。例如:

[System_Configuration]
     new_e1kg_driver [[id=0x8086,0x1000,,0x108e,]] [[classcode=0x020000]]
     num-vf=4

双括号中的过滤器将匹配系统中具有设备 ID 0x1000、Sun 子系统供应商 ID 以及网络控制器类别代码的所有 Intel 设备。Oracle Solaris 将设备的 VF 数设置为 4。


注 - 可在过滤器中使用设备路径来将过滤器的作用域缩小到单个设备实例。

设备配置部分

[Device_Configuration] 部分包含与 [System_Configuration] 部分相同类型的子部分,不同之处是它的内容仅由与过滤器匹配的设备的驱动程序进行解释。

Device Configuration]
     # label must be file-globally unique
     igbe-sriov-test [[path=/pci@0,0/network@2]]
     # number of rx/tx ring pairs for each VF
     dma-channel-distribution=2,2,8,4

语法

/etc/pci.conf = <system section><device section>
<system section> = "[System_Configuration]" {<framework subsection>}*
<device section> = "[Device_Configuration]" {<device subsection>}*
<framework subsection> = <label> [ {filter>}* ]
[ {<framework action>}+ ]
<device subsection> = <label> [ {<filter>}+* ] <devicenvlist>
<filter> = [ "[[" "id" "=" (vendorid>) "," (<deviceid>) "," (<revisionid>) "," (<subsystem-vendorid>) "," (<subsystemid>)"]]"] 
| ["[[" "classcode" "=" <classcode> (,<mask>) "]]" ] | [ "[[" "path"
"=" ,devpath> "]]"]
<framework action> = [ "num-vf" "=" <val>]
<deice nvlist> = [ {name string> "=" <value string>} +]

参考资料

另请参见 pci_param_get(9F)