哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

關于VFIO的詳細研究解析

Linux閱碼場 ? 來源:博客園 ? 作者:EwanHai ? 2021-05-02 11:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

主要研究VFIO在虛擬化中的應用,但VFIO的應用不止于虛擬化。

VFIO的全稱是Virtual Function IO,但這個名字并不能反應它的特點,以下兩個假名字更能反應VFIO的特點:

Very Fast IO

由于VFIO是將設備直接透傳給虛擬機,所以Guest中與該設備相關的IO性能會大幅提高,接近native性能。

Versatile Framework for userspace IO

這個名字反映了VFIO的功能,即能夠將device安全地映射到用戶空間,使用戶能夠對device進行操作。

研究目的

研究利用-device vfio-pci的方式將PCI透傳到虛擬機中后,在虛擬機中訪問PCI設備的配置空間,MMIO寄存器,IO Port的流程是怎樣的。

VFIO原理

VFIO把設備通過IOMMU映射的DMA物理內存地址映射到用戶態(tài)中,讓用戶態(tài)程序可以自行操縱數據的傳輸,還可以自行注冊中斷處理函數,從而在用戶態(tài)下實現(xiàn)設備的驅動程序。

因此VFIO的基礎是IOMMU.

IOMMU

基礎功能

地址翻譯

IOMMU可以將能直接訪問memory的IO總線(DMA–capable)連接到RAM中。

與傳統(tǒng)的MMU功能類似,MMU能將CPU使用的虛擬地址轉化為物理地址,而IOMMU能將device使用的虛擬地址(也稱為設備地址或者IO地址)轉化為物理地址。

如果沒有IOMMU,DMA也能直接訪問RAM中的內容,但是讓DMA沒有限制地訪問RAM是一件很危險的事情,而IOMMU能夠對這個過程加以限制,當DMA訪問的地址合法時,IOMMU才返回正確的數據。

硬件中斷重映射

除了翻譯地址的功能,IOMMU還能對硬件中斷進行重映射,達到屏蔽部分中斷,或自定義中斷處理函數的目的。

設備隔離

基于地址翻譯和硬件中斷重映射兩大功能,IOMMU就具有了隔離設備的能力,這提高了設備訪問RAM時和設備發(fā)出中斷時的安全性。

除了將單個設備隔離的功能外,IOMMU還能隔離一組設備,如隔離PCI橋上的幾個設備,所以IOMMU還有一個概念,叫做IOMMU_GROUP, 代表一組被隔離的設備的集合。

通過把host的device和對應driver解綁,然后綁定在VFIO的driver上,就會在/dev/vfio/目錄下出現(xiàn)一個group,這個group就是IOMMU_GROUP號,如果需要在該group上使用VFIO,需要將該group下的所有device與其對應的驅動解綁。

VFIO Container

在IOMMU_GROUP的基礎上,VFIO封裝了一層Container Class,Container的作用是,當我們想在不同的IOMMU_GROUP之間共享TLB和page tables(用于地址翻譯的頁表)時,就將這些group放到同一個container中,因此Container可以看做是IOMMU_GROUP的集合。

虛擬化中VFIO的應用

這里演示一個將網卡設備利用VFIO透傳到虛擬機中的例子。需要注意的是,利用VFIO將PCI設備透傳到虛擬機之后,Host將無法使用該設備。

虛擬機默認網卡

首先利用默認qemu選項啟動虛擬機后,查看lspci的輸出,看看虛擬機默認使用的網卡是什么?

11c76f90-9e23-11eb-8b86-12bb97331649.png

可以看到虛擬機默認的網卡是Intel的82540EM,是由Qemu-kvm軟件模擬出來的一款網卡。

將Host的PCI網卡透傳到虛擬機

首先在Host上使用lspci查看擁有的PCI網卡型號,可以看到Realtek的一款網卡,該網卡的PCI標記為06:00.0.

11d31ac0-9e23-11eb-8b86-12bb97331649.png

要使用VFIO,必須在Linux啟動時添加啟動項intel_iommu=on,因為VFIO的底層依賴IOMMU.

加載VFIO-PCI module

sudo modprobe vfio-pci

如果加載成功,可以在dmesg中看到相關log.

11ff38da-9e23-11eb-8b86-12bb97331649.png

查看網卡所在的IOMMU Group

$ readlink /sys/bus/pci/devices/000000.0/iommu_group.。/.。/.。/.。/kernel/iommu_groups/3

可以看到該Realtek網卡位于iommu_group的group3.

查看設備所在iommu_group的所有設備

