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

退出打印视图

更新时间: 2014 年 9 月
 
 

pciv_vf_config() 接口

pciv_vf_config(9F) 接口由 SR-IOV 驱动程序使用,用于获取关于 VF 的配置信息,还用于在驱动程序连接期间配置 VF。

#include <sys/sunddi.h>
int pciv_vf_config(dev_info_t *dip, pciv_config_vf_t *vfcfg_p)

其中:

dip

指向 dev_info 结构的指针。

vfcfg_p

指向 pciv_config_vf 结构的指针。

typedef enum { 
                 PCIV_VFCFG_PARAM,
                 PCIV_VF_ENABLE,
						  PCIV_VF_DISABLE
                 PCIV_EVT_VFENABLE_PRE,
                 PCIV_EVT_VFENABLE_POST,
                 PCIV_EVT_VFDISABLE_PRE,
                 PCIV_EVT_VFDISABLE_POST
             } pciv_vf_config_cmd_t;

pciv_config_vf 结构包含以下字段:

typedef struct pciv_config_vf {
       		int version;
        		pciv_vf_config_cmd_t cmd;
        		uint16_t num_vf;
        		uint16_t first_vf_offset;
        		uint16_t vf_stride;
        		boolean_t ari_cap;
        		uint32_t page_size;
 	} pciv_config_vf_t;

其中:

version

版本号。

cmd

用于指示是否调用此接口来获取配置信息或连接 VF。

  • PCIV_VFCFG_PARAM-获取配置信息

  • PCIV_VF_ENABLE-启用 VF

    • PCIV_EVT_VFENABLE_PRE

    • PCIV_EVT_VFDISABLE_PRE

    • PCIV_EVT_VFENABLE_POST

    • PCIV_EVT_VFDISABLE_POST

num_vf

在后端定义的 VF 的数量。

vf_stride

两个 VF 之间的距离。

first_vf_offset

第一个 VF 与 PF 之间的偏移量。

ari_cap

具有 ARI 功能的分层结构。

page_size

指定系统页大小。

驱动程序首先应在将 cmd 字段设置为 PCIV_VFCFG_PARAM 的情况下调用 pciv_vfconfig() 接口来获取配置信息。然后,驱动程序应在将 cmd 字段设置为 PCIV_VF_ENABLE 的情况下再次调用此接口来配置 VF。

驱动程序可能会返回以下错误代码之一:

DDI_SUCCESS

DDI_FAILURE

PCIV_REQRESET

PCIV_REQREATTACH

在调用 pciv_vf_config() 接口来启用 VF 之前,驱动程序不必通过设置 DDI_CB_FLAG_SRIOV 位来注册回调。不过,要在 SR-IOV 框架未配置 VF 时接收通知,驱动程序必须在启用 VF 后通过设置 DDI_CB_FLAG_SRIOV 位来注册回调。有关更多信息,请参见Driver Callbacks

可支持 VF 的所有 PF 驱动程序应该通过在标志参数中设置 DDI_CB_FLAG_SRIOV 标志的情况下调用 ddi_cb_register(9F) 来通知 PCIe 框架它们的容量。在驱动程序的连接例程中必须调用 ddi_cb_register() 函数。如果 PF 设备驱动程序在其连接例程中调用 pciv_vf_config() 函数来启用 VF,则 PF 驱动程序应在启用 VF 后调用 ddi_cb_register() 函数。

框架需要使用 DDI_CB_FLAG_SRIOV 标志才能执行以下操作:

  • 向 Sparc OVM 代理指示存在可支持 VF 的设备驱动程序。Sparc OVM 代理随后将允许创建 VF 设备。如果没有此功能,用户将无法在 Sparc 平台上创建 VF。

  • 框架在禁用 VF 前后将回调 PF 驱动程序。这将有助于 PF 驱动程序执行内部记帐以持续支持 VF。