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 ドライバはすべて、その機能を PCIe フレームワークに知らせるために、flags 引数に DDI_CB_FLAG_SRIOV フラグを設定して ddi_cb_register(9F) を呼び出す必要があります。ddi_cb_register() 関数は、ドライバの接続ルーチン内で呼び出す必要があります。PF デバイスドライバがその接続ルーチン内で pciv_vf_config() 関数を呼び出して VF を有効化する場合、PF ドライバは VF の有効化後に ddi_cb_register() 関数を呼び出すべきです。

フレームワークは、次のアクションを実行する際に DDI_CB_FLAG_SRIOV フラグを必要とします。

  • VF をサポートできるデバイスドライバが存在することを Sparc OVM エージェントに示します。すると、Sparc OVM エージェントは VF デバイスの作成を許可します。この機能がないと、ユーザーは SPARC プラットフォーム上で VF を作成できません。

  • フレームワークは、VF を無効にする前とあとで、PF ドライバに対してコールバックを発行します。これにより、PF ドライバは VF サポートのための内部管理作業を容易に行えるようになります。