$ ls /sys/bus/pci/devices/000000.0/iommu_group/devices/000005.0 000005.1 000000.0

可以看到在iommu_group3中,除了該Realtek網卡,還有2個設備。

將設備與對應的驅動解綁

為了將設備透傳到虛擬機中,需要將設備與其對應的驅動解綁,這樣該設備就可以使用VFIO的驅動了。注意,不僅要將要透傳的設備解綁,還要將與設備同iommu_group的設備都解綁,才能透傳成功。

$ echo 000000.0 | sudo tee /sys/bus/pci/devices/000000.0/driver/unbind000000.0$ echo 000005.0 | sudo tee /sys/bus/pci/devices/000005.0/driver/unbind000005.0 $ echo 000005.1 sudo tee /sys/bus/pci/devices/000005.1/driver/unbind000005.1

查看設備的Vendor和DeviceID

$ lspci -n -s 06:00.0 06:00.0 0200: 10ec:8168 (rev 15)

可以看到該Realtek網卡的Vendor為10ec,DeviceID為8168.

將設備綁定到vfio-pci module

$ echo 10ec 8168 | sudo tee /sys/bus/pci/drivers/vfio-pci/new_id10ec 8168

可以通過ls /dev/vfio查看是否綁定成功,如果綁定成功,/dev/vfio目錄下會出現(xiàn)該device所屬的iommu_group號。

121b8a6c-9e23-11eb-8b86-12bb97331649.png

這里的3就是我們要透傳的Realtek網卡所在的iommu_group號。

啟動虛擬機

$ sudo x86_64-softmmu/qemu-system-x86_64 -m 4096 -smp 4 -hda ~/ewan/Workspace/img/Ubuntu18.04_loop.img-enable-kvm -cpu host -device vfio-pci,host=06:00.0

這里我使用的是從源碼編譯的qemu,但是從apt-get安裝的的qemu也是可以的。

進入guest之后運行l(wèi)spci,可以看到相比之前的PCI設備,多了一個Realtek網卡,這個網卡和host上的信息一模一樣,證明將網卡透傳到Guest成功!。

1224b880-9e23-11eb-8b86-12bb97331649.png

編輯:lyn

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • dma
    dma
    +關注

    關注

    3

    文章

    582

    瀏覽量

    106252
  • 虛擬機
    +關注

    關注

    1

    文章

    974

    瀏覽量

    30688
  • guest
    +關注

    關注

    0

    文章

    3

    瀏覽量

    3456

原文標題:VFIO(Virtual Function IO)研究

