1. 程式人生 > >pci passthrough with qemu

pci passthrough with qemu

1. 確定硬體是否支援iommu

這是一個硬體的功能,intel架構上叫vt-d。

從BIOS上可以看出來, 不同版本放的位置不一樣。

我的是在 Security->Virtualization->VT-d

2. 配置kernel,支援iommu

在intel機器上有這麼個選項,

INTEL_IOMMU

  │   Location:                                                                                                                            │  
  │     -> Device Drivers                                                                                                                  │  
  │ (2)   -> IOMMU Hardware Support (IOMMU_SUPPORT [=y]) 

3. 重啟,看看是否enable了。

在intel上,執行

dmesg | grep -e DMAR -e IOMMU

4. 在host上unbind裝置

載入pci_stub模組, modprobe pci_stub

選中某個裝置, lspci -s 03:00.0 -n, 03:00.0 0280: 8086:0085 (rev 34)

bind/unbind

  • echo "8086 0085" > /sys/bus/pci/drivers/pci-stub/new_id
  • echo 0000:03:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
  • echo 0000:03:00.0 > /sys/bus/pci/drivers/pci-stub/bind

5. 把裝置給guest

./i386-softmmu/qemu-system-i386 -enable-kvm \

-drive file=../../kvm/ubuntu.qcow2 -boot dc -m 512  \

-monitor stdio \

-netdev user,id=usernet -device rtl8139,netdev=usernet \

-device pci-assign,host=0000:03:00.0

不過偶沒有成功,報錯了。。。

6. 錯誤分析,解決

按照上面的辦法沒成功,我看了一下dmesg,有這麼一句。

kvm_iommu_map_guest: No interrupt remapping support, disallowing device assignment. Re-enble with "allow_unsafe_assigned_interrupts=1" module option.

稍微調查了一下,發現和這個選項有關,config IRQ_REMAP。 可惜我enable不了,因為這個必須在x86_64上做。

沒辦法,那我只好在裝載kvm模組的時候加上這個引數的設定了。

加上這個引數後,果然就好了。贊。

接下來我用了vfio來做passthrough。步驟略有不同

1. 安裝相關的kernel module

sudo modprobe vfio

sudo modprobe vfio-pci

這樣就產生了 /dev/vfio/vfio 裝置

2. 按照文件要求,新增裝置到一個group

按照現在的要求,需要講某一個iommu_group下的所有裝置都新增到一個vfio group.

cd /sys/bus/pci/devices/0000:0d:00.0/

readlink iommu_group  這樣可以顯示該裝置對應iommu_group的名字

ll iommu_group/devices 這樣可以顯示和該裝置處於一個iommu_group的裝置。

echo 0000:0d:00.0 > /sys/bus/pci/devices/0000:0d:00.0/driver/unbind

echo 1180 e823 > /sys/bus/pci/drivers/vfio-pci/new_id

echo 0000:03:00.0 > /sys/bus/pci/devices/0000:03:00.0/driver/unbind

echo 8086 0085 > /sys/bus/pci/drivers/vfio-pci/new_id

這樣就生成了 /dev/vfio/6  (數字由iommu_group號決定)

3. 啟動 guest

../git/qemu-latest/i386-softmmu/qemu-system-i386 -enable-kvm -drive file=ubuntu.qcow2 -boot dc -m 512  -monitor stdio -netdev user,id=usernet -device vfio-pci,host=0000:03:00.0

如果是在power機器上,則寫成

-device "spapr-pci-vfio-host-bridge,id=CXGB3,iommu=4,index=6"

4. fix

預設這麼啟動會有個錯誤,當然這是在我的機器上。

vfio_iommu_type1_open: No interrupt remapping support.  Use the module param "allow_unsafe_interrupts" to enable VFIO IOMMU support on this platform

意思是我這個機器不支援remap, 那我就把這個引數直接設成了1.  就好了。

相關推薦

pci passthrough with qemu

1. 確定硬體是否支援iommu 這是一個硬體的功能,intel架構上叫vt-d。 從BIOS上可以看出來, 不同版本放的位置不一樣。 我的是在 Security->Virtualization->VT-d 2. 配置kernel,支援iommu 在

qemu使用PCI passthrough裝置

為了提高虛擬機器中的io吞吐量業界現在採用的方式就是直接將物理裝置給虛擬機器直接使用。 方式上有兩種 pci assign vfio 不過現在業界已經基本都採用vfio的方式了。主要是因為在vfio方式下對虛擬裝置的許可權和dma隔離上做的更好。但是

