ОБНОВИТЬ* Я нашел обходной путь; похоже, что проблема связана с количеством процессоров. Если я установлю -smp=3
в qemu могу создать 8 сетей. 9-е вызывает панику.
Я использую kvm / qemu в Ubuntu 18 с сетями virtio. До 3 виртуальных сетей нормально, но если я выберу 4 (или больше), я получу панику ядра. Я обновился до linux-5.6.7. Но если я вернусь к linux-3.16.82, я жестяная банка добавить больше сетей! (проверено с 6).
Паника возникает на раннем этапе запуска ядра, до вызова "/ init".
Я собираю ядро, поэтому, возможно, я пропустил новую конфигурацию. Я искал какие-то ограничения вокруг драйверов virtio, но ничего не нашел.
Кто-нибудь знает, что может вызвать это?
А что изменилось после linux-3.16.82 (linux-4.20.7 тоже не работает)?
След и команда приведены ниже.
Спасибо за подсказку, Ларс Экман
------------[ cut here ]------------
kernel BUG at /home/uablrek/tmp/linux/linux-5.6.7/arch/x86/kernel/apic/vector.c:172!
invalid opcode: 0000 [#1] SMP PTI
CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.6.7 #6
Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1ubuntu1 04/01/2014
RIP: 0010:apic_update_vector+0x99/0xaa
Code: 6b 10 48 c7 c0 20 71 01 00 4a 8b 0c ed 20 35 bc 81 48 89 c2 48 8d 34 e9 48 8b 14 16 48 85 d2 74 0b 48 81 fa 00 f0 ff ff 77 02 <0f> 0b 48 8d 14 e9 4c 89 24 02 5b 5d 41 5c 41 5d c3 55 53 48 89 fd
RSP: 0000:ffffc9000000fa88 EFLAGS: 00010087
RAX: 0000000000017120 RBX: ffff88803e007c40 RCX: ffff88803ed00000
RDX: ffff88803e813200 RSI: ffff88803ed00180 RDI: 0000000000000000
RBP: 0000000000000030 R08: 0000000000000000 R09: 0000000000000032
R10: 0000000000000000 R11: ffffffff81c3f8e0 R12: ffff88803d81cc00
R13: 0000000000000001 R14: ffffffff8205e3c0 R15: 00000000ffffffed
FS: 0000000000000000(0000) GS:ffff88803ec00000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000001c0a000 CR4: 00000000000006b0
Call Trace:
assign_vector_locked+0x9f/0xcd
x86_vector_activate+0x11b/0x1a8
__irq_domain_activate_irq+0x53/0x76
__irq_domain_activate_irq+0x3e/0x76
irq_domain_activate_irq+0x27/0x2d
__setup_irq+0x367/0x59f
? vring_map_single.constprop.32+0xe4/0xe4
request_threaded_irq+0x10c/0x13c
vp_find_vqs_msix+0x369/0x3aa
vp_find_vqs+0x3a/0x175
vp_modern_find_vqs+0x12/0x68
virtnet_probe+0x84f/0xbc9
? rdinit_setup+0x26/0x26
virtio_dev_probe+0x134/0x1ba
really_probe+0x142/0x2a7
device_driver_attach+0x36/0x4e
__driver_attach+0x94/0x9b
? device_driver_attach+0x4e/0x4e
bus_for_each_dev+0x6c/0x9e
? do_raw_spin_lock+0x2b/0x52
bus_add_driver+0xfe/0x1af
driver_register+0x94/0xc9
? veth_init+0xc/0xc
virtio_net_driver_init+0x64/0x93
do_one_initcall+0x71/0x15b
kernel_init_freeable+0x19d/0x200
? rest_init+0xa5/0xa5
kernel_init+0x5/0xf5
ret_from_fork+0x35/0x40
Modules linked in:
(no modules)
Команда, несколько отформатированная для отображения сетевых настроек;
22283 pts/8 Ssl+ 0:06 qemu-system-x86_64 -enable-kvm -kernel \
/home/uablrek/tmp/xcluster/workspace/xcluster/bzImage \
-drive file=/tmp/uablrek/xcluster/uablrek_xcluster1/hd-1.img,if=virtio -\
smp 2 -k sv -drive file=/tmp/uablrek/xcluster/uablrek_xcluster1/cdrom.iso,if=virtio,media=cdrom \
-m 1024 -monitor telnet::4001,server,nowait -nographic \
-netdev tap,id=net0,script=no,downscript=/tmp/rmtap,ifname=xcbr0_t1 -device virtio-net-pci,netdev=net0,mac=00:00:00:01:00:01 \
-netdev tap,id=net1,script=no,downscript=/tmp/rmtap,ifname=xcbr1_t1 -device virtio-net-pci,netdev=net1,mac=00:00:00:01:01:01 \
-netdev tap,id=net2,script=no,downscript=/tmp/rmtap,ifname=xcbr2_t1 -device virtio-net-pci,netdev=net2,mac=00:00:00:01:02:01 \
-netdev tap,id=net3,script=no,downscript=/tmp/rmtap,ifname=xcbr3_t1 -device virtio-net-pci,netdev=net3,mac=00:00:00:01:03:01 \
-object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0,max-bytes=1024,period=80000 -cpu qemu64,+sse4.2,+sse4.1,+ssse3 -append noapic root=/dev/vda rw init=/init