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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
architecture: 0.964
KVM: 0.945
semantic: 0.944
kernel: 0.939
device: 0.931
graphic: 0.928
user-level: 0.913
performance: 0.907
mistranslation: 0.892
VMM: 0.890
peripherals: 0.890
hypervisor: 0.889
debug: 0.879
PID: 0.874
files: 0.871
permissions: 0.869
network: 0.858
virtual: 0.857
risc-v: 0.852
x86: 0.842
socket: 0.815
assembly: 0.815
register: 0.805
ppc: 0.794
vnc: 0.787
TCG: 0.744
arm: 0.723
boot: 0.691
i386: 0.547
vfio passtrhough fails at 'No available IOMMU models' on Intel BDW-EP platform
Environment:
------------
Host OS (ia32/ia32e/IA64): ia32e
Guest OS (ia32/ia32e/IA64): ia32e
Guest OS Type (Linux/Windows): linux
kvm.git Commit: da3f7ca3
qemu.git Commit: 38a762fe
Host Kernel Version: 4.4.0-rc2
Hardware: BDW EP (Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz, Grantley-EP)
Bug description:
--------------------------
when create guest with vt-d assignment using vfio-pci driver, the guest can not be created.
Warning 'No available IOMMU models'
Reproduce steps:
----------------
1. bind device to vfio-pci driver
2. qemu-system-x86_64 -enable-kvm -m 512 -smp 2 -device vfio-pci,host=81:00.0 -net none -drive file=rhel7u2.qcow2,if=none,id=virtio-disk0 -device virtio-blk-pci,drive=virtio-disk0
Current result:
----------------
qemu-system-x86_64: -device vfio-pci,host=81:00.0: vfio: No available IOMMU models
qemu-system-x86_64: -device vfio-pci,host=81:00.0: vfio: failed to setup container for group 41
qemu-system-x86_64: -device vfio-pci,host=81:00.0: vfio: failed to get group 41
qemu-system-x86_64: -device vfio-pci,host=81:00.0: Device initialization failed
Expected result:
----------------
guest can be created
Basic root-causing log:
----------------------
You've somehow managed to not load the vfio_iommu_type1 module. The vfio module will request it when loading, if the module is not available when loading, such as from an initramfs that does not include the full set of vfio modules, it will need to be loaded later manually.
You're right. After I manually load vfio_iommu_type1, the error is gone.
|