仅对英特尔可见 — GUID: rqv1614045106774
Ixiasoft
仅对英特尔可见 — GUID: rqv1614045106774
Ixiasoft
3.2.2.4. VirtIO PCI配置访问接口
要访问VirtIO器件区域,pci_cfg_data将会向偏移cap.offset处的给定cap.bar (0x0 – 0x5)提供大小为cap.length(1、2或者4字节)的窗口(cap.length的倍数)。用户应用逻辑的详细接口映射如下表所示。
对于VirtIO器件,在检测到驱动程序对pci_cfg_data的写访问后,用户应用端的VirtIO器件必须适用从pci_cfg_data来的第一个cap.length字节在cap.bar选择的BAR中cap.offset位置执行写访问。此外,在检测到驱动程序对pci_cfg_data的读访问后,用户应用端的VirtIO器件必须在cap.bar选择的BAR中cap.offset位置执行长度为cap.length的读访问,并将第一个cap.length字节存储在pci_cfg_data中。
名称 | 方向 | 描述 | 时钟域 |
---|---|---|---|
pX_virtio_pcicfg_vfaccess_o其中X = 0, 1 | O | 指示驱动程序访问的是VF。 从virtio_pcicfg_vfnum_o的值识别对应的Virtual Function。 |
slow_clk |
pX_virtio_pcicfg_vfnum_o[VFNUM_WIDTH-1:0]其中X = 0, 1 | O | 指示与当前Physical Function相关联的Virtual Function的对应编号,该Physical Function是驱动程序的读写访问对象。 由virtio_pcicfg_vfaccess_o,和驱动程序到pci_cfg_data的写访问权限,或者驱动程序到pci_cfg_data的读访问权限进行验证。 |
slow_clk |
pX_virtio_pcicfg_pfnum_o[PFNUM_WIDTH-1:0]其中X = 0, 1 | O | 指示相应的Physical Function编号,该Physical Function是驱动程序的写或读访问对象。 由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。 |
slow_clk |
pX_virtio_pcicfg_bar_o[7:0]其中X = 0, 1 | O | 指示BAR保持PCI configuration access structure。驱动程序通过写入cap.bar来设置要访问的BAR。值0x0到0x5指定一个BAR,而该BAR属于PCI Configuration Space中位于10h开始处的功能。 该BAR可以是32-bit或64-bit。 由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。 使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。 |
slow_clk |
pX_virtio_pcicfg_length_o[31:0]其中X = 0, 1 | O | 指示结构的长度。该长度可能包括padding(填充),或驱动程序未使用的字段,或者未来的扩展。该驱动程序将1、2或4写入cap.length来设置访问的大小。 由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。 使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。 |
slow_clk |
pX_virtio_pcicfg_baroffset_o[31:0]其中X = 0, 1 | O | 指示该结构相对于BAR相关的基地址的开始位置。该驱动程序通过写入cap.offset来设置BAR内的偏移。 由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。 使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。 |
slow_clk |
pX_virtio_pcicfg_cfgdata_o[31:0]其中X = 0, 1 | O | 指示BAR访问的数据。pci_cfg_data将在偏移cap.offset处提供一个cap.length大小的窗口到给定cap.bar中。 由驱动程序到pci_cfg_data的写访问,或者驱动程序到pci_cfg_data的读访问来验证。 使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。 |
slow_clk |
pX_virtio_pcicfg_cfgwr_o其中X = 0, 1 | O | 指示驱动程序对pci_cfg_data的写访问。 使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。 |
slow_clk |
pX_virtio_pcicfg_cfgrd_o其中X = 0, 1 | O | 指示驱动程序对pci_cfg_data的读访问。 使用从virtio_pcicfg_p/vfnum_o来的值识别对应的PF或VF。 |
slow_clk |
pX_virtio_pcicfg_appvfnum_i[VFNUM_WIDTH-1:0]其中X = 0, 1 | I | 指示与当前Physical Function相关联的Virtual Function的对应编号,当前Physical Function使用的是application config数据存储器。 由virtio_pcicfg_rdack_i验证。 |
slow_clk |
pX_virtio_pcicfg_apppfnum_i[PFNUM_WIDTH-1:0]其中X = 0, 1 | I | 指示application config数据存储器存储的对应Physical Function编号。 由virtio_pcicfg_rdack_i验证。 |
slow_clk |
pX_virtio_pcicfg_rdack_i其中X = 0, 1 | I | 指示应用程序读访问数据确认储存pci_cfg_data中的config数据。通常合理的确认延迟不超过10个周期。 使用从virtio_pcicfg_appvfnum_i来的值识别对应的Virtual Function。 |
slow_clk |
pX_virtio_pcicfg_rdbe_i[3:0]其中X = 0, 1 | I | 指示virtio_pcicfg_data_i内应用程序已使能的字节。 由virtio_pcicfg_rdack_i验证。 使用从virtio_pcicfg_appvfnum_i来的值识别对应的Virtual Function。 对于Hard IP的当前实现,这些信号被绑定到高电平。 |
slow_clk |
pX_virtio_pcicfg_data_i[31:0]其中X = 0, 1 | I | 指示将要存储在PCI Configuration Access数据寄存器中的应用程序数据。 由virtio_pcicfg_rdack_i和virtio_pcicfg_rdbe_i来验证。 使用从virtio_pcicfg_appvfnum_i来的值识别对应的Virtual Function。 |
slow_clk |