前提条件 ¶
弊宅検証環境は下記の構成になります
Key | Value |
---|
OS | Proxmox VE 8.0.4 |
CPU | i7-8700 |
MEM | 32GB |
M/B | ASRock B365M Pro4 |
GPU | RTX2060 Super |
やり方 ¶
確認 ¶
Intel なら CPU, M/B が VT-d, IOMMU に対応していることを確認しましょう。
AMD は持ち合わせがないのでドキュメントを読んでクレメンス
GPU は UEFI に対応しているのがベストです。未対応でも問題無い場合もありますが面倒なことになることが多いです。
Proxmox VE ¶
GRUB の変更 ¶
Proxmox VE の GRUB に設定変更して IOMMU を有効にする必要があります。
また、 BOIS 上でも Intel VT-d と IOMMU を有効にしておいてください。
intel_iommu=on
IOMMU を有効にするフラグiommu=pt
専有するフラグ
1
2
3
4
5
6
7
| nano /etc/default/grub
# これを
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on"
# こう変更した
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
|
必須 Kernel Module の読み込みも設定しておく。事前に lsmod | grep vfio
で読み込んでない事を確認したため、自動読み込みするように変更。
Important
変更した場合は update-grub
推奨
1
2
3
4
5
6
7
| cat <<EOF>> /etc/modules
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
EOF
|
変更後 GRUB を更新
再起動後 dmesg | grep -e DMAR -e IOMMU
で DMAR: IOMMU enabled
の記載があることを確認しておく
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| > dmesg | grep -e DMAR -e IOMMU
[ 0.009308] ACPI: DMAR 0x000000006E069900 0000A8 (v01 INTEL EDK2 00000001 INTL 00000001)
[ 0.009339] ACPI: Reserving DMAR table memory at [mem 0x6e069900-0x6e0699a7]
[ 0.049278] DMAR: IOMMU enabled
[ 0.141083] DMAR: Host address width 39
[ 0.141084] DMAR: DRHD base: 0x000000fed90000 flags: 0x0
[ 0.141088] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap 1c0000c40660462 ecap 19e2ff0505e
[ 0.141091] DMAR: DRHD base: 0x000000fed91000 flags: 0x1
[ 0.141094] DMAR: dmar1: reg_base_addr fed91000 ver 1:0 cap d2008c40660462 ecap f050da
[ 0.141095] DMAR: RMRR base: 0x0000006ea02000 end: 0x0000006ec4bfff
[ 0.141097] DMAR: RMRR base: 0x0000006f800000 end: 0x0000007fffffff
[ 0.141099] DMAR-IR: IOAPIC id 2 under DRHD base 0xfed91000 IOMMU 1
[ 0.141100] DMAR-IR: HPET id 0 under DRHD base 0xfed91000
[ 0.141101] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.142609] DMAR-IR: Enabled IRQ remapping in x2apic mode
[ 0.379486] DMAR: No ATSR found
[ 0.379487] DMAR: No SATC found
[ 0.379488] DMAR: IOMMU feature fl1gp_support inconsistent
[ 0.379489] DMAR: IOMMU feature pgsel_inv inconsistent
[ 0.379490] DMAR: IOMMU feature nwfs inconsistent
[ 0.379491] DMAR: IOMMU feature pasid inconsistent
[ 0.379492] DMAR: IOMMU feature eafs inconsistent
[ 0.379492] DMAR: IOMMU feature prs inconsistent
[ 0.379493] DMAR: IOMMU feature nest inconsistent
[ 0.379494] DMAR: IOMMU feature mts inconsistent
[ 0.379494] DMAR: IOMMU feature sc_support inconsistent
[ 0.379495] DMAR: IOMMU feature dev_iotlb_support inconsistent
[ 0.379496] DMAR: dmar0: Using Queued invalidation
[ 0.379498] DMAR: dmar1: Using Queued invalidation
[ 0.379961] DMAR: Intel(R) Virtualization Technology for Directed I/O
|
IOMMU Interrupt Remapping ¶
dmesg | grep 'remapping'
で DMAR-IR: Enabled IRQ remapping in x2apic mode
が表示されることを確認する
1
2
3
| > dmesg | grep 'remapping'
[ 0.141101] DMAR-IR: Queued invalidation will be enabled to support x2apic and Intr-remapping.
[ 0.142609] DMAR-IR: Enabled IRQ remapping in x2apic mode
|
IOMMU の確認 ¶
2023/10/17 に公式ドキュメントを確認した所、確認方法が追加されていたので確認
{nodename}
は各自の PVE ノード名に置き換えてください。
iommugroup
が別れてることを確認します。もし別れていない場合は ACS (Access Control Services) 機能が BIOS で有効化する必要がある場合があります。最終手段として ACS を kernel patch でゴリ押しする方法がありますが、 PVE の公式ドキュメントに説明を譲ります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
| > pvesh get /nodes/{nodename}/hardware/pci --pci-class-blacklist ""
┌──────────┬────────┬──────────────┬────────────┬────────┬────────────────────────────────────────────────────────────┬──────┬
│ class │ device │ id │ iommugroup │ vendor │ device_name │ mdev │
╞══════════╪════════╪══════════════╪════════════╪════════╪════════════════════════════════════════════════════════════╪══════╪
│ 0x010601 │ 0xa282 │ 0000:00:17.0 │ 5 │ 0x8086 │ 200 Series PCH SATA controller [AHCI mode] │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x010802 │ 0xf1a6 │ 0000:03:00.0 │ 11 │ 0x8086 │ SSD Pro 7600p/760p/E 6100p Series │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x020000 │ 0x15b8 │ 0000:00:1f.6 │ 10 │ 0x8086 │ Ethernet Connection (2) I219-V │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x030000 │ 0x3e92 │ 0000:00:02.0 │ 0 │ 0x8086 │ CoffeeLake-S GT2 [UHD Graphics 630] │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x030000 │ 0x1f06 │ 0000:01:00.0 │ 2 │ 0x10de │ TU106 [GeForce RTX 2060 SUPER] │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x040300 │ 0xa2f0 │ 0000:00:1f.3 │ 9 │ 0x8086 │ 200 Series PCH HD Audio │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x040300 │ 0x10f9 │ 0000:01:00.1 │ 2 │ 0x10de │ TU106 High Definition Audio Controller │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x048000 │ 0x000a │ 0000:04:00.0 │ 12 │ 0xdd01 │ │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x058000 │ 0xa2a1 │ 0000:00:1f.2 │ 9 │ 0x8086 │ 200 Series/Z370 Chipset Family Power Management Controller │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x060000 │ 0x3ec2 │ 0000:00:00.0 │ 1 │ 0x8086 │ 8th Gen Core Processor Host Bridge/DRAM Registers │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x060100 │ 0xa2cc │ 0000:00:1f.0 │ 9 │ 0x8086 │ │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x060400 │ 0x1901 │ 0000:00:01.0 │ 2 │ 0x8086 │ 6th-10th Gen Core Processor PCIe Controller (x16) │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x060400 │ 0xa2e9 │ 0000:00:1b.0 │ 6 │ 0x8086 │ 200 Series PCH PCI Express Root Port #19 │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x060400 │ 0xa2eb │ 0000:00:1b.4 │ 7 │ 0x8086 │ 200 Series PCH PCI Express Root Port #21 │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x060400 │ 0xa294 │ 0000:00:1c.0 │ 8 │ 0x8086 │ 200 Series PCH PCI Express Root Port #5 │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x078000 │ 0xa2ba │ 0000:00:16.0 │ 4 │ 0x8086 │ 200 Series PCH CSME HECI #1 │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x0c0330 │ 0xa2af │ 0000:00:14.0 │ 3 │ 0x8086 │ 200 Series/Z370 Chipset Family USB 3.0 xHCI Controller │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x0c0330 │ 0x1ada │ 0000:01:00.2 │ 2 │ 0x10de │ TU106 USB 3.1 Host Controller │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x0c0500 │ 0xa2a3 │ 0000:00:1f.4 │ 9 │ 0x8086 │ 200 Series/Z370 Chipset Family SMBus Controller │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x0c8000 │ 0x1adb │ 0000:01:00.3 │ 2 │ 0x10de │ TU106 USB Type-C UCSI Controller │ │
├──────────┼────────┼──────────────┼────────────┼────────┼────────────────────────────────────────────────────────────┼──────┼
│ 0x118000 │ 0xa2b1 │ 0000:00:14.2 │ 3 │ 0x8086 │ 200 Series PCH Thermal Subsystem │ │
└──────────┴────────┴──────────────┴────────────┴────────┴────────────────────────────────────────────────────────────┴──────┴
|
上記 IOMMU が正しく設定されていればすでに、仮想マシンの PCI 画面で一覧表示される状態となっているはずです。
Host Device Passthrough ¶
Host Device Passthrough を設定する物理ホストには下記のように接続されている
物理(CPUに近い方から) | lspci |
---|
PCIe x16 (RTX2060 Super) | 01:00.0 |
なし | |
PCIe x1 | |
PCIe x4 (DD Max M4) | 04:00.0 |
IOMMU Isolation が効いているか確認しておく今回は問題なさそう
- 01:00.0:
IOMMU group 2
- 04:00.0:
IOMMU group 12
下記の表示がある場合はホスト側のドライバーがあたった状態のためこれを vfi-pci
に専有させることで VM から見えなくなる事象を軽減させる。
1
2
| Kernel driver in use: nouveau
Kernel modules: nvidiafb, nouveau
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
| > lspci -nn -v -s 01:00.0
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU106 [GeForce RTX 2060 SUPER] [10de:1f06] (rev a1) (prog-if 00 [VGA controller])
Subsystem: NVIDIA Corporation TU106 [GeForce RTX 2060 SUPER] [10de:13a3]
Flags: bus master, fast devsel, latency 0, IRQ 145, IOMMU group 2
Memory at de000000 (32-bit, non-prefetchable) [size=16M]
Memory at c0000000 (64-bit, prefetchable) [size=256M]
Memory at d0000000 (64-bit, prefetchable) [size=32M]
I/O ports at e000 [size=128]
Expansion ROM at df000000 [disabled] [size=512K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [250] Latency Tolerance Reporting
Capabilities: [258] L1 PM Substates
Capabilities: [128] Power Budgeting <?>
Capabilities: [420] Advanced Error Reporting
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Capabilities: [900] Secondary PCI Express
Capabilities: [bb0] Physical Resizable BAR
Kernel driver in use: nouveau
Kernel modules: nvidiafb, nouveau
> lspci -nn -v -s 04:00.0
04:00.0 Multimedia controller [0480]: Digital Devices GmbH Device [dd01:000a]
Subsystem: Digital Devices GmbH Device [dd01:0050]
Flags: bus master, fast devsel, latency 0, IRQ 148, IOMMU group 12
Memory at df100000 (64-bit, non-prefetchable) [size=64K]
Capabilities: [50] Power Management version 3
Capabilities: [70] MSI: Enable+ Count=1/1 Maskable- 64bit+
Capabilities: [90] Express Endpoint, MSI 00
Capabilities: [100] Vendor Specific Information: ID=0000 Rev=0 Len=00c <?>
|
lspci -nn -v -s
の結果から VendorID と DeviceID が確認できたのでこれを /etc/modprobe.d/
に設定する
- RTX2060 Super:
- 01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU106 [GeForce RTX 2060 SUPER] [
10de:1f06
] (rev a1) (prog-if 00 [VGA controller])
- DD Max M4:
dd01:000a
- 04:00.0 Multimedia controller [0480]: Digital Devices GmbH Device [
dd01:000a
]
1
2
3
4
5
6
7
| cat <<EOF> /etc/modprobe.d/vfio-pci.conf
# Host Device Passthrough
## NVIDIA Corporation TU106 [GeForce RTX 2060 SUPER] [10de:1f06]
## Digital Devices GmbH Device [dd01:000a]
options vfio-pci ids=10de:1f06,dd01:000a
EOF
|
再起動して確認 Kernel driver in use: vfio-pci
のため両方設定できている
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| > lspci -nn -v -s 01:00.0
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU106 [GeForce RTX 2060 SUPER] [10de:1f06] (rev a1) (prog-if 00 [VGA controller])
Subsystem: NVIDIA Corporation TU106 [GeForce RTX 2060 SUPER] [10de:13a3]
Flags: fast devsel, IRQ 11, IOMMU group 1
Memory at de000000 (32-bit, non-prefetchable) [disabled] [size=16M]
Memory at c0000000 (64-bit, prefetchable) [disabled] [size=256M]
Memory at d0000000 (64-bit, prefetchable) [disabled] [size=32M]
I/O ports at e000 [disabled] [size=128]
Expansion ROM at df000000 [disabled] [size=512K]
Capabilities: [60] Power Management version 3
Capabilities: [68] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [78] Express Legacy Endpoint, MSI 00
Capabilities: [100] Virtual Channel
Capabilities: [250] Latency Tolerance Reporting
Capabilities: [258] L1 PM Substates
Capabilities: [128] Power Budgeting <?>
Capabilities: [420] Advanced Error Reporting
Capabilities: [600] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?>
Capabilities: [900] Secondary PCI Express
Capabilities: [bb0] Physical Resizable BAR
Kernel driver in use: vfio-pci
Kernel modules: nvidiafb, nouveau
> lspci -nn -v -s 04:00.0
04:00.0 Multimedia controller [0480]: Digital Devices GmbH Device [dd01:000a]
Subsystem: Digital Devices GmbH Device [dd01:0050]
Flags: fast devsel, IRQ 11, IOMMU group 12
Memory at df100000 (64-bit, non-prefetchable) [disabled] [size=64K]
Capabilities: [50] Power Management version 3
Capabilities: [70] MSI: Enable- Count=1/1 Maskable- 64bit+
Capabilities: [90] Express Endpoint, MSI 00
Capabilities: [100] Vendor Specific Information: ID=0000 Rev=0 Len=00c <?>
Kernel driver in use: vfio-pci
|
以上で Proxmox VE 側の設定は完了
VM の起動設定 ¶
VM は通常通り作成すれば良いが、一部修正の必要があるので記載する。
Create Virtual Maschine -> System
の画面で Maschine を q35
, BOIS を OVMF(UEFI)
を選択する必要がある
Key | Value |
---|
Maschine | q35 |
BOIS | OVMF (UEFI) |
EFI Disk | checked |
EFI Storage | local-lvm |
SCSI Controller | VirtlO SCSI |
Qemu Agent | checked |

PCIe のアタッチ ¶
VM のハードウェアから Add
-> PCI Device
必要なものを選択するこの時下記のチェックつける今回の構成では Primary GPU
はチェックを入れない。これにチェックオンすると RTX2060 に画面が出力され PVE の Console で画面が確認できなくなる。
Key | Value |
---|
All Functions | checked |
ROM-Bar | checked |
PCI-Express | checked |

確認 ¶
設定ができていれば Hardware
画面で赤下線の箇所が同じように設定されているはずです。
