diff options
Diffstat (limited to 'results/classifier/118/review/1999')
| -rw-r--r-- | results/classifier/118/review/1999 | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/results/classifier/118/review/1999 b/results/classifier/118/review/1999 new file mode 100644 index 000000000..8a677618f --- /dev/null +++ b/results/classifier/118/review/1999 @@ -0,0 +1,111 @@ +mistranslation: 0.889 +debug: 0.873 +peripherals: 0.869 +risc-v: 0.866 +kernel: 0.854 +graphic: 0.854 +KVM: 0.848 +assembly: 0.844 +user-level: 0.830 +files: 0.823 +performance: 0.815 +arm: 0.808 +hypervisor: 0.807 +device: 0.807 +register: 0.806 +permissions: 0.806 +virtual: 0.805 +architecture: 0.805 +PID: 0.803 +semantic: 0.794 +TCG: 0.794 +VMM: 0.792 +network: 0.770 +boot: 0.764 +vnc: 0.753 +socket: 0.742 +i386: 0.690 +x86: 0.676 +ppc: 0.658 +-------------------- +debug: 0.994 +kernel: 0.920 +KVM: 0.852 +x86: 0.305 +virtual: 0.277 +TCG: 0.063 +files: 0.058 +hypervisor: 0.055 +register: 0.048 +i386: 0.045 +device: 0.042 +performance: 0.032 +PID: 0.032 +user-level: 0.031 +ppc: 0.030 +architecture: 0.026 +network: 0.021 +arm: 0.013 +peripherals: 0.012 +assembly: 0.009 +risc-v: 0.009 +semantic: 0.008 +boot: 0.008 +socket: 0.007 +VMM: 0.007 +permissions: 0.005 +graphic: 0.003 +vnc: 0.002 +mistranslation: 0.001 + +qemu got sigabrt when using vpp in guest and dpdk for qemu +Description of problem: +When set the interface up in vpp, the qemu process is crashed with signal sigabrt. + +After some debug, i have identified that the problem lies in the following function. + +```c +static int setup_routing_entry(struct kvm *kvm, + struct kvm_irq_routing_table *rt, + struct kvm_kernel_irq_routing_entry *e, + const struct kvm_irq_routing_entry *ue) +{ + struct kvm_kernel_irq_routing_entry *ei; + int r; + u32 gsi = array_index_nospec(ue->gsi, KVM_MAX_IRQ_ROUTES); + + /* + * Do not allow GSI to be mapped to the same irqchip more than once. + * Allow only one to one mapping between GSI and non-irqchip routing. + */ + hlist_for_each_entry(ei, &rt->map[gsi], link) + if (ei->type != KVM_IRQ_ROUTING_IRQCHIP || + ue->type != KVM_IRQ_ROUTING_IRQCHIP || + ue->u.irqchip.irqchip == ei->irqchip.irqchip) + return -EINVAL; + +``` + +I added some debug printk like following + +```c + hlist_for_each_entry(ei, &rt->map[gsi], link) + if (ei->type != KVM_IRQ_ROUTING_IRQCHIP || + ue->type != KVM_IRQ_ROUTING_IRQCHIP || + ue->u.irqchip.irqchip == ei->irqchip.irqchip){ + printk("ei->type: %u, KVM_IRQ_ROUTING_IRQCHIP: %u, ue->type: %u, ue->u.irqchip.irqchip: %u , ei->irqchip.irqchip: %u", ei->type, KVM_IRQ_ROUTING_IRQCHIP , ue->type, ue->u.irqchip.irqchip , ei->irqchip.irqchip); + return -EINVAL; + } +``` + +Then i got following in dmesg + +``` +[Thu Nov 23 09:29:10 2023] ei->type: 2, KVM_IRQ_ROUTING_IRQCHIP: 1, ue->type: 1, ue->u.irqchip.irqchip: 2 , ei->irqchip.irqchip: 4276097024 +[Thu Nov 23 09:29:10 2023] ei->type: 2, KVM_IRQ_ROUTING_IRQCHIP: 1, ue->type: 1, ue->u.irqchip.irqchip: 2 , ei->irqchip.irqchip: 4276097024 +``` +Steps to reproduce: +This is a kube-ovn + dpdk env, not easy to reproduce now.. +Additional information: +* I also file a bug on kernel.org: https://bugzilla.kernel.org/show_bug.cgi?id=218177 +* the libvirt xml file is also attached [instance.xml](/uploads/05b391046fdc1263fd7e63bcfab6f4fb/instance.xml) |