Centos 7 + Openstack + PCI passthrough(透傳)

0.遇到的問題 a.多個裝置在同一個iommu_group的問題,多見於顯示卡 error:please ensure all devices within the iommu_group are

Enhancing QEMU virtio-scsi with Block Limits vital product data (VPD) emulation

Introduction Cloud providers must support a great variety of hardware to support the customer needs. This includes hardware that migh

ARM64 Linux kernel + busybox rootFS via NFS over QEMU with GDB

由於條件所限,一般選擇軟體做前期模擬,這裡做一些ARM 64 Linux kernel模擬執行環境搭建工作的總結,記錄以便後用。 本文只涉及kernel + busybox rootFS via NFS over QEMU,以及gdb trace kernel

(轉) Learning Deep Learning with Keras

trees create pda sse caffe latex .py encode you Learning Deep Learning with Keras Piotr Migda? - blog Projects Articles Publications Res

hihoCoder #1454 : Rikka with Tree II

return 一段 har 節點 sla include turn typedef ems Description 一個\(n\)個節點的樹,先根遍歷為\(1...n\)。已知兩個數組,一個數組表示是否是葉節點,另一個數組表示十分有右兄弟節點...‘?‘表示未知,求方案數

Local Authentication Using Challenge Response with Yubikey for CentOS 7

fail ins path api -m ica all use debug Connect Yubikey ,then initialize YubiKey slot 2: ykpersonalize -2 -ochal-resp -ochal-hmac -ohmac

here with you

vertical can more lose 音樂 and -a ember music Here With You - Asher Book To all my friends對我所有好友來講The night is young夜未央The music‘s loud樂未殤

[SCSS] Write similar classes with the SCSS @for Control Directive

att oop enc rem coo tro from mil for Writing similar classes with minor variations, like utility classes, can be a pain to write and upda

with ..do 簡化語句使用

ima col img class color 訪問 簡化 times mes 訪問對象的簡化語句可以用with; 通常訪問對象的屬性和方法需要在前面加上對象的名稱; 如: procedure TForm2.btn1Click(Sender: TObject); begi

Ng第二課:單變量線性回歸(Linear Regression with One Variable)

dll oba vcf 更多 dba cfq dpf gis avd 二、單變量線性回歸(Linear Regression with One Variable) 2.1 模型表示 2.2 代價函數 2.3 代價函數的直觀理解 2.4 梯度下降

【論文閱讀-REC】<<Recommending music on Spotify with deep learing>>閱讀

play ring 來源 調整 能力 表達 layers 書籍 訓練 1、協同過濾 協同過濾不使用item的具體信息,因此可適用性很強,在書籍、電影、音樂上都可用; 協同過濾不適用item的具體信息,因此強者愈強; 冷啟動問題無法解決 2、基於內容的推薦 使用聲音信號推薦

[CSS] Draw Simple Icons with CSS

cnblogs elements chang pre active pla com man simple Using pseudo-elements like ::before and ::after we can draw some simple icons withou

解決Problem with writing the data, class java.util.ArrayList, ContentType: application/xml

writing 數據庫 今天,在使用cxf讀取內網數據庫的數據時,報以下一個錯誤Problem with writing the data, class java.util.ArrayList, ContentType: application/xml以上錯誤提示我們,在寫入數據時有錯誤,最後經檢查

Using Swift with Cocoa and Objective-C下載

target cocoa 下載地址 obj swift nbsp 地址 bject uil 《Using Swift with Cocoa and Objective-C Building App 》 下載地址 http://download.csdn.net/

MySQL故障處理一例_Another MySQL daemon already running with the same unix socket

read mon 解決 roo blog local 啟動mysql style 處理 MySQL故障處理一例:“Another MySQL daemon already running with the same unix socket”。 [root@test-121

poj3511--A Simple Problem with Integers(線段樹求和)

poj pac style som can com onos roman miss A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K

Extracting and composing robust features with denosing autoencoders 論文

重要 style add 論文 是把 任務 生成 改進 編碼器 這是一篇發表於2008年初的論文。 文章主要講了利用 denosing autoencoder來學習 robust的中間特征。。進上步,說明,利用這個方法,可以初始化神經網絡的權值。。這就相當於一種非監督學習的

【Lintcode】105.Copy List with Random Pointer

map class node link listnode span public point turn 題目: A linked list is given such that each node contains an additional random pointer