how to assign more that 31 VFs to one VM

-v0.1 2017.3.11 Sherlock init
-v0.2 2017.4.5 Sherlock add PCIe switch picture

用QEMU模拟PCIe设备的时候,一般最多可以在系统中配置31个PCIe设备。比如,我们有这样
的QEMU启动参数配置:

       qemu-system-aarch64 \-machine virt,gic-version=3 \-enable-kvm \-cpu host \-m 1024 \-kernel ./Image \-initrd ./minifs.cpio.gz \-nographic \-net none \-device vfio-pci,host=0002:81:10.0,id=net0 \-device vfio-pci,host=0002:81:20.0,id=net1 \

上面的配置中,我们使用了host上的两个82599网卡的vf: 0002:81:10.0, 0002:81:20.0,
把它们直通到了guest上,可以看到这两个vf在guest上会直接连到pci bus 0上。按照同样
的方法,我们可以给一个虚拟机继续增加网口。但是这样的方式增加最多只能到31个vf[1]

这是因为PCIe中规定一条总线下最多只能接32个设备。

为了在一个虚拟机上接入更多的设备,我们可以接入一个PCIe switch,在switch的下游
端口上再接需要的PCIe设备。比如,我有可以如下启动一个QEMU虚拟机:

       qemu-system-aarch64 \-machine virt,gic-version=3 \-enable-kvm \-cpu host \-m 1024 \-kernel ./Image \-initrd ./minifs.cpio.gz \-nographic \-net none \-device ioh3420,id=root_port1 \-device x3130-upstream,id=upstream_port1,bus=root_port1 \-device xio3130-downstream,id=downstream_port1,bus=upstream_port1,chassis=1,slot=1 \-device xio3130-downstream,id=downstream_port2,bus=upstream_port1,chassis=1,slot=2 \-device xio3130-downstream,id=downstream_port3,bus=upstream_port1,chassis=1,slot=3 \-device xio3130-downstream,id=downstream_port4,bus=upstream_port1,chassis=1,slot=4 \-device xio3130-downstream,id=downstream_port5,bus=upstream_port1,chassis=1,slot=5 \-device vfio-pci,host=0002:81:10.0,id=net0,bus=downstream_port1 \-append 'console=ttyAMA0 root=/dev/vda2' \-nographic \

上面的命令行参数可以搭建一个如下图所示的PCIe switch

   pcie.0 bus--------------------------------------------------------------------------|-------------| Root Port1|--------------------------------------|-------------------------------------------|                 -----------------------------------------         ||    PCI Express  | Upstream Port1                        |         ||      Switch     -----------------------------------------         ||                  |            |                                   ||    -------------------    -------------------                     ||    | Downstream Port1|    | Downstream Port2|       ....          ||    -------------------    -------------------                     |-------------|-----------------------|-------------------------------------------                                                 | PCIe Dev | vfio-pci device------------

[1] Fix me: 为什么是31个不是32个?
[2] qemu/docs/pcie.txt

how to assign more that 31 VFs to one VM相关推荐

  1. Mips架构32位CPU实现(31条指令)Verilog

    CPU模块设计 cpu模块主要是将各个模块组合正在一起 数据通路图: 详见代码: `timescale 1ns / 1psmodule cpu(input clk, //时钟沿信号input rst, ...

  2. 31条指令单周期cpu设计(Verilog)-(九)上代码→基本模块

    不再赘述,直接上 mux `timescale 1ns / 1ns module mux(input [31:0] a,input [31:0] b,input choose,output reg [ ...

  3. 31条指令单周期cpu设计(Verilog)-(八)上代码→指令译码以及控制器

    说在前面 开发环境:Vivado 语言:Verilog cpu框架:Mips 控制器:组合逻辑 指令译码器 我们需要根据一条32位的指令的结构确定是哪一条指令 可以根据操作码(op)以及功能码(fun ...

  4. FPGA之道(33)Verilog数据类型

    文章目录 前言 Verilog数据类型 Verilog四值逻辑系统 寄存器数据类型 reg integer real 线网数据类型 wire tri supply1/supply0 wand/tria ...

  5. (原創) 深入探討blocking與nonblocking (SOC) (Verilog)

    Abstract Verilog雖然是個語法簡單的語言,但是blocking與nonblocking卻是大家學習Verilog時永遠的痛,即時是很資深的IC Designer,也未必完全搞清楚兩者的差 ...

  6. 自己动手写CPU(5)简单算术操作指令实现_1

    自己动手写CPU(5)简单算数操作指令实现_1 指令介绍 MIPS32指令集架构定义的所有算术操作指令,共有21条 共有三类,分别是: 简单算术指令 乘累加.乘累减指令 除法指令 算术指令操作介绍 一 ...

  7. 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记

    对Verilog 初学者比较有用的整理(转自它处) 作者: Ian11122840 时间: 2010-9-27 09:04 标题: 菜鸟做设计必看!有关如何做设计的整体思路,以及能否综合的笔记 所谓综 ...

  8. 将GPIO外设挂到Cortex_M3 AHB总线上详细流程扩展外设步骤总结

    使用一个外设之前,你要弄明白这个外设是干什么的,它是怎样工作的,它的输入输出接口都是啥,你还要知道怎样给外设分配地址. GPIO的具体硬件结构在这里不多说了.(如果你要自己写代码,那硬件结构必须弄得明 ...

  9. FPGA开平方的实现

    3种方法: 1.JPL近似的实现方法 `timescale 1ns / 1ps module complex_abs#(parameter N=32)(clk,syn_rst,dataa,datab, ...

最新文章

  1. 学计算机应用好还是汽车维修好,大学汽车运用与维修专业怎么样_学什么_前景好吗-520吉他网...
  2. tensorflow1.14.0安装不上,报错
  3. 皮一皮:所以说女生的好奇心不能太大...
  4. bond、服务器登录、跟踪数据包的路由
  5. 纯JS前端分页方法(JS分页)
  6. C语言强化——学生管理系统
  7. phpmyadmin设置自动登录和取消自动登录
  8. Windows XP Home Edition安裝 IIS 的方法
  9. 前缀无歧义编码(PFC)
  10. WIN7 X64完美卸载SQL2008 R2并重装SQL2008
  11. C++语法篇之STL库
  12. 39岁java程序员,失业中,看不到希望,很迷茫,路在何方?
  13. 【最短路】【spfa】CDOJ1633 去年春恨却来时,落花人独立,微雨燕双飞
  14. C/C++中取地址符的语义
  15. Tinify API批处理压缩PNG和JPG(Java版本)
  16. html制作qq会员页面,QQ会员页面导航.html
  17. Jboot框架的使用
  18. RStudio介绍及入门
  19. 通过Dockerfile创建docker镜像
  20. 什么是utf8mb4和utf8mb3区别?

热门文章

  1. 渡课学习第17天:JavaScript一脸懵逼
  2. (day12)css3基础
  3. minigui 的中文字体部署及支持窗口模态、非模态
  4. 机器人唱歌bgm_变形金刚5所有背景乐插曲盘点 长老机器人弹钢琴BGM是什么歌
  5. 华为鲲鹏云服务技术与运用 部分习题
  6. 解决Failing package is:mysql-community-icu-data-files-8.0.29-1.el7.x86_64 GPG Keys are configured as..
  7. JZOJ.5236【NOIP2017模拟8.7】利普希茨
  8. 台湾科技挣扎,人祸大于天灾?
  9. 解决 eclipse 上 Keystore was tampered with, or password was incorrect
  10. jQuery的ready方法实现原理分析