Hi Alex, > MSI routing updates aren't currently handled by pci-assign or > vfio-pci (when using KVM acceleration), which means that trying to > set interrupt SMP affinity in the guest has no effect unless MSI is > completely disabled and re-enabled. This series fixes this for both > device assignment backends using similar schemes. We store the last > MSIMessage programmed to KVM and do updates to the MSI route when it > changes. pci-assign takes a little bit of refactoring to make this > happen cleanly. Thanks,
I am using the MSI affinity for assigned devices patch 1 to 4. I have setup the guest such that VCPU0 is pinned to PCPU1, VCPU1 is pinned to PCPU2, VCPU2 is pinned to PCPU3 and VCPU3 is pinned to PCPU4. I do this by taskset after the guest boots. I then start generating interrupts affined to VCPU3. I see all the interrupts directly delivered to VCPU 3. Now i do the same test but interrupt affined to VCPU 2. Although the interrupts are delivered to VCPU2 there are lot of "Rescheduling interrupts" in VCPU 3. I have checked the smp_affinity and it is updated to VCPU 2. Wanted to know your feedback on this usecase and what might be the impact. CPU0 CPU1 CPU2 CPU3 0: 211 0 0 0 IO-APIC-edge timer 4: 60940 0 0 0 IO-APIC-edge serial 8: 65 0 0 0 IO-APIC-edge rtc0 9: 0 0 0 0 IO-APIC-fasteoi acpi 40: 0 0 0 0 PCI-MSI-edge virtio1-config 41: 1910 0 0 0 PCI-MSI-edge virtio1-requests 42: 0 0 0 0 PCI-MSI-edge virtio0-config 43: 127 0 0 0 PCI-MSI-edge virtio0-input 44: 1 0 0 0 PCI-MSI-edge virtio0-output 45: 1 0 3377 11194 PCI-MSI-edge FPGA_DEVNMI: 0 0 0 0 Non-maskable interruptsLOC: 225880 231572 223670 223612 Local timer interruptsSPU: 0 0 0 0 Spurious interruptsPMI: 0 0 0 0 Performance monitoring interruptsIWI: 0 0 0 0 IRQ work interruptsRTR: 0 0 0 0 APIC ICR read retriesRES: 14 20 21 3398 Rescheduling interrupts-------> Many RES Interrtups!!!!!!CAL: 0 14 14 16 Function call interruptsTLB: 0 0 0 0 TLB shootdowns thanks,Krishna