Hide Forgot
Description of problem: Passthru a nic card, which only supports MSI, ping external box, modify smp_affinity and found IRQ only distributed to CPU0. Version-Release number of selected component (if applicable): The host kernel if kernel-3.10.0-23.el7.x86_64 The version of qemu-kvm is qemu-kvm-rhev-1.5.3-6.el7.x86_64 The guest kernel is kernel-2.6.18-371.el5PAE How reproducible: 100% Steps to Reproduce: 1. Boot a guest and passthru a 82579LM Gigabit nic card which only supports MSI. /usr/libexec/qemu-kvm -M pc -cpu SandyBridge -enable-kvm -m 2048 -smp 4,sockets=2,cores=2,threads=1 -name rhel5.10-32 -uuid 6afa5f93-2d4f-420f-81c6-e5fdddbd1c83 -drive file=/home/RHEL-Server-5-10.qcow2,if=none,id=drive-virtio-disk0,format=qcow2,serial=40c061dd-5d60-4fc5-865f-55db700407f0,cache=none,werror=stop,rerror=stop,aio=threads -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0 -device pci-assign,host=00:19.0 -vnc :1 -monitor stdio 2. Stop irqbalance on guest service irqbalance stop 3. On guest, flood ping remote box #ping -f 10.66.5.4 4. On remote box, flood ping guest #ping -f 10.66.110.242 5. Set smp_affinity to be 1 #echo 1 > /proc/irq/XX/smp_affinity Check the interrupts number of each vcpu. #cat /proc/interrupts 6. Set smp_affinity to be 2 #echo 2 > /proc/irq/XX/smp_affinity Check the interrupts number of each vcpu. #cat /proc/interrupts 7. Set smp_affinity to be 3 #echo 4 > /proc/irq/XX/smp_affinity Check the interrupts number of each vcpu. #cat /proc/interrupts Actual results: Step6 and Step7, only the IRQs are only distributed to CPU0 Expected results: Step6, the IRQs should be distributed to CPU1. Step7, the IRQs should be distributed to CPU2. Additional info:
I found Bug 919761 is similar with this problem. So set the component of this bug to be "qemu-kvm". If the component is not correct, please fix me. thanks.
This appears to be a duplicate of bug 1025477, the only difference is the RHEL5 guest. Moving to ON_QA for testing. Note that pci-assign is not supported on RHEL7, vfio-pci should be used for verification.
Verified as passed in a fresh installed rhel5.10 i686 guest with qemu-kvm-1.5.3-38.el7.x86_64. Actual Result: # cat /proc/interrupts CPU0 CPU1 CPU2 CPU3 0: 114865 12074 12061 12060 IO-APIC-edge timer 1: 118 16 2 14 IO-APIC-edge i8042 6: 0 0 3 1 IO-APIC-edge floppy 8: 0 0 0 1 IO-APIC-edge rtc 9: 0 0 0 0 IO-APIC-level acpi 12: 739 26 29 29 IO-APIC-edge i8042 15: 618 54 418 62 IO-APIC-edge ide1 177: 0 0 0 0 PCI-MSI-X virtio0-config 185: 6399 1555 0 0 PCI-MSI-X virtio0-requests 193: 215 0 0 143 PCI-MSI eth0 # cat /proc/irq/193/smp_affinity 00000001 # cat /proc/interrupts | grep -i 'cpu\|eth0' CPU0 CPU1 CPU2 CPU3 193: 14859 0 0 143 PCI-MSI eth0 # echo 2 > /proc/irq/193/smp_affinity # cat /proc/irq/193/smp_affinity 00000002 # cat /proc/interrupts | grep -i 'cpu\|eth0' CPU0 CPU1 CPU2 CPU3 193: 69089 26035 0 143 PCI-MSI eth0 # cat /proc/interrupts | grep -i 'cpu\|eth0' CPU0 CPU1 CPU2 CPU3 193: 69089 30103 0 143 PCI-MSI eth0 # echo 4 > /proc/irq/193/smp_affinity # cat /proc/irq/193/smp_affinity 00000004 # cat /proc/interrupts | grep -i 'cpu\|eth0' CPU0 CPU1 CPU2 CPU3 193: 215344 67496 40597 143 PCI-MSI eth0 # cat /proc/interrupts | grep -i 'cpu\|eth0' CPU0 CPU1 CPU2 CPU3 193: 215344 67496 46630 143 PCI-MSI eth0 So, this issue has been fixed.
This request was resolved in Red Hat Enterprise Linux 7.0. Contact your manager or support representative in case you have further questions about the request.