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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
graphic: 0.972
performance: 0.958
permissions: 0.955
debug: 0.951
semantic: 0.947
user-level: 0.946
assembly: 0.938
hypervisor: 0.937
register: 0.933
architecture: 0.931
virtual: 0.925
PID: 0.922
KVM: 0.920
arm: 0.919
device: 0.918
mistranslation: 0.918
kernel: 0.914
boot: 0.914
risc-v: 0.913
files: 0.910
x86: 0.896
vnc: 0.891
i386: 0.888
peripherals: 0.888
TCG: 0.886
ppc: 0.871
network: 0.868
socket: 0.865
VMM: 0.836
kvm_mem_ioeventfd_add: error adding ioeventfd: No space left on device
Latest QEMU master fails to run with too many MMIO devices specified.
After patch 3ac7d43a6fb [1] QEMU just prints an error message and exits.
> kvm_mem_ioeventfd_add: error adding ioeventfd: No space left on device
This is reproducible e.g. with the following setup:
qemu-3.1.50-dirty \
-machine pc-i440fx-2.7,accel=kvm \
-cpu host -m 4096 \
-smp 2,sockets=2,cores=1,threads=1 \
-drive file=freebsd_vm_1.qcow2,format=qcow2,if=none,id=bootdr \
-device ide-hd,drive=bootdr,bootindex=0 \
-device virtio-scsi-pci,id=vc0 \
-device virtio-scsi-pci,id=vc1 \
-device virtio-scsi-pci,id=vc2 \
-device virtio-scsi-pci,id=vc3 \
Running with just 3 Virtio-SCSI controllers seems to work fine, adding more than that causes the error above. Note that this is not Virtio-SCSI specific. I've also reproduced this without any Virtio devices whatsoever.
strace shows the following ioctl chain over and over:
145787 ioctl(11, KVM_UNREGISTER_COALESCED_MMIO, 0x7f60a4985410) = 0
145787 ioctl(11, KVM_UNREGISTER_COALESCED_MMIO, 0x7f60a4985410) = 0
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = 0
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
145787 ioctl(11, KVM_REGISTER_COALESCED_MMIO, 0x7f60a49853b0) = -1 ENOSPC (No space left on device)
Which suggests there's some kind of MMIO region leak.
[1]
commit 3ac7d43a6fbb5d4a3d01fc9a055c218030af3727
Author: Paolo Bonzini <email address hidden>
AuthorDate: Wed Nov 28 17:28:45 2018 +0100
Commit: Paolo Bonzini <email address hidden>
CommitDate: Fri Jan 11 13:57:24 2019 +0100
memory: update coalesced_range on transaction_commit
The bug is also reproducible with virtio-9p
-fsdev local,id=r,path=/,security_model=none -device virtio-9p-pci,fsdev=r,mount_tag=r
I bisected it to the same commit.
Hmm that's not surprising because coalesced ranges were completely broken before that commit. I'll take a look.
Does this patch from Jagannathan Raman fixes it?
https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg01397.html
> Does this patch from Jagannathan Raman fixes it?
> https://lists.gnu.org/archive/html/qemu-devel/2019-02/msg01397.html
It fixes my case. Thanks
That also fixes the case I'd hit
That patch has been included here:
https://git.qemu.org/?p=qemu.git;a=commitdiff;h=4f8260248c68e4599a5
Thus closing this ticket now.
|