AMD環境でKVM PCIパススルー (PT2で)
いろいろやってKVM PCIパススルーができた(ゲストOSでPT2を認識)ので環境・ポイントをメモ。
■HW
【M/B】BIOSTER TA890FXE
【CPU】AMD Phenom II X6 1055T
【Cooler】DEEPCOOL ICEEDGE 200U
【Memory】DDR3 SDRAM 4GB × 2, 2GB × 2
【VGA】Palit GeForce GTX 560 1GB (NE5X5600HD02-1142F)
【Sound】オンボード
【HDD】Western Digital WD30EZRX 3TB
【Drive】LG blu-ray かけるやつ
【Case】サイズの安いやつ
【Power】HEC WIN+ 700W HEC-700TE-2WX
【Other】PT1 × 1
PCIパススルーをするためにはIOMMU,AMD-Viに対応している「AMD890FX」チップセットが必要です。
今回は「BIOSTER TA890FXE」で。
■SW
【OS】Ubuntu Server 11.04
【Other】qemu-kvm 0.14.0+noroms-0ubuntu4.3
【Other】kvm-pxe 5.4.4-7ubuntu2
【Other】virt-manager 0.8.6-1ubuntu8.1
必要なパッケージはaptでインストール。
Ubuntu Serverを使ってますが、すぐubuntu-desktopをインストールしました。
後はvirt-managerを使ってゲストOSを作成する。
ゲストOSの設定で、PCI Host Deviceで PT2を追加。
※PT2はlspciで確認してください。
02:05.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01) ←これです
ゲストOSの開始前に以下のコマンドを実行。
# modprobe pci-stub
# echo "1002 4384" >/sys/bus/pci/drivers/pci-stub/new_id
# echo "0000:00:14.4" >/sys/bus/pci/drivers/pci-stub/unbind
※PCIはPCI bridgeの下についているので。
# lspci
00:00.0 Host bridge: ATI Technologies Inc RD890 Northbridge only single slot PCI-e GFX Hydra part (rev 02)
00:00.2 Generic system peripheral [0806]: ATI Technologies Inc Device 5a23
00:02.0 PCI bridge: ATI Technologies Inc RD890 PCI to PCI bridge (PCI express gpp port B)
00:11.0 SATA controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (rev 40)
00:12.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 41)
00:14.1 IDE interface: ATI Technologies Inc SB7x0/SB8x0/SB9x0 IDE Controller (rev 40)
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA) (rev 40)
00:14.3 ISA bridge: ATI Technologies Inc SB7x0/SB8x0/SB9x0 LPC host controller (rev 40)
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge (rev 40)
00:14.5 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:15.0 PCI bridge: ATI Technologies Inc Device 43a0
00:15.1 PCI bridge: ATI Technologies Inc Device 43a1
00:16.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:16.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link Control
01:00.0 VGA compatible controller: nVidia Corporation Device 1201 (rev a1)
01:00.1 Audio device: nVidia Corporation Device 0e0c (rev a1)
02:05.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
04:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6315 Series Firewire Controller
04:00.1 IDE interface: VIA Technologies, Inc. VT6415 PATA IDE Host Controller (rev a0)
# lspci -tv
-[0000:00]-+-00.0 ATI Technologies Inc RD890 Northbridge only single slot PCI-e GFX Hydra part
+-00.2 ATI Technologies Inc Device 5a23
+-02.0-[01]--+-00.0 nVidia Corporation Device 1201
| \-00.1 nVidia Corporation Device 0e0c
+-11.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode]
+-12.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-12.2 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-13.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-13.2 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-14.0 ATI Technologies Inc SBx00 SMBus Controller
+-14.1 ATI Technologies Inc SB7x0/SB8x0/SB9x0 IDE Controller
+-14.2 ATI Technologies Inc SBx00 Azalia (Intel HDA)
+-14.3 ATI Technologies Inc SB7x0/SB8x0/SB9x0 LPC host controller
+-14.4-[02]----05.0 Xilinx Corporation Device 222a
+-14.5 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
+-15.0-[04]--+-00.0 VIA Technologies, Inc. VT6315 Series Firewire Controller
| \-00.1 VIA Technologies, Inc. VT6415 PATA IDE Host Controller
+-15.1-[03]----00.0 Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
+-16.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-16.2 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-18.0 Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration
+-18.1 Advanced Micro Devices [AMD] Family 10h Processor Address Map
+-18.2 Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller
+-18.3 Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control
\-18.4 Advanced Micro Devices [AMD] Family 10h Processor Link Control
これでPCIパススルー(PT2を認識)ができました。
で、ここからはやってはいけないメモ。
下記のページを参考にやってました。
How to assign devices with VT-d in KVM - KVM
INTEL環境ではLinux起動オプションに"intel_iommu=on"を、AMD環境では"iommu=pt iommu=1"を追加するような記述があったので初めは"iommu=pt iommu=1"を追加していましたが、追加した状態だとできません。
dmesg | grep AMD-Vi
・起動オプションなし
AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
AMD-Vi: Lazy IO/TLB flushing enabled
・起動オプションあり
AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
AMD-Vi: Initialized for Passthrough Mode
※これでかなり迷った......
だってパススルーて書いてあるじゃん。
さらに「AMD890GX」チップセット(ASRock 890GX Extreme3)で起動オプションを追加したらUSBキーボード・マウスが壊れた。
また、PC切替器を使用していたのでそのUSBも動作がおかしい。
今回のことで無駄なお金がかなり......
■HW
【M/B】BIOSTER TA890FXE
【CPU】AMD Phenom II X6 1055T
【Cooler】DEEPCOOL ICEEDGE 200U
【Memory】DDR3 SDRAM 4GB × 2, 2GB × 2
【VGA】Palit GeForce GTX 560 1GB (NE5X5600HD02-1142F)
【Sound】オンボード
【HDD】Western Digital WD30EZRX 3TB
【Drive】LG blu-ray かけるやつ
【Case】サイズの安いやつ
【Power】HEC WIN+ 700W HEC-700TE-2WX
【Other】PT1 × 1
PCIパススルーをするためにはIOMMU,AMD-Viに対応している「AMD890FX」チップセットが必要です。
今回は「BIOSTER TA890FXE」で。
■SW
【OS】Ubuntu Server 11.04
【Other】qemu-kvm 0.14.0+noroms-0ubuntu4.3
【Other】kvm-pxe 5.4.4-7ubuntu2
【Other】virt-manager 0.8.6-1ubuntu8.1
必要なパッケージはaptでインストール。
Ubuntu Serverを使ってますが、すぐubuntu-desktopをインストールしました。
後はvirt-managerを使ってゲストOSを作成する。
ゲストOSの設定で、PCI Host Deviceで PT2を追加。
※PT2はlspciで確認してください。
02:05.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01) ←これです
ゲストOSの開始前に以下のコマンドを実行。
# modprobe pci-stub
# echo "1002 4384" >/sys/bus/pci/drivers/pci-stub/new_id
# echo "0000:00:14.4" >/sys/bus/pci/drivers/pci-stub/unbind
※PCIはPCI bridgeの下についているので。
# lspci
00:00.0 Host bridge: ATI Technologies Inc RD890 Northbridge only single slot PCI-e GFX Hydra part (rev 02)
00:00.2 Generic system peripheral [0806]: ATI Technologies Inc Device 5a23
00:02.0 PCI bridge: ATI Technologies Inc RD890 PCI to PCI bridge (PCI express gpp port B)
00:11.0 SATA controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] (rev 40)
00:12.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:12.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:13.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:13.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:14.0 SMBus: ATI Technologies Inc SBx00 SMBus Controller (rev 41)
00:14.1 IDE interface: ATI Technologies Inc SB7x0/SB8x0/SB9x0 IDE Controller (rev 40)
00:14.2 Audio device: ATI Technologies Inc SBx00 Azalia (Intel HDA) (rev 40)
00:14.3 ISA bridge: ATI Technologies Inc SB7x0/SB8x0/SB9x0 LPC host controller (rev 40)
00:14.4 PCI bridge: ATI Technologies Inc SBx00 PCI to PCI Bridge (rev 40)
00:14.5 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
00:15.0 PCI bridge: ATI Technologies Inc Device 43a0
00:15.1 PCI bridge: ATI Technologies Inc Device 43a1
00:16.0 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
00:16.2 USB Controller: ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
00:18.0 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control
00:18.4 Host bridge: Advanced Micro Devices [AMD] Family 10h Processor Link Control
01:00.0 VGA compatible controller: nVidia Corporation Device 1201 (rev a1)
01:00.1 Audio device: nVidia Corporation Device 0e0c (rev a1)
02:05.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)
03:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03)
04:00.0 FireWire (IEEE 1394): VIA Technologies, Inc. VT6315 Series Firewire Controller
04:00.1 IDE interface: VIA Technologies, Inc. VT6415 PATA IDE Host Controller (rev a0)
# lspci -tv
-[0000:00]-+-00.0 ATI Technologies Inc RD890 Northbridge only single slot PCI-e GFX Hydra part
+-00.2 ATI Technologies Inc Device 5a23
+-02.0-[01]--+-00.0 nVidia Corporation Device 1201
| \-00.1 nVidia Corporation Device 0e0c
+-11.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode]
+-12.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-12.2 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-13.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-13.2 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-14.0 ATI Technologies Inc SBx00 SMBus Controller
+-14.1 ATI Technologies Inc SB7x0/SB8x0/SB9x0 IDE Controller
+-14.2 ATI Technologies Inc SBx00 Azalia (Intel HDA)
+-14.3 ATI Technologies Inc SB7x0/SB8x0/SB9x0 LPC host controller
+-14.4-[02]----05.0 Xilinx Corporation Device 222a
+-14.5 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI2 Controller
+-15.0-[04]--+-00.0 VIA Technologies, Inc. VT6315 Series Firewire Controller
| \-00.1 VIA Technologies, Inc. VT6415 PATA IDE Host Controller
+-15.1-[03]----00.0 Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller
+-16.0 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB OHCI0 Controller
+-16.2 ATI Technologies Inc SB7x0/SB8x0/SB9x0 USB EHCI Controller
+-18.0 Advanced Micro Devices [AMD] Family 10h Processor HyperTransport Configuration
+-18.1 Advanced Micro Devices [AMD] Family 10h Processor Address Map
+-18.2 Advanced Micro Devices [AMD] Family 10h Processor DRAM Controller
+-18.3 Advanced Micro Devices [AMD] Family 10h Processor Miscellaneous Control
\-18.4 Advanced Micro Devices [AMD] Family 10h Processor Link Control
これでPCIパススルー(PT2を認識)ができました。
で、ここからはやってはいけないメモ。
下記のページを参考にやってました。
How to assign devices with VT-d in KVM - KVM
INTEL環境ではLinux起動オプションに"intel_iommu=on"を、AMD環境では"iommu=pt iommu=1"を追加するような記述があったので初めは"iommu=pt iommu=1"を追加していましたが、追加した状態だとできません。
dmesg | grep AMD-Vi
・起動オプションなし
AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
AMD-Vi: Lazy IO/TLB flushing enabled
・起動オプションあり
AMD-Vi: Enabling IOMMU at 0000:00:00.2 cap 0x40
AMD-Vi: Initialized for Passthrough Mode
※これでかなり迷った......
だってパススルーて書いてあるじゃん。
さらに「AMD890GX」チップセット(ASRock 890GX Extreme3)で起動オプションを追加したらUSBキーボード・マウスが壊れた。
また、PC切替器を使用していたのでそのUSBも動作がおかしい。
今回のことで無駄なお金がかなり......
コメント
コメントを投稿