文章出處:【微信號:LinuxDev,微信公眾號:Linux閱碼場】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    onsemi FDMS86181 N 溝道 MOSFET 詳細解析

    onsemi FDMS86181 N 溝道 MOSFET 詳細解析 在電子設計領域,MOSFET 作為關鍵的功率器件,其性能直接影響著整個電路系統(tǒng)的效率和穩(wěn)定性。今天我們就來深入探討 onsemi
    的頭像 發(fā)表于 04-15 17:05 ?338次閱讀

    AD7683 16 位 ADC 芯片的詳細解析與設計應用

    AD7683 16 位 ADC 芯片的詳細解析與設計應用 在電子工程師的日常工作中,模數轉換器(ADC)是一個至關重要的組件。今天我們就來深入探討一款性能出色的 16 位 ADC——AD7683
    的頭像 發(fā)表于 04-03 09:55 ?362次閱讀

    SGM25062:6通道負載開關的詳細解析與應用

    SGM25062:6通道負載開關的詳細解析與應用 在電子設備設計中,負載開關是一種關鍵的元件,它能夠有效地管理電源分配和保護電路。SG Micro Corp推出的SGM25062 6通道負載開關
    的頭像 發(fā)表于 03-24 11:35 ?175次閱讀

    SGM6061:55V、1.5A高頻降壓轉換器的詳細解析與應用設計

    SGM6061:55V、1.5A高頻降壓轉換器的詳細解析與應用設計 一、引言 在電子設備的電源設計中,降壓轉換器扮演著至關重要的角色。SG Micro Corp推出的SGM6061是一款高性能
    的頭像 發(fā)表于 03-19 16:15 ?211次閱讀

    SGM4552:1位雙向電壓電平轉換器的詳細解析

    SGM4552:1位雙向電壓電平轉換器的詳細解析 在電子設計中,電壓電平轉換是一個常見且關鍵的需求。SG Micro Corp推出的SGM4552 1位雙向電壓電平轉換器,為我們提供了一種可靠
    的頭像 發(fā)表于 03-16 14:35 ?188次閱讀

    SGM834A:140dB 范圍對數電流 - 電壓轉換器的詳細解析

    SGM834A:140dB 范圍對數電流 - 電壓轉換器的詳細解析 在電子設計領域,對于電流信號的精確測量和轉換一直是重要的研究方向。SGM834A 作為一款單電源對數電流 - 電壓轉換器,為低頻
    的頭像 發(fā)表于 03-10 10:25 ?197次閱讀

    風華貼片電阻料號編碼的詳細解析

    風華貼片電阻的料號編碼通常遵循一套系統(tǒng)化的命名規(guī)則,涵蓋了產品類型、封裝尺寸、溫度系數、阻值、精度、額定功率及包裝方式等關鍵參數。以下是對風華貼片電阻料號編碼的詳細解析: 一、編碼結構 風華貼片電阻
    的頭像 發(fā)表于 03-04 16:23 ?358次閱讀
    風華貼片電阻料號編碼的<b class='flag-5'>詳細</b><b class='flag-5'>解析</b>

    2.45 GHz 高頻陶瓷帶通濾波器詳細解析

    2.45 GHz 高頻陶瓷帶通濾波器詳細解析 在高頻電子電路設計中,濾波器是不可或缺的關鍵元件。今天我們就來詳細探討 Johanson Technology 公司的 2.45 GHz 帶通濾波器(P
    的頭像 發(fā)表于 02-04 16:45 ?654次閱讀

    915 MHz低通濾波器詳細解析:從規(guī)格到性能

    915 MHz低通濾波器詳細解析:從規(guī)格到性能 引言 在電子工程領域,濾波器是不可或缺的元件,尤其是在高頻通信系統(tǒng)中。今天我們要詳細探討的是Johanson Technology公司的915 MHz
    的頭像 發(fā)表于 02-03 14:35 ?244次閱讀

    TDK多層高通濾波器DEA162400HT - 8004B1的詳細解析

    TDK多層高通濾波器DEA162400HT - 8004B1的詳細解析 作為電子工程師,在射頻電路設計中,濾波器是至關重要的組件之一。今天就來詳細聊聊TDK的一款多層高通濾波器DEA162400HT
    的頭像 發(fā)表于 01-07 17:55 ?794次閱讀

    TDK多層帶通濾波器DEA202450BT - 2114F1詳細解析

    TDK多層帶通濾波器DEA202450BT - 2114F1詳細解析 在電子設備的設計中,濾波器是不可或缺的關鍵組件,它對于信號的處理和優(yōu)化起著至關重要的作用。今天我們就來詳細探討一下TDK的多層
    的頭像 發(fā)表于 12-30 18:10 ?1176次閱讀

    關于保偏光纖的詳細解釋

    保偏光纖(Polarization-Maintaining Fiber,簡稱PMF)是一種特殊設計的光纖,其核心功能是在傳輸過程中保持光的偏振態(tài)不變。以下是關于保偏光纖的詳細解釋: 1. 偏振態(tài)
    的頭像 發(fā)表于 09-25 10:13 ?1266次閱讀
    <b class='flag-5'>關于</b>保偏光纖的<b class='flag-5'>詳細</b>解釋

    mqtt dns解析失敗是為什么?

    解析域名的ip地址就能正常連上,而直接解析域名就不行,為什么呢
    發(fā)表于 09-16 06:38

    PTC熱敏電阻在空調中的使用及詳細功能解析

    PTC熱敏電阻在空調中的使用及詳細功能解析 一、什么是PTC熱敏電阻? 首先,PTC是“Positive Temperature Coefficient”的縮寫,意為“正溫度系數”。PTC熱敏電阻
    發(fā)表于 09-08 11:10

    AIcube1.4目標檢測模型導入yolotxt格式數據集后一直顯示數據正在解析,為什么?

    AIcube1.4目標檢測模型導入yolotxt格式數據集后一直顯示數據正在解析 數據有問題,把數據情況說的詳細
    發(fā)表于 08-13 07:16
    彰武县| 阳山县| 镇康县| 罗平县| 宁南县| 宁陵县| 黑龙江省| 长治市| 太保市| 兰州市| 嘉鱼县| 同江市| 巴楚县| 鹰潭市| 南京市| 华坪县| 鄂尔多斯市| 兴安盟| 钦州市| 固安县| 宜昌市| 库尔勒市| 辉县市| 台南市| 余姚市| 理塘县| 库伦旗| 嘉鱼县| 盈江县| 保定市| 绍兴市| 汉川市| 昆明市| 昌吉市| 长治县| 武义县| 来凤县| 广汉市| 镇原县| 手机| 福州市|