Hi, we had 3 problems left here. 1. IRQremapping can't work with x2apic_cluster mode. 2. apic_id > 255 can't receive devices interrupts. 3. windows crash when present IRQremapping capability to it.
I test with latest kernel v4.8-rc7 and find all of them are unsolved. Also in the qemu and kernel code bases, I couldn't find some patches to solve them. Will you fix these problems or leave them to communities? Thanks, -Chao On Tue, Aug 09, 2016 at 02:51:16PM +0200, Radim Krčmář wrote: >2016-08-09 16:19+0800, Chao Gao: >> On Tue, Aug 09, 2016 at 02:18:15PM +0800, Peter Xu wrote: >>>I think the problem is with x2apic. Currently, x2apic is enabled in >>>vIOMMU when kernel irqchip is used. This is problematic, since >>>actually we are throughing away dest_id[31:8] without Radim's patches, >>>meanwhile I see that by default x2apic is using cluster mode. >>> >>>In cluster mode, 8 bits will possibly not suffice (I think the reason >>>why >17 vcpus will bring trouble is that each cluster has 16 vcpus, >>>we'll have trouble if we have more than one cluster). >>> >>>To temporarily solve your issue, you should not only need "-global >>>ioapic.version=0x20" in QEMU command line, but also add "x2apic_phys" >>>to you guest kernel boot parameter, to force guest boot with x2apic >>>physical mode (not cluster mode). Though this can only work for <255 >>>vcpus. IMHO we may still need to wait for Radim's patches to test >255 >>>case. >> >> ok, after adding "x2apic_phys" to guest kernel boot parameter, I >> boot up a 288(yes, 288) vcpus guest successfully with command >> qemu-system-x86_64 -boot c -m 4096 -sdl --enable-kvm \ >> -M kernel-irqchip=split -bios bios.bin -smp cpus=288 -hda vdisk.img \ >> -device intel-iommu,intremap=on -machine q35 >> Also, I can see interrupts on those cpu with inital apicid>255 from >> /proc/cpuinfo and /proc/interrupts. > >Great, thanks for testing! >Only IPIs will be correctly delivered to apic_id > 255 without few more >patches on the QEMU side, though. >